微信支付文档
实现逻辑,其实大部分步骤后台已经做完了,app端只需要调起支付就OK了。
引入微信Sdk
/**微信支付*/
implementation 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
AndroidManifest.java文件中添加相应的权限和是配置
//支付回调
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="微信开放平台获取AppId" />
</intent-filter>
</activity>
//微信分享回调
<activity
android:name=".wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTop">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="微信开放平台获取AppId"/>
</intent-filter>
</activity>
获取支付调起的必须参数
为了安全这些参数都需要后台返回
/**
* 微信支付
*
* @param payBean
*/
public static void wxPay(final Activity activity, final WXPayResponse.DataResult payBean) {
if (!isWeChatAppInstalled(activity))return;
Observable.empty().subscribeOn(AndroidSchedulers.mainThread()).doOnCompleted(new Action0() {
@Override
public void call() {
/*注册到微信*/
IWXAPI api = WXAPIFactory.createWXAPI(activity, null);
/*将该app注册到微信*/
api.registerApp(payBean.getAppid());
PayReq request = new PayReq();
/*appId*/
request.appId = payBean.getAppid();
/*应用ID*/
request.partnerId = payBean.getPartnerid();
/*预支付交易会话ID*/
request.prepayId= payBean.getPrepayid();
/*暂填写固定值Sign=WXPay*/
request.packageValue = payBean.getPackage();
/*随机字符串*/
request.nonceStr= payBean.getNoncestr();
/*时间戳*/
request.timeStamp= payBean.getTimestamp();
/*签名*/
request.sign= payBean.getSign();
api.sendReq(request);
LogUtils.LOG_V("------pay request------"+new Gson().toJson(request));
}
}).subscribe();
}