移动端Android微信支付功能整合

一 (准备1)公司官方注册微信开放平台账号 https://open.weixin.qq.com/

开发者第一点注意公司是否已申请微信开放平台账号( 微信目前只支持公司账号申请支付,暂不支持个人开发者支付申请),没有则协调沟通申请即可.

二 (准备2)登录[微信开放平台]创建移动应用

登录账号后,点击上面菜单栏 [管理中心] – [移动应用]–[创建应用],创建应用三个步骤按提示填入(审核后这部分资料可修改),微信会在7天内完成审核.记录好AppIDAppSecret后面使用即可.

完善创建应用时候的配置,包名签名之类的,找相应移动开发要即可

三 微信支付接入代码

1.在app的build.gradle文件中,添加如下依赖:

dependencies {

api'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:5.3.1' 

}

2.在注册清单AndroidManifest.xml中添加权限与WXPayEntryActivity,AppRegister

3.调起原生微信支付:把服务器返回的数据,字典封装并提交给微信即可mWxApi.sendReq(req);(此处服务端返回的数据交给接口开发大佬返回即可,取数据的方式仅供参考,也可以自己写)

try {

            IWXAPI api = WXAPIFactory.createWXAPI(webLoader.getPageControl().getContext(), Constants.APP_ID);

            boolean isPaySupported = api.getWXAppSupportAPI() >= Build.PAY_SUPPORTED_SDK_INT;

            if (!isPaySupported) {

               Log.i("kkk", "该手机不支持微信支付!");

            } else {

                PayReq req = new PayReq();

                req.appId = Constants.APP_ID;

                req.partnerId = param.getString("partnerid");

                req.prepayId = param.getString("prepayid");

                req.nonceStr = param.getString("noncestr");

                req.timeStamp = param.getString("timestamp");

                req.packageValue = param.getString("package");

                req.sign = param.getString("sign");

                req.extData = "app data"; // optional

                // 在支付之前,如果应用没有注册到微信,应该先调用IWXMsg.registerApp将应用注册到微信

                api.sendReq(req);

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

4.支付成功:在WXPayEntryActivity页面接收微信支付结果回调,做自己相应需求即可

@Override

public void onResp(BaseResp baseResp) {

if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {

switch (baseResp.errCode) {

case 0:

SX_EJSAPI.call.applySuccess();

finish();

break;

case -1:

SX_EJSAPI.call.applyFail("支付取消");

finish();

break;

case -2:

SX_EJSAPI.call.applyFail("请求失败");

finish();

break;

}

finish();

}

}

四 支付调用不起来的排查点

1.检查微信开放平台上的APP_ID与代码一致

2.检查安卓包名,签名配置或者ios Bundle ID配置与代码要保持一致

3.一般正常检查上面的2个步骤,即可成功调起微信支付,如果errCode还是返回-1,找服务端接口开发大佬检查接口返回的数据是否正确

4.上面3步还检查都没问题,微信支付errCode还是返回-1,可以考虑清除微信的缓存尝试(个人理解微信把包名和签名存储起来了,后面不更新,导致切换签名或者包名后,不能正常覆盖,而最终不能调起支付)

五 相关参考链接

https://blog.csdn.net/qxing123456789/article/details/82461472#__150

https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/Android.html

https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5

如有不到位之处,大家可以留言

你可能感兴趣的:(移动端Android微信支付功能整合)