收藏
回答

企业付款到零钱报错 The cURL request was retried 3 times and

The cURL request was retried 3 times and did not succeed. The most likely reason for the failure is that cURL was unable to rewind the body of the request and subsequent retries resulted in the same error. Turn on the debug option to see what went wrong. See https://bugs.php.net/bug.php?id=47204 for more information."

而且文档https://gitee.com/TheNorthMemory/wechatpay-php/blob/v1.1/README.md中说的用

'mchid'            => '1900000109',// 注意这个商户号,key是`mchid``mch_id`


我用mchid,报错,加上了mch_id又报上面的错误了, 麻烦解答一下这个问题,感谢

回答关注问题邀请回答
收藏

2 个回答

  • 北望沣渭
    北望沣渭
    2021-12-19
    <?php
        /**
         * 向微信用户个人付款(同步模式)
         * @param array<string,mixed> $options
         * @link https://pay.weixin.qq.com/wiki/doc/api/tools/mch_pay.php?chapter=14_2
         */
        public function post(array $options = [
            'xml' => [
                'mch_appid' => 'wx8888888888888888',
                'mchid' => '1900000109',
                'device_info' => '013467007045764',
                'partner_trade_no' => '10000098201411111234567890',
                'openid' => 'oxTWIuGaIt6gTKsQRLau2M0yL16E',
                'check_name' => 'FORCE_CHECK',
                're_user_name' => '王小王',
                'amount' => '10099',
                'desc' => '理赔',
                'spbill_create_ip' => '192.168.0.1',
                'scene' => 'BRAND_REDPACKET',
                'brand_id' => '1234',
                'finder_template_id' => '1243100000000000',
            ],
            'security' => true,
        ]): ResponseInterface;
    
    

    https://github.com/TheNorthMemory/wechatpay-openapi/blob/b20adb4e541969bc99eda0f6241ca2c3a8ef56c2/src/V2/Mmpaymkttransfers/Promotion/Transfers.php#L13-L35

    参数示例如上,问题来了,你是怎么请求的?

    2021-12-19
    有用 2
    回复 15
    • 北望沣渭
      北望沣渭
      2021-12-19
      1.1.1 - 2021-08-13
      修正APIv2上,转账至用户零钱接口,xml入参是mchid引发的不适问题;
      增加APIv2上转账至用户零钱接口测试用例,样例说明如何进行异常捕获;

      另外你需要安装至少v1.1.1版本
      2021-12-19
      回复
    • 肚叽
      肚叽
      2021-12-19
      怎么看下载的版本
      2021-12-19
      回复
    • 肚叽
      肚叽
      2021-12-19
      我的好像是1.08,我升级试一下
      2021-12-19
      回复
    • 肚叽
      肚叽
      2021-12-19
      升级到1.4.2了还是报这个错
      2021-12-19
      回复
    • 肚叽
      肚叽
      2021-12-19
      按照这个请求的
      2021-12-19
      回复
    查看更多(10)
  • 肚叽
    肚叽
    2021-12-20

    2021-12-20
    有用
    回复 12
    • 北望沣渭
      北望沣渭
      2021-12-20
      文中提示来自Guzzle: https://github.com/guzzle/guzzle/blob/c1fd316f0a0f3325ed1e7cdbe61030418b868f9f/src/Handler/CurlFactory.php#L505-L516 ,看备注信息是说,curl 发送数据失败,需要回滚stream,而这个时候回滚也失败了,即会抛这个异常。

      问题就在于,企业付款到零钱是需要加载商户rsa私钥及证书,未加载到的时候请求就会失败,进而引发重试失败,所以你需要排查Builder::factory([‘merchant’ => []]) 中的 cert 及 key 文件路径是否可以访问到。

      另外建议使用一个Linux环境做开发调试,在Windows上也可以尝试docker,已知在windows上跑php有许多莫名其妙的问题无法解决。
      2021-12-20
      回复
    • 北望沣渭
      北望沣渭
      2021-12-20
      在请求付款到零钱接口的时候,添加一个参数retries=0,关闭重试,看下服务端第一次返回的信息是什么,参数位置如下:
      2021-12-20
      回复
    • 肚叽
      肚叽
      2021-12-20回复北望沣渭
      好吧,我再试一下,实在不行,就换成Linux, 应该是能访问到, 不然会报错, SSL certificate not found:
      2021-12-20
      回复
    • 肚叽
      肚叽
      2021-12-20回复肚叽
      之前是金额的问题, 最低不能小于1块钱, 我把金额调大就成功了, 但是没有接收到返回信息, 还是那个错误,但是接口却调用成功了, 我都收到钱了
      2021-12-20
      回复
    • 肚叽
      肚叽
      2021-12-20回复北望沣渭
      好的我试一下
      2021-12-20
      回复
    查看更多(7)
登录 后发表内容