前提

项目开发中实现微信提现的功能。使用到了两个接口

企业付款接口:transfers【】

查询企业付款接口:gettransferinfo 【】

为什么有不能马上知道付款结果的情况--遇到err_code=SYSTEMERROR?

根据支付文档,可知,主要看3个字段

return_code :通信标识,非交易标识,此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断

result_code:  交易标识

err_code :错误编码

只有在return_code 和 result_code 同时为SUCCESS时 才可判断 交易成功

那么return_code ==SUCCESS result_code =FAIL的时候呢?根据文档可知result_code 才是交易标识,这时应该判定位交易失败才对,

然而,在实际应用中发现,真相并不是这样的。

在一次付款日志中出现,return_code ==SUCCESS result_code =FAIL 有err_code时 【err_code=SYSTEMERROR:系统繁忙,请稍后再试】

我们判定了为交易失败,但是微信方面却在几天后,成功支付了这笔钱,这就就导致了损失。

所以,付款API 除了有即时成功 即时失败的情况外 还有一些意外的情况 :不能马上判断是成功了还是失败了

对于那些不能马上知道结果的交易订单应该怎么处理?

对于那些不能即时成功的交易记录,我们使用第二个微信接口:查询企业付款接口:gettransferinfo

定期去查询这些记录的微信处理结果,如果返回即时成功/失败时 才在我们这边处理金额数据。这样就尽量避免了出现上面会造成损失的情况。

查询企业付款接口遇到的err_code=NOT_FOUND问题

但是这个查询企业付款接口 ,在实际应用中,我们又遇到了一个新的问题:

付款接口返回即时成功时,下一秒马上使用查询接口去查询该订单号的交易结果时,返回的却是err_code=NOT_FOUND而不是成功。再隔一个时间去查询时 就返回交易结果为成功了。

这种情况,因为付款成功到调用查询接口的时间间隔太短 (只有1秒)导致的,这1秒期间微信那边的订单可能还没有入库,导致查询结果为订单号不存在,在隔一段时间去查就为成功了。

这是因为付款成功后,刚好就到了定时任务启动的时间段,马上就去执行查询订单结果的脚本的结果,这是使用定时任务无法避免的会出现的情况。

所以,有err_code=NOT_FOUND并不代表 真的交易失败,err_code为NOT_FOUND时可能只是数据没有入库的原因。

总结上文工作中遇到的情况,可以归纳如下结果

付款接口

return_code=result_code=SUCCESS   -->可以 判定为即时交易成功

return_code=FAIL           -->可以判定为即时交易失败

err_code=SYSTEMERROR       -->不可判定交易结果,需要定时去调用查询付款接口取确定,直到明确结果

其他 明确失败的err_code则 可以判定为即时失败(err_code=NOAUTH/AMOUNT_LIMIT等)

其他不可判定交易结果,需要定时去调用查询付款接口取再去确定,直到明确结果

查询付款接口

return_code=result_code=SUCCESS时:

status=SUCCESS   交易成功

status = FAILED    交易失败

status=PROCESSING 交易处理中

2.return_code=SUCCESS,result_code=FAIL时:

err_code=NOT_FOUND 不可判定交易结果,需要定时去调用查询付款接口取再去确定,直到明确结果

其他 明确失败的err_code则可以判定为即时失败(err_code=NOAUTH/AMOUNT_LIMIT等)

3.其他不可判定交易结果,需要定时去调用查询付款接口取再去确定,直到明确结果

微信支付服务器system error,微信企业支付--遇到不明确结果的err_code:SYSTEMERROR,NOT_FOUND...相关推荐

  1. 微信支付服务器system error,调用微信支付统一下单接口出现err_code:SYSTEMERROR错误...

    调用统一下单接口: 返回如下 {'appid': 'wxxxxxxxxx', 'err_code': 'SYSTEMERROR', 'err_code_des': 'system error', 'm ...

  2. 微信企业支付 服务器根证书,微信支付服务器证书根ca证书有什么用

    随着现如今网络的不断发展,我们的生活跟网络密不可分,现在到处充斥着手机消费,只要你手机上有微信.支付宝不管到哪里都可以买你想买的东西,钱包已经在家里闲置多时.手机支付给我们的生活带来便利的同时也会伴随 ...

  3. 微信企业支付 服务器根证书,微信支付证书获取与上传流程的说明_根证书rootca.pem...

    小伙伴们,有少许正在使用微信支付交易功能的用户向我们反馈,在某些功能里需要使用到微信支付证书,比如在拼团购.高级酒店.微信红包.高级H5游戏里涉及到金额退款. 有部分需要使用到微信支付证书上传的用户不 ...

  4. 微信支付服务器demo,集成微信支付(附带demo)

    首先忽略掉申请AppKey的步骤,直接从集成开始 1.cocopods集成SDK pod 'WechatOpenSDK' 2.添加依赖库 SystemConfiguration.framework, ...

  5. 微信支付宝服务器分布,支付宝微信扫码支付中间件「第二届立创商城电子制作节30强作品」...

    原标题:支付宝微信扫码支付中间件「第二届立创商城电子制作节30强作品」 本作品为第二届立创商城电子制作节30强入围作品,作者立创社区ID:云逸Baby:转载请注明出处,未经允许不得用作商业用途.作品原 ...

  6. 自动售货机微信支付 服务器,售货机微信支付原理和技术难点

    原标题:售货机微信支付原理和技术难点 首先,了解一下售货机投币支付的工作原理.顾客投币后,售货机上的投币器会识别顾客的投币金额,并通讯售货机主板.然后顾客在售货机上选择商品,主板确认顾客投币金额可以购 ...

  7. 微信无法连接支付服务器,App接入微信H5支付常见错误及原因

    在App上接入微信H5支付一般都会遇到一些错误.本文讨论了这些错误的解决方案和背后的原因,希望能让读者能少踩些坑. 错误可以分为两类:一是H5支付域名设置错误,二是URL Scheme跳转App错误. ...

  8. 微信支付服务器商模式,微信支付分正式支持服务商模式!

    支付之家网(ZFZJ.CN)7月21日,微信支付推出<微信支付成长计划-智慧经营系列课堂>,同时对外透露,微信支付智慧经营产品支付分正式宣布支持服务商模式. 首期"政策与产品能力 ...

  9. 苹果怎么取消微信订阅服务器,教程:取消微信免密支付授权功能设置

    随着移动支付的飞速发展,第三方支付平台也越来越多,特别是微信支付宝的普及,给大家带来了极大的便利.之前我们出门必备的银行卡.现金等已经被一部手机取代了.回想一下,小编已经记不清自己上次带钱包出门是什么 ...

最新文章

  1. C#多态性-抽象类对象引用子类实例
  2. java 反射 单列_轻松掌握Java单例模式
  3. cookie+memcached实现单点登陆
  4. vscode在ubuntu下安装插件,同时配置python虚拟环境、ctrl+鼠标滚轮放大代码窗口设置
  5. 本机用域名不能访问_域名注册申请网站域名注意事项
  6. 东芝移动硬盘驱动_传输数据不用等,高速移动硬盘数据线畅享快传体验
  7. Java必备——MySql 三大知识点
  8. tpadmin的坑收集 nginx下配置tp5失败
  9. ESP32 Uart串口控制器
  10. 石家庄地铁查询(双人项目)
  11. 华为物联网操作系统 LiteOS
  12. 流星加速器木马分析与处置方案
  13. 如何使用QQ群日历和群活动进行会议室安排
  14. python导入py文件报错
  15. Android Studio编写一个手写字体识别程序
  16. VBS脚本实现宽带上网加网页认证上网双验证
  17. 【Java核心技术卷】深入理解Java近似数(近似存储)与有效数字、精确度、最大有效位数的概念
  18. hrbust 1558 小背包(简单01背包)水坑
  19. 根据地区名称获得经纬度
  20. 2021.10.12-13科研日志

热门文章

  1. 前端寒假css(100-181)
  2. Html5 Egret游戏开发 成语大挑战(七)游戏逻辑和数据处理
  3. php开发证书转换工具,各类证件生成器
  4. 前端4-2-5:关于CSS 长度单位总结,有你就够了!
  5. 【个人感悟】谈谈算法工程师毕业一年的感悟
  6. java如何把汉字转换成机内码_java语言如何将汉字转化成五笔
  7. hadoop-ykt(自定义key)
  8. 我女儿说要看雪,于是我默默的拿起了键盘,下雪咯,程序员就是可以为所欲为!
  9. Ae 入门系列之二:素材的导入与管理
  10. C/C++代码混淆器