第三方整合---微信支付整合與使用
先來一波微信支付的流程圖
商戶系統和微信支付系統主要互動說明:
步驟1:使用者在商戶APP中選擇商品,提交訂單,選擇微信支付。
步驟2:商戶後臺收到使用者支付單,呼叫微信支付統一下單介面。
步驟3:統一下單介面返回正常的prepay_id,再按簽名規範重新生成簽名後,將資料傳輸給APP。參與簽名的欄位名為appid,partnerid,prepayid,noncestr,timestamp,package。注意:package的值格式為Sign=WXPay
步驟4:商戶APP調起微信支付。
步驟5:商戶後臺接收支付通知。
步驟6:商戶後臺查詢支付結果。
下面開始羅列步驟實現C端的微信支付功能:
1.先去微信官網上申請微信支付所需要的各種APPID等,申請的時候可能需要你的包名,與簽名信息等,獲取簽名信息時,可能會踩坑。(一定要保證你的包名與正式版釋出一致,坑點)。
3.匯入依賴: import 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' ;
4.加上許可權:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BROADCAST_STICKY" />
<uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
5.如果要是有混淆,要將之前的舊包名的混淆改成如下:
keep class com.tencent.mm.opensdk.** {
*;
}keep class com.tencent.wxop.** {
*;
}
-keep class com.tencent.mm.sdk.** {
*;
}
6.請求支付前需要
商戶APP工程中引入微信JAR包,呼叫API前,需要先向微信註冊您的APPID,程式碼如下:
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 將該app註冊到微信
msgApi.registerApp("wxd930ea5d5a258f4f"); //填自己的appid.
7.吊起支付:
IWXAPI api;
PayReq request = new PayReq();
request.appId = "wxd930ea5d5a258f4f";
request.partnerId = "1900000109";
request.prepayId= "1101000000140415649af9fc314aa427",;
request.packageValue = "Sign=WXPay";
request.nonceStr= "1101000000140429eb40476f8896f4c9";
request.timeStamp= "1398746574";
request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
api.sendReq(request);
8.回撥方法在Demo 的WXPayEntryActivity類中(這個類路徑必須為你的包名+wxapi,所以把他帶包整個粘過來就好了,就像我盜的圖一樣)。
9. 在WXPayEntryActivity的onResp()裡接收支付結果的返回狀態:
請大家愉快的開始愉快的敲程式碼吧!