1. 程式人生 > >Android整合微信支付SDK

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

以上就是我此次整合遇到的問題,關鍵點應該都有,如果有遺漏,請大家指正。