前言: 本人也是從新手一步一步摸爬過(guò)來(lái)的,對(duì)于新手來(lái)說(shuō),確實(shí)會(huì)遇到很多坑.一味看別人家寫的總結(jié)和帖子也不是最好的辦法,個(gè)人覺得比較好的做法是:
研讀官方文檔 + 深學(xué) SDK Demo + 官方常見問(wèn)題匯總 + 百度看帖(支付寶技術(shù)客服)
研讀官方文檔
1, 認(rèn)真查閱支付寶集成的官方文檔,和接口說(shuō)明(有利于提高自己的自學(xué)能力,學(xué)習(xí)第三方框架的能力,同時(shí)可以更加全面,深入了解到支付寶整個(gè)集成過(guò)程和代碼調(diào)用運(yùn)行邏輯)
深學(xué) SDK Demo
2,運(yùn)行查看支付寶 SDK 自帶的 Demo,從中學(xué)習(xí)支付過(guò)程從 支付發(fā)起--->支付處理--->支付成功---> 支付成功后回調(diào)處理.
官方常見問(wèn)題匯總
3.自己嘗試將 SDK 集成到自己的工程,(中間肯定會(huì)遇到很多問(wèn)題,報(bào)錯(cuò)),首先問(wèn)題出來(lái)后,重在分析排查問(wèn)題出現(xiàn)的原因,找到問(wèn)題的解決思路,(官方文檔有很多問(wèn)題匯總解答,學(xué)會(huì)輸入關(guān)鍵字,錯(cuò)誤碼進(jìn)行定位查找問(wèn)題)
百度(支付寶技術(shù)客服)
4.最后問(wèn)題找不到方向時(shí),可以將問(wèn)題百度搜索,前輩的經(jīng)驗(yàn)貼進(jìn)行學(xué)習(xí),分析,思考.(實(shí)在找不到原因:就找支付寶技術(shù)客服進(jìn)行反饋尋求幫助)
升級(jí)支付寶SDK遇到的坑
問(wèn)題描述: ?在老工程APP 1.0 版本里 支付寶 SDK 可以支付成功,考慮到版本升級(jí),同時(shí) 出于支付安全性,就更新 支付寶的新 SDK . 結(jié)果更新 SDK 后出現(xiàn)支付不成功,如下圖.
這是大家集成 支付寶 SDK 最常見的 報(bào)錯(cuò)異常界面. 官方文檔ALI40247 問(wèn)題分析解決里面也分析了很多 原因,大家可以逐條查詢看看自己?jiǎn)栴}出現(xiàn)在哪個(gè)環(huán)節(jié).
原因:
memo = "";
result = "{\"alipay_trade_app_pay_response\":{\"code\":\"40002\",\"msg\":\"Invalid Arguments\",\"sub_code\":\"isv.invalid-signature\",\"sub_msg\":\"驗(yàn)簽出錯(cuò),建議檢查簽名字符串或簽名私鑰與應(yīng)用公鑰是否匹配凿傅,網(wǎng)關(guān)生成的驗(yàn)簽字符串為:app_id=2016041301292377&biz_content={\\\"timeout_express\\\":\\\"30m\\\",\\\"seller_id\\\":\\\"2088511860242452\\\",\\\"product_code\\\":\\\"QUICK_MSECURITY_PAY\\\",\\\"total_amount\\\":\\\"0.01\\\",\\\"subject\\\":\\\"1\\\",\\\"body\\\":\\\"我是測(cè)試數(shù)據(jù)\\\",\\\"out_trade_no\\\":\\\"KH15L8ESZL6F3HE\\\"}&charset=utf-8&method=alipay.trade.app.pay&sign_type=RSA×tamp=2017-11-01 11:45:49&version=1.0\"}}";
resultStatus = 4000;
分析: 根本原因是,更新新的支付寶 SDK 后,需要 同步更新之前 支付寶開發(fā)平臺(tái)設(shè)置好的應(yīng)用公鑰.
因?yàn)槲耶?dāng)時(shí)沒有去重新設(shè)置應(yīng)用公鑰,(與私鑰配對(duì)生成的,私鑰就交給后臺(tái)同事進(jìn)行加簽 支付訂單 OderString)
1.確保 你的 APP 已經(jīng)簽約了支付寶的 APP 支付功能 而不是 移動(dòng)支付功能
移動(dòng)支付 和 APP 支付 是不一樣的,有差別!!!?移動(dòng)支付老版本和APP支付新版本接入對(duì)比
坑二: 如果發(fā)現(xiàn)你重新設(shè)置 應(yīng)用公鑰 之后 還是 出現(xiàn) ALI40247 錯(cuò)誤.很有可能是下面情況
? 如果之前 你的APP 是由主賬號(hào) 和支付寶平臺(tái)簽約,上線的.而你開發(fā)集成用的是 支付寶子賬號(hào).子賬號(hào)一定要添加 APP 支付這個(gè)功能,然后再設(shè)定 應(yīng)用公鑰. (因?yàn)樽淤~號(hào)沒有 APP 支付功能的前提下,設(shè)定應(yīng)用公鑰是沒有效果的)?
主賬號(hào):一般是公司主要負(fù)責(zé)人的 支付寶賬號(hào)(私人賬號(hào)) 或者公司的企業(yè)支付寶賬號(hào),負(fù)責(zé)與支付寶平臺(tái)簽約相關(guān)開發(fā)的功能,比如 APP支付功能等. 同時(shí)該賬號(hào)負(fù)責(zé)接收 用戶交易金額.有很高的隱私安全性,不會(huì)隨便給開發(fā)人員使用.
子賬號(hào): 用來(lái)關(guān)聯(lián) 主賬號(hào),用于主賬號(hào)下所有 APP 項(xiàng)目的管理與開發(fā),相關(guān)參數(shù)調(diào)試設(shè)置.比如,重新設(shè)定應(yīng)用公鑰,授權(quán)回調(diào)地址等等.一般為 開發(fā)人員的 工作用的支付寶賬號(hào).
注意: 支付寶 SDK 的更新,支付接口的名字一般沒有變,但是各個(gè)版本間,要傳遞的一些參數(shù)名字是有略微修改的,切勿將老版本 SDK 的參數(shù)名字 直接引用到新 SDK 中.
最后分享一下成功的喜悅:
總之:生搬硬套很危險(xiǎn),理解邏輯才是硬道理!
本文旨在記錄分享自己的學(xué)習(xí)歷程,如有不足還望包涵指正.
創(chuàng)作不易,轉(zhuǎn)載請(qǐng)說(shuō)明出處.