最新微信app支付開發填坑篇

之前開發過高德地圖的,百度地圖的,人家官網的資料,開發文檔,官方論壇,應有盡有,特別詳細。微信支付相對支付寶支付,操作繁瑣了很多,而且有些文檔上的說明太過專業,導致問題多多。

首先他們官網上面只有eclipse的案列說明,沒有Android studio版本的,其實也沒什麼太大的區別,注意一點就行了

在調用微信支付之前,首先要申請微信開放平臺帳號,微信商戶平臺帳號,還有在微信開放平臺添加移動應用等等操作都要先做到位,不然是沒法支付的

1、首先你要申請微信開放平臺,然後完成後,進入開放平臺的管理中心,創建移動應用,應用審覈成功後會直接擁有微信分享、收藏等功能,而app支付需要另外再申請

這裏寫圖片描述

然後進行微信支付的申請,申請需要填寫資料進行審覈,而且還需要微信商戶帳號,關聯商戶帳號,獲得商戶key(商戶key在後面生成sign值時需要用到)

2、服務器那邊應該要操作的是,首先調用微信統一下單接口,需要用到多個參數(包括商戶key)進行調用接口,成功後會獲得應該返回給我們的參數,這一次返回值當中會有sign值,但是該sign值不需要用到,也不需要返回給我們app端,這裏需要特別注意的一點是,後臺服務需要二次簽名,就是把調用統一下單接口返回的值(主要六個參數appid,partnerid,prepayid,package,noncestr,timestamp),進行二次簽名得到sign,該sign就是app端需要用到的。(因爲進行簽名的時候需要用到商戶key,商戶key比較敏感,所以簽名步驟需要放在服務器端進行,簽名之後由app端請求返回)

3、接下來就是介紹app端要操作的步驟,首先,你需要對你的app進行打包操作,獲得keystone文件,或者,然後運行微信官網提供的app獲取你的應用簽名,操作如下
這裏寫圖片描述
輸入包名,就可以獲得你的應用簽名(這裏需要注意的是,需要打包後的app,而不是直接運行的),然後進入微信開放平臺,在你的應用那裏添加。由於需要保證支付安全,需要在開放平臺綁定商戶應用包名和應用簽名,設置好後才能正常發起支付。如下圖所示

這裏寫圖片描述

接下來就是app調用了,在App調用當中,首先要先註冊app,就是往微信客戶端添加你的應用,還要引入官網提供的jar包,相信引包的操作大家都會了,然後纔可以進行app支付
final IWXAPI msgApi = WXAPIFactory.createWXAPI(context, null);
// 將該app註冊到微信
msgApi.registerApp(“wxd930ea5d5a258f4f”);

app支付中,我們客戶端請求服務器接口,回調需要的參數,然後根據參數進行app支付請求,,具體操作如下

這裏寫圖片描述
上圖是微信官網上的案例,上面有個錯誤的地方,大家自己改過來,還有這裏的sign,是服務器那邊進行二次簽名得到的sign,而不是調用統一下單接口得到的sign,服務器後臺的工作人員請特別注意。(本人被這個sign給坑了好幾天了)

然後就是支付回調這一塊了,這一塊也是超級坑爹的,我從這一塊就覺得微信好霸道。
你需要在你的應用包名相同路徑下創建一個包路徑wxapi,然後在下面再創建WXPayEntryActivity類,比如說你的應用包名是com.example.app,那麼你就需要在com.example.app.wxapi下面創建WXPayEntryActivity類,而且微信那邊特別強調,如包名或類名不一致會造成無法回調結果(微信夠霸道吧)。。。而且我發現,Android studio上面開發的話,還有一個很坑爹的情況,就是as上的包名可以在build.gradle上面指定爲applicationId,然後在AndroidManifest文件上的package另外命名包路徑,這時候就有問題了,因爲微信指定是AndroidManifest文件上的package的包名,但是你卻隨便路徑,不與應用包名一致,結果導致你連回調結果都不可能實現,參考一下官網資料,如下圖所示

這裏寫圖片描述
還有配置文件記得給WXPayEntryActivity類加入android:exported=“true”,不然即使回調成功也不會出現該結果界面,也順便加上啓動模式吧android:launchMode=“singleTop”

<activity
            android:name=".wxapi.WXPayEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.NoTitleBar" />

當你沒其他問題時,你會回調成功,回調成功,並不一定調用支付成功
回調中errCode值列表:
名稱描述解決方案0成功展示成功頁面-1錯誤可能的原因:簽名錯誤、未註冊APPID、項目設置APPID不正確、註冊的APPID與設置的不匹配、其他異常等。-2用戶取消無需處理。發生場景:用戶不支付了,點擊取消,返回APP。

回調中errCode值列表

這個微信支付的流程全部搞定了,結果是一直返回-1給我,試過很多方法都不行,最後才知道sign需要經過二次簽名,呵呵,官網api都沒說清楚,很多地方都讓人不明不白,出的問題特別多,真是有趣的微信支付。

有關微信支付的就到此爲止了,應該沒有什麼問題,有問題的話可以在下面留言,我會及時回覆的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章