Android整合微信支付SDK
最近接了整合android微信支付SDK的需求,感覺跟其它的SDK的接入並無太大區別,只不過有一些坑可能需要踩,前人已經踩的差不多了,本人就少踩了一些,總結一下最新的微信支付SDK的整合過程與注意事項。
1. 去官網上申請微信支付所需要的各種APPID等,申請的時候可能需要你的包名,與簽名信息等,獲取簽名信息時,可能會踩坑,(一定要保證生產環境可以支付,要不然等到發版時,發現生產環境不能用,重新提交申請,得等1,2個工作日,老闆就得拿你說事兒了),可以參考我的另一篇文章:
http://blog.csdn.net/yukimineryuu/article/details/53041552 《微信授權登入錯誤記appid》,因為之前申請過微信授權登入時用的APPID,微信支付時,用的同一賬號,因此,appid用以前申請的就可以了。
2. 下載微信官方android支付DEMO: https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=11_1
3. 僅參考它的demo程式碼(本人試著運行了下,提示“伺服器請求錯誤”,就再沒鼓搗它了)
4. 引入libs包。依據官方文件,已不再維護eclipse的jar包版本的sdk了,需要大家儘快切換到Android Studio來(AS太好用了),引入的方式是使用jcenter.
如下:
dependencies { compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' }同步完成即可。
5. 由於微信SDK改成通過Gradle的方式釋出到jcenter,包名做了相應修改,從原來的com.tencent.mm.sdk修改為com.tencent.mm.opensdk,需要開發者修改對應的import語句
6. 如果要是有混淆,要將之前的舊包名的混淆改成如下:
-keep class com.tencent.mm.opensdk.** {
*;
}
-keep class com.tencent.wxop.** {
*;
}
-keep class com.tencent.mm.sdk.** {
*;
}
7. 註冊微信:我是在Application裡註冊一次,保證初始化的時候註冊了就好(官網盜圖):
8. 從你們的java後臺,獲取到資料(必須的是以下7條,其中appId可以自己在程式碼裡寫死),添到下面大紅框裡就可以了,最後一個欄位extData是optional(非必選),根據業務自行選擇。
9. 在你的包名下(即下圖紅框就是包名),
)
再建一層目錄,必須叫:wxapi, 這個目錄下的檔案必須叫:WXPayEntryActivity
如何確認是否建立正確: 開啟你的WXPayEntryActivity,看到程式碼裡第一行的package是否正確,如下圖所示:
10, 然後在AndroidManifest.xml裡宣告一下,有人說必須這樣宣告,但微信支付給的官網demo裡是簡化的,不知道簡化的調起WXPayEntryActivity是否有效,我沒有驗證,反正用其他開發者提供的下面的宣告沒有問題:
<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="your AppId"/> </intent-filter> </activity>11 , 在WXPayEntryActivity裡接收支付結果的返回狀態:
因為WXPayEntryActivity還是一個activity,他是有介面的,所以當我得到返回碼的時候把它finish()掉了,然後通過EventBus傳送狀態碼給JAVA後臺(當然, 這裡是用的介面)
12 ,其它的配置,可以參考微信的DEMO程式碼,比如許可權申請,activty在清單檔案裡的宣告等。
本文只列舉出了注意點。供大家參考,免得以後再踩坑。
13, 關於支付狀態碼 -1 :
有各種情況,首先保證包名與線上簽名信息一致,再就是執行的時候,使用
gradle clean assembleRelease打出apk包,再簽名執行。不要直接用滑鼠點選IDE的RUN
以上就是我此次整合遇到的問題,關鍵點應該都有,如果有遺漏,請大家指正。