Android微信拉起支付

官网

导入包:

    //微信库
    implementation 'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:+'

导入微信回调:

package com.example.myaries.widget.wxapi;


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

import com.example.myaries.constant.ProjectConfig;
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;

public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler {

    private static final String TAG = "MicroMsg.SDKSample.WXPayEntryActivity";

    private IWXAPI api;

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

        api = WXAPIFactory.createWXAPI(this, ProjectConfig.APP_ID);
        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) {
        Log.i("回调:BaseReq", "进来了" + req.toString());
    }

    @Override
    public void onResp(BaseResp resp) {
        Log.i("回调:BaseResp", "进来了" + resp.toString());
        switch (resp.errCode) {
            case 0:
                //成功
                break;
            case -1:
                //错误 可能的原因:签名错误、未注册APPID、项目设置APPID不正确、注册的APPID与设置的不匹配、其他异常等。
                break;
            case -2:
                //用户取消
                break;
        }


    }
}

注意事项:

导入微信回调的类所在包名必须是wxapi,切必须要是在根目录,否则接收不到回调

AndroidManifest里注册回调:

      

拉起支付:

           IWXAPI iwxapi = WXAPIFactory.createWXAPI(this, ProjectConfig.APP_ID);
                PayReq request = new PayReq();
                //Appid必须要传
                request.appId = ProjectConfig.APP_ID;
                //固定值,必须要传
                request.packageValue = "Sign=WXPay";
                //后台返回的时间戳,必须要传
                request.timeStamp = "1572451901";
                //后台返回的,必须要传
                request.prepayId = "wx30161240133038c16ae089b71619872000";
                //后台返回的,必须要传
                request.partnerId = "1560827871";
                //后台返回的,必须要传
                request.nonceStr="6gAJjJ0xCcZlvGWw";
                //后台返回的,必须要传
                request.sign = "5E26280CEFA1F72087A0DE32F0A95563";
                //拉起支付
                iwxapi.sendReq(request);

注意事项:

微信开发签名一般是由配置人员来配置的,如果签名改变以后微信客户端会缓存之前的签名,所以更改签名后要清空微信的缓存和数据,新签名才能生效(不生效会拉不起支付,错误码返回-1)

你可能感兴趣的:(AndroidStudio)