現(xiàn)在微信已經(jīng)更新sdk
必須
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
以下這是一些配置
開發(fā)前的準(zhǔn)備
安卓sdk下載
https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
現(xiàn)在微信已經(jīng)改了 androidStudio 已經(jīng)用 gradle更新
compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+'
微信開放平臺(tái)
https://open.weixin.qq.com/
微信android開發(fā)手冊(cè)
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
首先要在微信開放平臺(tái)申請(qǐng)你的AppID
注意:
包名正確(重要)
簽名正確(重要)
微信提供的簽名生成工具
把包名添加上去就可以獲取簽名
注意:把要獲取簽名的應(yīng)用安裝在手機(jī)上
https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android2.apk
下載開發(fā)工具包
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319167&lang=zh_CN
開始接入微信支付
1.在項(xiàng)目中引入微信開發(fā)包 (現(xiàn)在已改成gradle引用)
2.在AndroidManifest.xml中添加相應(yīng)的權(quán)限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
3.在MainActivity中注冊(cè)到為微信
api= WXAPIFactory.createWXAPI(this,ConfigUtil.Wechat_Appid,true);
api.registerApp(ConfigUtil.Wechat_Appid);
4.在點(diǎn)擊的時(shí)候向微信發(fā)送請(qǐng)求
微信官方給的sdk是在客戶端加簽 是為了測(cè)試
真實(shí)開發(fā)中盡量不要在客戶端加簽
一個(gè)神奇的網(wǎng)址(現(xiàn)在沒有了)
http://wxpay.weixin.qq.com/pub_v2/app/app_pay.php?plat=Android
case R.id.wechat_pay:
PayReq request = new PayReq();
request.appId = ConfigUtil.Wechat_Appid;
request.partnerId = "1327244301";
request.prepayId= "wx2016092009564343e737275f0904349502";
request.packageValue = "Sign=WXPay";
request.nonceStr= "70vhVHnJj6ph7mf9";
request.timeStamp= "1474336603";
request.sign= "815BC8D5508FD90F7A978856B2174E21";
api.sendReq(request);
break;
5.配置回調(diào)
[1]在微信管理后臺(tái)中配置的包名下新建wxapi包
[2]在wxapi包下新建WXPayEntryActivity的類
[3]WXPayEntryActivity類實(shí)現(xiàn)IWXAPIEventHandler繼承Activity
[4]在AndroidManifest.xml中注冊(cè)activity
<activity
android:name=".wxapi.WXPayEntryActivity"
android:exported="true"
android:launchMode="singleTop"/>
[5]在WXPayEntryActivity類中onCreate中注冊(cè)微信
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
api = WXAPIFactory.createWXAPI(this, ConfigUtil.Wechat_Appid);
api.handleIntent(getIntent(), this);
}
[6]實(shí)現(xiàn)onResp
public void onResp(BaseResp baseResp) {
Log.d(TAG, "onPayFinish, errCode = " + baseResp.errCode);
if (baseResp.getType() == ConstantsAPI.COMMAND_PAY_BY_WX) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("標(biāo)題");
builder.setMessage(String.valueOf(baseResp.errCode));
builder.show();
}
}
baseResp.errCode是返回的錯(cuò)誤碼
注意:WXPayEntryActivity類必須叫這個(gè)名
必須在wxapi包下中
微信調(diào)不起來:
檢查簽名是否正確
包名是否與微信后臺(tái)配置的一致
檢查是否添加權(quán)限
檢查代碼 是否在初始化時(shí)注冊(cè)微信 是否正確發(fā)送請(qǐng)求
微信支付調(diào)用起來沒有回調(diào):
查看包名是否正確
類名是否正確
在AndroidManifest.xml是否注冊(cè)activity
解決方法:
實(shí)在掉不起來微信(包名正確簽名正確)就重新安裝微信客戶端 和重新安裝 測(cè)試項(xiàng)目