支付宝服务窗接入常见问题说明
近日將一產品接入支付寶服務窗,接入過程遇到幾點磕絆,記下也為后來者有所借鑒。支付寶服務窗無論界面到技術接入,同微信公眾號相似度還是比較高的,做過公眾號接入的,服務窗接入就是輕車熟路了。
接入前的準備工作:
1.申請開發資質.就是填寫企業身份信息然后等待審核,這里不做贅述
2.生成服務窗應用的公鑰,私鑰。可以與app 支付共用一套證書。填寫應用公鑰時用一個應用公鑰填寫就可以了。證書生成過程還是比較簡單的,要注意在支付寶后臺填寫的是公鑰證書
常見問題:
一.與支付寶互相交換公鑰
.地址:https://openhome.alipay.com/platform/keyManage.htm
如上圖所示,
“查看應用公鑰” 即可填寫自己應用的公鑰.
“查看支付寶公鑰” ,將支付寶公鑰放到你的項目中。
二.需激活開發者模式
服務窗應用需激活開發者模式后 ,才可以使用。
2.1. 下載服務端sdk:https://fuwu.alipay.com/platform/doc.htm#c1101
部署至服務器。
修改config.php 里面的app_id , 替換對應的支付寶公鑰證書,應用的公私鑰(可以與app支付公用 的)。
2.2 ?激活網關 ?https://openhome.alipay.com/platform/appDetail.htm?tab=appSetting&appId=(你的應用id)
應用網關 那一欄,激活彈出如下對話框 。
支付寶服務窗應用網關填寫說明 應用網關?:demo里面的Gateway.php?的地址,部署的服務器需要外網可訪問的。 應用公鑰?(RSA):openssl?生成的公鑰證書?(這里我用的是app支付的公鑰證書)。 2.3 驗證通過后,公眾號的用戶事件就可以發送到應用網關了。例如:訂閱事件、消息事件等等. 注意: 1.在紅色對話框里面填寫的公鑰要過濾: 1.—–BEGIN?PUBLIC?KEY—–?,?—–END?PUBLIC?KEY—– 2.?過濾掉?回車(0x0D,0x0A?)、空格。 Gateway.php?響應的xml?response_xml會讀取本地公鑰內容進行過濾,并把過濾內容放在響應的xml,biz_content節點發給支付寶。支付寶會用biz_content?與?網頁填寫的公鑰進行簽名比對。不相等就會返回錯誤?:填寫的公鑰?與服務器返回的不一致。3.訪客身份ID獲取:
支付寶服務窗提供了2種方式獲取用戶信息:
1.用戶訪問授權頁面,并且授權成功。
這種方式必須需要用戶授權,可以獲取更多的用戶信息,例如包含加星的用戶賬號及加星的用戶名。如果僅僅是想獲取訪客的身份ID,那么推薦使用第二種。
2.獲取用戶OpenId。 使用auth_code 可以獲取到OpenId即為用戶的永久標識ID。
2種方式本質上都是通過js 將訪客跳轉至支付寶一api,支付寶會對用戶進行身份認證,通過后將用戶認證信息(auth_code)的附加在url上跳轉回到redirect_uri 定義的url上。獲取到用戶的auth_code后就可以進一步獲取用戶的OpenId或更多信息了。
需要說明的是,這2種方式都不能獲取支付寶訪客頭像(咨詢了技術客服得到的答案)。
參考文檔:https://fuwu.alipay.com/platform/doc.htm#c0205
四.簽名失敗問題:
4.1 支付寶服務器向應用網關推送消息時,如果使用官方demo時,特別要注意網關回調url不要使用動態參數地址,例如http://xytong.cc/pay?type=alipay 這種格式是通不過簽名驗證的。原因是gateway.php 的驗證函數傳參有問題,見如下代碼:
rsaCheckV2 ( $_REQUEST, $config ['ali_fwc_public_key_path'] );參數驗證本來驗證post數據就可以了,如果回調url 有動態參數,就會把get參數也傳入進行計算簽名,結果當然是簽名驗證失敗.官方這樣寫,有畫蛇添足之嫌.
解決方法:
方法1.使用靜態url ?例如:http://xytong.cc/pay/alipay
方法2.修改官方demo代碼,把$_REQUEST 修改為$_POST.
rsaCheckV2 ( $_POST, $config ['ali_fwc_public_key_path'] );來源:http://xytong.cc/archives/52
總結
以上是生活随笔為你收集整理的支付宝服务窗接入常见问题说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PHP用支付宝沙箱账号测试支付功能
- 下一篇: 单选题(2分)打破美国岛链封锁的最主要的