支付寶預授權凍結接口問題

支付寶預授權凍結接口問題,描述下,不好說是誰的問題,一起解決

問題

描述

  1. 預授權凍結失敗,無法確認失敗狀態。用戶在使用支付寶預授權的時候,想要立刻得知支付寶預授權的結果,成功凍結的話一切正常,如果失敗情況,會經歷如下三部曲

    1. 支付寶客戶端返回錯誤,但是無有效信息

      resultStr\":\"{\\\"resultStatus\\\":\\\"6001\\\",\\\"result\\\":\\\"\\\",\\\"memo\\\":\\\"操作已經取消。\\\"}
      
  1. 雖然經過處理,我們的客戶端標記了某次請求, 然後後臺查詢支付寶,卻不到失敗信息

    "result": "{\"amount\":\"5000.00\",\"authNo\":\"2019022110002001290221452334\",\"body\":\"{\\\"alipay_fund_auth_operation_detail_query_response\\\":{\\\"code\\\":\\\"10000\\\",\\\"msg\\\":\\\"Success\\\",\\\"amount\\\":\\\"5000.00\\\",\\\"auth_no\\\":\\\"2019022110002001290221452334\\\",\\\"extra_param\\\":\\\"{}\\\",\\\"gmt_create\\\":\\\"2019-02-21 09:40:29\\\",\\\"operation_id\\\":\\\"20190221650479272902\\\",\\\"operation_type\\\":\\\"FREEZE\\\",\\\"order_title\\\":\\\"神州租車-支付寶預授權\\\",\\\"out_order_no\\\":\\\"15507131868116test\\\",\\\"out_request_no\\\":\\\"6660262600271462401\\\",\\\"payer_logon_id\\\":\\\"158****0750\\\",\\\"payer_user_id\\\":\\\"2088502156746299\\\",\\\"remark\\\":\\\"神州租車-支付寶預授權\\\",\\\"rest_amount\\\":\\\"0.00\\\",\\\"status\\\":\\\"INIT\\\",\\\"total_freeze_amount\\\":\\\"0.00\\\",\\\"total_pay_amount\\\":\\\"0.00\\\"},\\\"sign\\\":\\\"A5QWm5e5Ej5wRj+ZDGsVfRALZE8wZUbcX0cenjo/TTdKv04cgi4Zh3QhTuYBnPw4d4N0SjN4ZKhbPxUIHknPU+P+XJYmMiW7JFILytaKSq4AgwB8J3HnNJ6yaATqZJwHd+tg5tCpkVGBV/ad2zO0cHpr+4+LqLkOGVMoviUa8p8=\\\"}\",\"code\":\"10000\",\"errorCode\":\"10000\",\"extraParam\":\"{}\",\"gmtCreate\":1550713229000,\"msg\":\"Success\",\"operationId\":\"20190221650479272902\",\"operationType\":\"FREEZE\",\"orderTitle\":\"神州租車-支付寶預授權\",\"outOrderNo\":\"15507131868116test\",\"outRequestNo\":\"6660262600271462401\",\"params\":{\"biz_content\":\"{\\\"out_order_no\\\":\\\"15507131868116test\\\",\\\"out_request_no\\\":\\\"6660262600271462401\\\"}\"},\"payerLogonId\":\"158****0750\",\"payerUserId\":\"2088502156746299\",\"remark\":\"神州租車-支付寶預授權\",\"restAmount\":\"0.00\",\"status\":\"INIT\",\"success\":true,\"totalFreezeAmount\":\"0.00\",\"totalPayAmount\":\"0.00\"}
    

    注意其中的status是INIT,代表的是等待狀態,其實支付寶客戶端已經告訴我們用戶已經取消了,但是後臺查的結果還是等待狀態

  2. 再次凍結卻提示失敗。

並且支付寶預授權凍結失敗沒有回調。導致後臺無法立刻得知結果。

解決措施

  1. 獲取第一次預授權凍結參數之後,重複使用第一次獲取的預授權凍結參數,無法喚起支付寶app,彈出系統繁忙

  2. 獲取多次預授權凍結參數,根據螞蟻金服商戶技術支持測試結果,與我們測試結果,第一次以後的預授權凍結參數,無法喚起支付寶app,彈出系統繁忙,並且後續拉起的支付寶app,在後臺查詢,如下結果

由此措施和上面問題描述可以得出:

支付寶app端和後臺不統一,支付寶app端會彈出系統繁忙,攔截重複使用的預授權凍結參數,以及第一次以後使用的預授權凍結參數。但是這個時候支付寶後臺返回的結果是INIT(初始化狀態)。

簡單來說: 支付寶app報錯,查詢支付寶後臺得到的結果是初始化。

問題再描述

  1. 同一個預授權凍結參數,多次拉起支付寶報系統繁忙,此時查詢支付寶得到的狀態是等待而不是失敗。

  2. 多個預授權凍結參數,支付寶報系統繁忙,查支付寶查不到後續的狀態。

    {"apiMethodName":"alipay.fund.auth.order.app.freeze","apiVersion":"1.0","bizModel":{"amount":"5000.00","enablePayChannels":"[{\"payChannelType\":\"CREDITZHIMA\"}]","extraParam":"{\"category\":\"TIME_SHARE_RENT_CAR\",\"outStoreCode\":\"48\",\"outStoreAlias\":\"首都機場T1/T2店\"}","orderTitle":"神州租車-支付寶預授權","outOrderNo":"15507164545814test","outRequestNo":"6660276700649095169","payeeUserId":"2088101950310453","productCode":"PRE_AUTH_ONLINE"},"needEncrypt":false,"notifyUrl":"http://opencarpaytest.zuche.com/carpay/alipay/preAuthFreezeCallBack.do_","responseClass":"com.alipay.api.response.AlipayFundAuthOrderAppFreezeResponse","textParams":{}}
    

最後

我覺得這個就是支付寶設計的問題,有80%的把握,起碼對使用的人來說,就是很不人性化。在各種正常情況下,支付寶後臺返回的結果與支付寶app客戶端返回的結果有出入。先後與至少10個以上螞蟻金服技術支持的人聯繫過,但是覺得技術支持都對自己的系統很有信心,我做一個假設。

疑問:假如支付寶再開發的時候需要了問題,要如何解決遇到的問題呢?好奇,是人的話,開發總會出問題,不排除那萬分之一的可能性,如果出現了問題,要怎麼解決呢?希望有好心的阿里工程師幫忙解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章