2014-11-25 54 views
4

我不能完全肯定這個問題有多受歡迎,還是會得到任何反應,因爲這個問題更關係到中國的開發者比外面那些開發商,但是,我目前正致力於將支付寶的服務器端腳本整合爲接收移動成功請求字符串。在服務器端接收請求字符串支付寶移動支付

我已經能夠成功地提供我的手機傢伙(通過支付寶可怕API中眯眼我的眼睛)的字符串必要爲他們付款支付寶。它的格式如下[隱瞞身份信息]:

_input_charset=\"utf-8\"&body=\"Order Number: 20141121_80\"&it_b_pay=\"30m\"&notify_url=\"http://somePublicFacingIP:8080/index.php?route=payment/alipay/callback\"&out_trade_no=\"80\"&partner=\"2088611100000000\"&payment_type=\"1\"&seller_id=\"[email protected]\"&service=\"mobile.securitypay.pay\"&subject=\"Order Number: 20141121_80\"&total_fee=\"10.01\" 

上面的字符串得到由他們支付寶付款類的Android/iOS的API消耗掉,然後由私鑰簽名,然後發送給支付寶。在支付寶接到他們的請求後,他們會驗證我們的參數字符串,併發回範圍從6000到9000的狀態代碼。

我們到目前爲止已收到返回給移動傢伙的字符串中的resultStatus=9000,這表示成功支付(並通過檢查支付寶的錢包歷史中,我們確實看到,我們已經作出的付款)

result = { 
    memo = ""; 
    result = "_input_charset=\"utf-8\"&body=\"\U4ea4\U6613\U53f7 20141124_80\"&it_b_pay=\"30m\"&notify_url=\"http://publicFacingIP:8080/index.php?route=payment/alipay/callback\"&out_trade_no=\"80\"&partner=\"208861100000000\"&payment_type=\"1\"&seller_id=\"[email protected]\"&service=\"mobile.securitypay.pay\"&subject=\"\U65b0\U5143\U7d20\U7f51\U4e0a\U70b9\U9910 - \U8ba2\U5355\U7f16\U53f7 20141124_87\"&total_fee=\"0.01\"&success=\"true\"&sign_type=\"RSA\"&sign=\"reallyLongSignedString\""; 
    resultStatus = 9000; 
} 

在此處,一切都停止工作:

支付寶理論上應該發送結果字符串(用得比較多的參數如上圖所示)也給我們notify_url哪個我們在我們的輸入參數中指定了我們的服務器需要驗證的是支付寶。此結果字符串也將用於更新我們的後端,以便我們知道訂單確實已成功。

出於某種原因,支付寶根本不發送結果字符串到我們指定的notify_url

我已經試過:

  1. 放的POST輸入的var_dump()payment/alipay/callback。沒有收到的任何請求。

  2. 我已經試過面臨IP地址的payment/alipay/callback冰壺我的公開,我知道它的工作,因爲我接受了請求,使規則我的callback地址中是否工作正常與否。

  3. 拉我的頭髮。我再次測試了付款,我可以確認將我的頭髮拉出來並沒有解決問題。

隨着中國開發者經常說,有沒有「大神」(或大師),在那裏,可以給我一些建議和/或解決方案?

回答

1

好了,所以我剛下車與支付寶的支持呼叫。

我們驗證了他們確實已將請求發送到我的notify_url,但我的通知類中有一個PHP重定向代碼段,因此它只是被重定向到我的着陸頁(其結果的輸出是我的主頁的HTML代碼)。

所以教訓:

  1. 不要把重定向在notify_url

  2. 跟支付寶的支持 - 他們可以幫助更多比你想象的(好不到我想,但他們仍然有幫助。) 。

我還實現了他們的Notify類(它負責處理返回參數)的令人討厭的意大利麪條代碼。代碼不漂亮,縮進都是不正確的,並且評論全都是中文的。但它看起來好像會起作用。所以我們會先發貨然後重構& &稍後翻譯..