新版微信支付,参数转小写问题

最近在使用新版微信支付的查询单笔退款(通过商户退款单号)功能(https://pay.weixin.qq.com/docs/merchant/apis/refund/refunds/query-by-out-refund-no.html)的时候遇到一个问题

在发起退款的时候商户退款单号,可以是以下类型:数字、大小写字母_-|*@

在查询退款的时候也有说明

但是实际调用查询接口的时候,大写字母变成了 -小写,如A变成了 -a,导致的结果就是退款单不存在

原始写法:

$instance = self::get_instance();
$resp = $instance->chain("v3/refund/domestic/refunds/" . $out_refund_no)->get();

使用上面的原始写法就会导致大写字母被转成-小写的问题
产生的原因:

解决方案:
两者选其一即可
类似可以传递自定义参数的接口都可以使用这样的方式去解决,如:通过商家批次单号查询批次单(https://pay.weixin.qq.com/docs/merchant/apis/batch-transfer-to-balance/transfer-batch/get-transfer-batch-by-out-no.html)
1、链式请求

$resp = $instance->v3->refund->domestic->refunds->_out_refund_no_->get([
    'out_refund_no' => $out_refund_no,
]);

2、替换方案

$resp = $instance->chain('{+request_url}')->get(['request_url' => 'v3/refund/domestic/refunds/' . $out_refund_no]);

完整写法:
$resp = $instance->chain('{+request_url}')->get([
    'request_url' => 'v3/transfer/batches/out-batch-no/' . $out_batch_no,
    'query'       => ['need_query_detail' => TRUE, 'offset' => 0, 'limit' => 100, 'detail_status' => "ALL"]
]);

其中的 request_url 可以自定义,只要保证前后一致即可

也有人提了类似的issue

Tagged ,