Android 微信支付集成的流程

本文详细介绍如何在Android应用中集成微信授权登录和支付功能,包括导入依赖、配置keystore、实现工具类、创建WXPayEntryActivity及回调处理。

首先微信授权登录和支付分为客户端(通过微信官方平台)集成和原生集成
原生集成:需要跟后台进行对接
客户端集成:是自己到微信官方平台去操作即可 跟咱们友盟分享登录一样

以下是授权登录和支付
1:导入依赖:

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

2:keystore文件放到app目录下
3:在app的build.gradle 中Android 代码块加入keystore文件配置

signingConfigs {
    debug {//这个地方可以写成 release
    //keystore的文件名字
        storeFile file('movie.keystore')
        keyAlias " 公司后台给的别名"
        storePassword "123456"
        keyPassword "123456"
    }
}

4.微信的工具类:

public class WXUtils {
    /**
     * APP_ID 替换为你的应用从官方网站申请到的合法appID
     */
    public static String APP_ID = "wx4c96b6b8da494224" +
            "";

    public static IWXAPI reg(Context context) {
        if (context != null) {
            //AppConst.WEIXIN.APP_ID是指你应用在微信开放平台上的AppID,记得替换。
            IWXAPI wxapi = WXAPIFactory.createWXAPI(context, APP_ID, true);
            //注册到微信
            wxapi.registerApp(APP_ID);
            return wxapi;
        } else {
            return null;
        }
    }

    //判断是否安装过微信
    public static boolean success(Context context) {
        if (WXUtils.reg(context).isWXAppInstalled()) {
            return true;
        } else {
            return false;
        }
    }
}

5:在项目包下新建文件夹名字必须是以下名字
wxapi下新建 WXEntryActivity 以下是代码:

public class WXPayEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {
    private IWXAPI iwxapi;
    private static String APP_ID = "wx4c96b6b8da494224";
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        // 隐藏状态栏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //接收到分享以及登录的intent传递handleIntent方法,处理结果
        iwxapi = WXAPIFactory.createWXAPI(this, APP_ID, false);
        iwxapi.handleIntent(getIntent(), this);

    }


    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp baseResp) {
        if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
            switch (baseResp.errCode) {
                case BaseResp.ErrCode.ERR_OK:
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(WXPayEntryActivity.this, "成功", Toast.LENGTH_SHORT).show();
                            Log.e("dj", "支付成功");
                            WXPayEntryActivity.this.finish();
                        }
                    });
                    break;
                case BaseResp.ErrCode.ERR_USER_CANCEL:
                    Toast.makeText(WXPayEntryActivity.this, "取消支付", Toast.LENGTH_SHORT).show();
                    Log.e("dj", "用户取消支付");
                    WXPayEntryActivity.this.finish();
                    break;

                default:
                    break;
            }
        }
    }
}

支付成功的回调:

				PayReq req = new PayReq();
                req.appId = bean.getAppId();
                req.nonceStr = bean.getNonceStr();
                req.partnerId = bean.getPartnerId();
                req.prepayId = bean.getPrepayId();
                req.sign = bean.getSign();
                req.timeStamp = bean.getTimeStamp();
                req.packageValue = bean.getPackageValue();
                //去调微信
                WXUtils.reg(this).sendReq(req);

支付注意页面逻辑
这里面一定要分析公司给的接口文档 跟后台协商好
1:首先要去下订单去获取订单账号
2:通过订单去支付
3:在支付成功的接口里面去回调微信
这个方法是MVP成功的回调

微信支付要注意的几个点:首先是WXUtils 和WXPayEntryActivity 的APP_ID 要搞对,包名要和对,清单文件的注册 ,android:exported="true"表示允许跳转到第三方,提高安全性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值