Android集成微信支付
項目中集成第三方支付的功能,基本是我們app中經常用到的功能。今天先給大家講一下微信支付的集成過程,重點只說一下代碼部分。
首先,你要到微信開發者平臺註冊賬號,並創建你的應用,通過包名和簽名拿到AppId和申請支付功能。
![申請應用支付功能](https://img-blog.csdn.net/20160705154140753)
- 下面就是具體的代碼部分
ps:微信支付並不需要再清單文件中添加什麼配置信息,只需代碼正確就可以。
初始化:先在頁面初始化的地方,註冊微信支付
api = WXAPIFactory.createWXAPI(this, null);
// 將該app註冊到微信
api.registerApp("您的appId");
在需要支付的地方,調用微信支付的方法:
IWXAPI api;
PayReq request = new PayReq();
request.appId = "您的appId";
request.partnerId = "1900000109";
request.prepayId= "1101000000140415649af9fc314aa427",;
request.packageValue = "Sign=WXPay";
request.nonceStr= "1101000000140429eb40476f8896f4c9";
request.timeStamp= "1398746574";
request.sign= "7FFECB600D7157C5AA49810D2D8F28BC2811827B";
api.sendReq(req);
appI 就是你平臺註冊應用申請的id,寫死就可以
partnerid 商戶號,服務器給你返回,或者你寫死也可以
prepayid 預支付交易會話ID 也就是你的訂單信息,這個肯定你們服務器返回的,沒的商量
packageValue 擴展字段,可以按照文檔上寫死
noncestr 隨機字段 服務器返回 你要自己寫那就按照文檔上的算法自己來寫吧
timeStamp 時間戳 也是服務器給你返回
sign 簽名 服務器返回 自己寫有點麻煩
好了到這裏,只要你的這些參數全部正確,你就可以正確的調起微信支付!
- 支付是否成功,肯定要給用戶反饋一個結果,那就要根據微信給你的回調,來反饋給用戶結果。
在你項目全包名下,新建wxapi包,然後WXPayEntryActivity類(包名或類名不一致會造成無法回調);在類中實現onResp函數。
@Override
public void onResp(BaseResp resp) {
switch (resp.errCode) {
case 0:
Toast.makeText(getApplicationContext(), "支付成功", Toast.LENGTH_LONG).show();
break;
case -1:
Toast.makeText(getApplicationContext(), "支付失敗", Toast.LENGTH_LONG).show();
break;
case -2:
Toast.makeText(getApplicationContext(), "取消訂單", Toast.LENGTH_LONG).show();
break;
default:
break;
}
}
一定不要忘記,將activity註冊到清單文件中
<!-- 微信分享回調 -->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
到這裏就是微信文檔的全部了,但是,坑就在這裏了,到這還沒有完,文檔標註我們還需要註冊廣播接收者,來接受微信的回調,在清單文件中,註冊一下,但清單文件中如果添加了,項目可能會崩潰,所有不要註冊
<!-- 支付回調接收者 -->
<receiver android:name=".AppRegister" >
<intent-filter>
<action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
</intent-filter>
</receiver>
OK!到這,基本就是微信支付的全部集成。
PS:集成完測試的時候,記得一定要打包以後測試支付功能,不進行打包的話,微信支付,還有微信分享都會出現調不出微信的情況!而且註冊時候的簽名,也是需要你打包以後,獲取的應用簽名!