最近在使用新版微信支付的查询单笔退款(通过商户退款单号)功能(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