現象 :
1 微信分享和登陸都正常,微信支付總是回傳-1
2 微信支付和分享用的是同一個appid
3 微信支付權限已開通三天了,支付能力是有的,開放平臺也能看到,支付是審核通過的
4吊起支付的代碼也是沒有問題的(官方的app demo應該沒有問題,只替換了appid,包名和簽名(也考慮了debug和relece的差異,配置了走relece的簽名),同樣替換另一個專案可以正常支付)
5 PayEntityActivity配置正確,依照官方demo配置的
6 將PayEntityActivity放到了指定的位置
求互與微信開放平臺的回復如下
#
1、統一下單回傳是否正常(后面步驟都用到了這個介面的appid,mchid,prepayid,看引數是否匹配)
#
2、第二次簽名程序是否正確(此步驟商戶一定要嚴格按檔案的引數串列來做簽名,提醒商戶用簽名工具做校驗)
#
2.1、此處涉及一個細節:該介面沒有sign_type引數,如果統一下單用的HMAC-SHA256簽名,本步驟也必須按HMAC-SHA256;
#
2.2、本次簽名的引數串列要跟檔案完全匹配:大小寫要一致,引數值要與統一下單介面的保持一致,特別注意引數名:partnerid,取值為mchid(開平SDK歷史原因,無法改名)
#
2.3、本步驟生成的sign與統一下單的不是同一個,經常有商戶直接傳同統一下單介面的sign過來
#
3、檢查客戶端呼叫sendReq(PayReq)物件賦值的正確性(必要時讓商戶提供資料),有一種情況是商戶會通過異步獲取到后臺資料,比如data物件是通過異步請求得到的物件:request.appId = data.appid; 實際appid屬性值為空,
#
4、 檢查配置
#
4.1、 Android要求在開放平臺后臺配置正確的應用簽名和包名
#
4.2、 IOS則不需要在開平配置,而是要求商戶在開發環境紅配置正確的URLSchemes為對應APPID
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
按照官方回復的一遍一遍的排查了,我自己的眼睛都不相信了,用上了文本比對工具,還是沒有找到官方的所提及的問題
作為Android開發其實很為難,因為支付只能吊起一次,首先后臺開發會用那個微信提供的簽名校驗工具,告訴你他后臺的簽名沒有問題
他還會告訴你,H5和M站沒有問題,一定是我的代碼有問題。我的老天爺,我開發了七年,而吊起支付的代碼只有十行
我不斷的排查問題,最后沒有辦法了,拉著后臺一起從新開始排查。微信的官方里面的每一條都排查了。
結果:因為我們微信支付存在多端支付的情況,所以存在多個appid,H5用的是服務號的appid而我們Android也有自己的appid
之前懷疑過這個問題,所以讓后臺簽名給我回傳,還是不行,因為他沒有用這個appid去統一下單,而是直接給我回傳了,所以一直報錯:
appid錯誤,請聯系服務商
結論:如果Android端排除了各種情況,還是只能吊起一次支付的情況,請注意:統一下單的用的appid和重新簽名的appid以及Android端
吊起支付的appid要保持一致,不一致就可能存在問題
為什么是可能出現問題,而不是一定出現問題?這也是我這次遇到很大的一個坑,我將自己代碼類比另一個專案,發現:后臺回傳的重新簽
名的appid和專案中吊起微信支付的appid不是同一個,還能正常支付。所以我一直以為這個就應該不是同一appid,最后才發現,這涉及到
app新老更替的情況,雖然appid不一樣,但是申請時候用的包名和簽名都是一樣的,所以后臺回傳的appid和Android端吊起微信appid可
以不一樣。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/7794.html
標籤:Android
上一篇:Qt連接sqserver,單獨這個ip連接不上,其他ip都可以連接上
下一篇:為什么之前運行的好好的,過一會兒就出現這個問題error writing to -: Invalid argument
