搜索到這篇文章的想必都是在調(diào)試微信支付,
身為一個做過兩次app 微信支付的人員,我遇到的問題有服務(wù)的,客戶端的塔沃,
ok 接下來慢慢介紹問題拷邢,當(dāng)然了文章最底部也有開發(fā)前準(zhǔn)備
![L{D42G]TUR~UTPZ}56XX`_C.gif](http://upload-images.jianshu.io/upload_images/2516867-90fcc9e28f650877.gif?imageMogr2/auto-orient/strip)
**問題 -1(微信支付竟然所有的錯誤都是-1) **
-
后臺的問題:調(diào)用微信統(tǒng)一下單API邑滨、以及返回數(shù)據(jù)給前端時候的sign問題 參數(shù)二次簽名的時候 必須是小寫,小寫,小寫
(1).調(diào)用統(tǒng)一下單時候的商戶key 微信商戶平臺(pay.weixin.qq.com)-->賬戶設(shè)置-->API安全-->密鑰設(shè)置
(2).調(diào)用統(tǒng)一下單API后叶眉,按照微信文檔中的業(yè)務(wù)流程慷妙,下一步該是:
統(tǒng)一下單接口返回正常的prepay_id榜旦,
再按簽名規(guī)范重新生成簽名后,將數(shù)據(jù)傳輸給APP景殷。
參與簽名的字段名為appId溅呢,partnerId
,prepayId猿挚,nonceStr咐旧,timeStamp,package绩蜻。
- 從這開始就是app的注意事項(xiàng)檢查appid 是否注冊
(1).配置文件xml注冊
<!-- wxpay-->
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"
>
</activity>
<receiver android:name=".wxapi.AppRegister"
android:permission="com.tencent.mm.plugin.permission.SEND">
<intent-filter>
<action android:name="com.tencent.mm.plugin.openapi.Intent.ACTION_REFRESH_WXAPP" />
</intent-filter>
</receiver>
(2).AppRegister
public class AppRegister extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
final IWXAPI api = WXAPIFactory.createWXAPI(context, null);
api.registerApp(Constants.APP_ID);
}
}
(3).調(diào)起微信支付時候也需要注冊 應(yīng)該是雙重保障吧
msgApi = WXAPIFactory.createWXAPI(getActivity(),null);
msgApi.registerApp(Constants.APP_ID);
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
/** 檢測是否有微信軟件 */
if (isWXAppInstalledAndSupported(msgApi)) {
PayReq request = new PayReq();
request.appId = vo.getAppid();
request.partnerId = vo.getPartnerid();
request.prepayId = vo.getPrepayid();
request.nonceStr =vo.getNoncestr();
request.timeStamp = vo.getTimestamp();
request.packageValue = "Sign=WXPay";
request.sign =vo.getSign();
msgApi.sendReq(request);
} else {
MessageBox.toast(getActivity(),"親铣墨,您還沒有安裝微信");
}
}
});
- 檢查你的應(yīng)用簽名是否正確 具體的做法就是下載官方的工具 將你的app 正常打包運(yùn)行到手機(jī)上 檢測一下下邊兩張照片里標(biāo)注的 值是否正確
其實(shí)你會清楚的發(fā)現(xiàn)這個值和正常打包之后的md5類似 只不過就是改成小寫去掉冒號
MD5: 92:5A:6E:58:CF:45:B5:2C:7B:23:BB:75:96:E3:9D:C0
- 檢查你微信回調(diào)的WXPayEntryActivity 是不是在你根目錄+wxapi的包下 根目錄-》就是你配置文件里的package 一定要匹配 否則不走你的回調(diào) 還有就是回調(diào)的activity必需命名為WXPayEntryActivity
開發(fā)前的準(zhǔn)備
安卓sdk下載
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
微信開放平臺
https://open.weixin.qq.com/
微信android開發(fā)手冊
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317784&token=&lang=zh_CN
微信app開發(fā)步驟
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=8_5