$resp = $instance->chain('v3/fund-app/mch-transfer/transfer-bills')->post(['json' => [
'appid' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
'out_bill_no' => 'TEST'.date('YmdHis').rand(1000,9999),
'transfer_scene_id' => '1005',
'openid' => $touser,
'transfer_amount' => 1000,
'transfer_remark' => '转账测试',
'notify_url' => 'https://www.xxxx.net',
'user_recv_perception' => '劳务报酬',
'transfer_scene_report_infos' => [
[
'info_type' => '岗位类型',
'info_content' => '分销商',
],
[
'info_type' => '报酬说明',
'info_content' => '佣金提现',
]
],
]]);
微信支付APIv3充分复用了HTTP状态码来反馈接口响应状态,PHP SDK readme上有写,对于同步代码,需要用try {} catch(){} 语句包裹,异步可以用otherwise捕获,例如:
try { $response = $instance->chain('v3/fund-app/mch-transfer/transfer-bills')->post([ 'json' => [ 'appid' => 'wxf636efh567hg4356', 'out_bill_no' => 'plfk2020042013', 'openid' => 'o-MYE42l80oelYMDE34nYD456Xoy', 'user_name' => '757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45', 'transfer_amount' => 400000, 'transfer_remark' => '2020年4月报销', 'notify_url' => 'https://www.weixin.qq.com/wxpay/pay.php', 'user_recv_perception' => '现金奖励', 'transfer_scene_id' => '1000', 'transfer_scene_report_infos' => [[ 'info_type' => '活动名称', 'info_content' => '注册会员有礼', ],], ], 'headers' => [ 'Wechatpay-Serial' => 'PUB_KEY_ID_0114232134912410000000000000', ], ]); print_r(json_decode((string) $response->getBody(), true)); } catch (\Exception $e) { // 进行错误处理 echo $e->getMessage(), PHP_EOL; if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) { $r = $e->getResponse(); echo $r->getStatusCode() . ' ' . $r->getReasonPhrase(), PHP_EOL; echo (string) $r->getBody(), PHP_EOL, PHP_EOL, PHP_EOL; } echo $e->getTraceAsString(), PHP_EOL; }
异步方式
$instance->chain('v3/fund-app/mch-transfer/transfer-bills')->postAsync([ 'json' => [ 'appid' => 'wxf636efh567hg4356', 'out_bill_no' => 'plfk2020042013', 'openid' => 'o-MYE42l80oelYMDE34nYD456Xoy', 'user_name' => '757b340b45ebef5467rter35gf464344v3542sdf4t6re4tb4f54ty45t4yyry45', 'transfer_amount' => 400000, 'transfer_remark' => '2020年4月报销', 'notify_url' => 'https://www.weixin.qq.com/wxpay/pay.php', 'user_recv_perception' => '现金奖励', 'transfer_scene_id' => '1000', 'transfer_scene_report_infos' => [[ 'info_type' => '活动名称', 'info_content' => '注册会员有礼', ],], ], 'headers' => [ 'Wechatpay-Serial' => 'PUB_KEY_ID_0114232134912410000000000000', ], ]) ->then(static function(\Psr\Http\Message\ResponseInterface $response) { print_r(json_decode((string) $response->getBody(), true)); }) ->otherwise(static function($e) { // 异常错误处理 echo $e->getMessage(), PHP_EOL; if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) { $r = $e->getResponse(); echo $r->getStatusCode() . ' ' . $r->getReasonPhrase(), PHP_EOL; echo (string) $r->getBody(), PHP_EOL, PHP_EOL, PHP_EOL; } echo $e->getTraceAsString(), PHP_EOL; }); ->wait();
代码可以从 https://wechatpay.im/openapi/v3/fund-app/mch-transfer/transfer-bills CV
403是没有权限,把返回的body打印出来,里面有具体错误
错误位置