我的微信支付

创建应用 什么什么的不说了

第一步导入伊兰

    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

第二步  权限

  <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

第三步  添加辅助类

package com.example.ypc.wzxtext4;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.tencent.mm.opensdk.constants.ConstantsAPI;
import com.tencent.mm.opensdk.modelbase.BaseReq;
import com.tencent.mm.opensdk.modelbase.BaseResp;
import com.tencent.mm.opensdk.openapi.IWXAPI;
import com.tencent.mm.opensdk.openapi.IWXAPIEventHandler;
import com.tencent.mm.opensdk.openapi.WXAPIFactory;

/**
 * 4.处理支付结果
 */
public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

    private static final String TAG = "WXPayEntryActivity";

    private IWXAPI api;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pay_result);

        api = WXAPIFactory.createWXAPI(this,"");
        api.handleIntent(getIntent(), this);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
        api.handleIntent(intent, this);
    }

    @Override
    public void onReq(BaseReq req) {
    };

    @Override
    public void onResp(BaseResp resp) {
        Log.d(TAG, "onPayFinish, errCode = " + resp.errCode);

        if (resp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            int errCode = resp.errCode;
            if (errCode == 0){
                 TODO: 2017/11/10
                //成功
            }else if (errCode == -1){
                //ToastUtils.showLong("支付失败");
            }else if (errCode == -2){
                //ToastUtils.showLong("支付已被取消");
            }
        }
    }
}

第四步 清单文件声明

<activity
        android:name=".WXPayEntryActivity"
        android:exported="true"
        android:launchMode="singleTop"/>

第五步

private String mUrl = "网络请求地址";
    private String mToken = "服务器给的token";
    private RequestQueue mQueue;//Volley

第六部  请求  需要重新二个方法

 //1.提交参数到服务
                mQueue = Volley.newRequestQueue(this);
                StringRequest request = new StringRequest(Request.Method.POST, mUrl, this, this) {
                    @Override
                    protected Map<String, String> getParams() throws AuthFailureError {
                        HashMap<String, String> map = new HashMap<>();
                /*@Path("payType") String payType, @Field("amount") String amount, @Field("token") String token,
                @Field("version") String version, @Field("os") String os*/
                        map.put("amount", "1.0");
                        map.put("token", mToken);
                        map.put("version", "3.1.3");
                        map.put("os", "android");

                        return map;
                    }
                };
                mQueue.add(request);
                break;

第七步  在成功方法里面 解析

 @Override
    public void onResponse(String s) {
        //2.解析数据
        Gson gson = new Gson();
        WXBean bean = gson.fromJson(s, WXBean.class);

        //3.调用微信的sdk
        callSDK(bean);
    }

第八步

private void callSDK(WXBean data) {
        //先注册
        String appid = data.getResult().getWx().getAppid();
        IWXAPI api = WXAPIFactory.createWXAPI(this, null);
        api.registerApp(appid);

        //调sdk
        PayReq req = new PayReq();
        req.appId = appid;
        req.partnerId = data.getResult().getWx().getPartnerid();
        req.prepayId = data.getResult().getWx().getPrepayid();//预支付订单号:核心参数,该参数是微信服务器生成,相当于订单号
        req.nonceStr = data.getResult().getWx().getNoncestr();
        req.timeStamp = data.getResult().getWx().getTimestamp();
        req.packageValue = data.getResult().getWx().getPackageX();
        req.sign = data.getResult().getWx().getSign();
        // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信
        //3.调用微信支付sdk支付方法
        api.sendReq(req);

        //4.处理支付结果
    }

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值