【CSDN博客遷移】Android集成微信支付之-天坑

項(xiàng)目集成微信支付,折騰了三天左右,坑太多,做個(gè)簡(jiǎn)單記錄

開(kāi)通和主要原理不再講了,參考微信支付官網(wǎng)

截個(gè)官網(wǎng)的業(yè)務(wù)流程圖,下面好說(shuō)明

微信支付業(yè)務(wù)流程.png

1 支付結(jié)果回調(diào)(圖中的17步)

支付結(jié)果回調(diào),微信官方的說(shuō)法是:

在net.sourceforge.simcpux.wxapi包路徑中實(shí)現(xiàn)WXPayEntryActivity類(lèi)(包名或類(lèi)名不一致會(huì)造成無(wú)法回調(diào)),在WXPayEntryActivity類(lèi)中實(shí)現(xiàn)onResp函數(shù),支付完成后,微信APP會(huì)返回到商戶APP并回調(diào)onResp函數(shù),開(kāi)發(fā)者需要在該函數(shù)中接收通知,判斷返回錯(cuò)誤碼,如果支付成功則去后臺(tái)查詢(xún)支付結(jié)果再展示用戶實(shí)際支付結(jié)果。注意一定不能以客戶端返回作為用戶支付的結(jié)果,應(yīng)以服務(wù)器端的接收的支付通知或查詢(xún)API返回的結(jié)果為準(zhǔn)。

(1) 其實(shí)正確地寫(xiě)法是appPackageName.wxapi. WXPayEntryActivity(如:com.example.app.wxapi. WXPayEntryActivity),而且類(lèi)名必須是這個(gè)名字,要不不能回調(diào)(這個(gè)問(wèn)題好網(wǎng)上遇到的人很多)。
(2) 還有一個(gè)問(wèn)題,, AndroidManifest.xml配置文件中配置WXPayEntryActivity類(lèi)時(shí),要加上android:exported="true"這個(gè)標(biāo)簽,不然也回調(diào)不到,這個(gè)坑了我一個(gè)多小時(shí);

2 android端請(qǐng)求簽名(圖中第9步)

微信官網(wǎng)的說(shuō)法是:

簽名生成的通用步驟如下:
第一步,設(shè)所有發(fā)送或者接收到的數(shù)據(jù)為集合M,將集合M內(nèi)非空參數(shù)值的參數(shù)按照參數(shù)名ASCII碼從小到大排序(字典序),使用URL鍵值對(duì)的格式(即key1=value1&key2=value2…)拼接成字符串stringA。
特別注意以下重要規(guī)則:
◆ 參數(shù)名ASCII碼從小到大排序(字典序);
◆ 如果參數(shù)的值為空不參與簽名;
◆ 參數(shù)名區(qū)分大小寫(xiě);
◆ 驗(yàn)證調(diào)用返回或微信主動(dòng)通知簽名時(shí),傳送的sign參數(shù)不參與簽名,將生成的簽名與該sign值作校驗(yàn)。
◆ 微信接口可能增加字段,驗(yàn)證簽名時(shí)必須支持增加的擴(kuò)展字段
第二步,在stringA最后拼接上key得到stringSignTemp字符串,并對(duì)stringSignTemp進(jìn)行MD5運(yùn)算,再將得到的字符串所有字符轉(zhuǎn)換為大寫(xiě),得到sign值signValue。

通俗的說(shuō),請(qǐng)求的參數(shù)做簽名, appid,noncestr ,package,partnerid,prepayid,timestamp 按這個(gè)順序(注意必須是小寫(xiě)),鍵值對(duì)的格式(即key1=value1&key2=value2…)做簽名。

3 支付結(jié)果返回-1(圖中的17步)

微信官網(wǎng)的說(shuō)明是:

開(kāi)放平臺(tái)配置的包名和應(yīng)用簽名是否一致:(android);確認(rèn)是否使用正式的keystore打包apk并安裝調(diào)試;(android);提交訂單部分需要在服務(wù)器端完成。

(1)應(yīng)用簽名問(wèn)題:
微信開(kāi)發(fā)平臺(tái)申請(qǐng)開(kāi)發(fā)應(yīng)用時(shí):
填寫(xiě)Android平臺(tái)的應(yīng)用簽名時(shí),需要注意,填寫(xiě)的是keystore的MD5值,不是SHA1值。注意開(kāi)發(fā)時(shí)的debug.keystore和最終發(fā)布的簽名keystore的MD5,SHA1都是不一樣的。正式發(fā)布產(chǎn)品需要使用正式的簽名。
另外特別注意:md5值得填寫(xiě)全是小寫(xiě),并且不能包含冒號(hào)。
(2)注冊(cè)app到微信
除過(guò)微信開(kāi)發(fā)Demo里面的注冊(cè),在每次向微信服務(wù)器請(qǐng)求數(shù)據(jù)之前再注冊(cè)一次

 wxApi.registerApp(Constants.APP_ID); //發(fā)送請(qǐng)求數(shù)據(jù)之前再注冊(cè)一次
 wxApi.sendReq(req);
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,040評(píng)論 25 709
  • 今日推薦 經(jīng)常閱讀博客是個(gè)好習(xí)慣推薦鴻洋CSDN的博客 微信支付相關(guān)文章 詳細(xì)介紹Android開(kāi)發(fā)集成微信支付(...
    MrQ_Android閱讀 6,284評(píng)論 9 52
  • 一、背景介紹 作為一名Android開(kāi)發(fā),從最初的跌跌撞撞到現(xiàn)在小有所悟,這其中經(jīng)歷過(guò)的辛酸苦辣也是一種痛并快樂(lè)著...
    freecats08閱讀 5,150評(píng)論 7 54
  • 我每天經(jīng)過(guò)的地方 荷花開(kāi)了滿塘 花香隨著風(fēng)兒飄來(lái) 我卻害怕聞到這回憶的味道 四月前你還是一派枯敗的景象 突然間你卻...
    panjw閱讀 146評(píng)論 0 3
  • 吳承恩在《西游記》開(kāi)篇寫(xiě)到“欲知造化會(huì)元功,須看西游釋厄傳?!?,意思就是“要想知道人生的真諦,那就必須看西游記!”...
    駿翼閱讀 499評(píng)論 2 7

友情鏈接更多精彩內(nèi)容