支付宝预授权冻结接口问题,描述下,不好说是谁的问题,一起解决
问题
描述
-
预授权冻结失败,无法确认失败状态。用户在使用支付宝预授权的时候,想要立刻得知支付宝预授权的结果,成功冻结的话一切正常,如果失败情况,会经历如下三部曲
-
支付宝客户端返回错误,但是无有效信息
image-20190221101128938
resultStr\":\"{\\\"resultStatus\\\":\\\"6001\\\",\\\"result\\\":\\\"\\\",\\\"memo\\\":\\\"操作已经取消。\\\"}
-
-
虽然经过处理,我们的客户端标记了某次请求, 然后后台查询支付宝,却不到失败信息
"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,代表的是等待状态,其实支付宝客户端已经告诉我们用户已经取消了,但是后台查的结果还是等待状态
-
再次冻结却提示失败。
image-20190221095036492
并且支付宝预授权冻结失败没有回调。导致后台无法立刻得知结果。
解决措施
-
获取第一次预授权冻结参数之后,重复使用第一次获取的预授权冻结参数,无法唤起支付宝app,弹出系统繁忙
-
获取多次预授权冻结参数,根据蚂蚁金服商户技术支持测试结果,与我们测试结果,第一次以后的预授权冻结参数,无法唤起支付宝app,弹出系统繁忙,并且后续拉起的支付宝app,在后台查询,如下结果
![](https://img.haomeiwen.com/i426671/ea8a442cebe26496.jpg)
由此措施和上面问题描述可以得出:
支付宝app端和后台不统一,支付宝app端会弹出系统繁忙,拦截重复使用的预授权冻结参数,以及第一次以后使用的预授权冻结参数。但是这个时候支付宝后台返回的结果是INIT(初始化状态)。
简单来说: 支付宝app报错,查询支付宝后台得到的结果是初始化。
问题再描述
-
同一个预授权冻结参数,多次拉起支付宝报系统繁忙,此时查询支付宝得到的状态是等待而不是失败。
-
多个预授权冻结参数,支付宝报系统繁忙,查支付宝查不到后续的状态。
{"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个以上蚂蚁金服技术支持的人联系过,但是觉得技术支持都对自己的系统很有信心,我做一个假设。
疑问:假如支付宝再开发的时候需要了问题,要如何解决遇到的问题呢?好奇,是人的话,开发总会出问题,不排除那万分之一的可能性,如果出现了问题,要怎么解决呢?希望有好心的阿里工程师帮忙解决
网友评论