调用Razorpay转账API遇权限错误,请求协助排查
Razorpay 拆分支付API调用报错排查(BAD_REQUEST_ERROR)
我需要实现向供应商与平台方拆分支付的功能,调用Razorpay的https://api.razorpay.com/v1/payments/<tr_id>/transfers API时,收到错误提示:"This operation is not allowed. Please contact Razorpay support for details.",错误代码为BAD_REQUEST_ERROR,请求协助排查问题。
请求参数示例
{ "transfers": [ { "account": "acc_...", "amount": 1620, "currency": "INR", "notes": { "order_id": "3376", "transaction_id": "pay_....." }, "linked_account_notes": [ "order_id", "transaction_id" ], "on_hold": true, "on_hold_until": 1711516716 } ] }
响应内容示例
{ "error": { "code": "BAD_REQUEST_ERROR", "description": "This operation is not allowed. Please contact Razorpay support for details.", "source": "NA", "step": "NA", "reason": "NA", "metadata": { } } }
PHP调用代码
global $razorpay_secret; $api_url = "https://api.razorpay.com/v1/payments/$transaction_id/transfers"; $data = array( 'transfers' => $payments ); $post_data = json_encode($data); $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $api_url, CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POSTFIELDS => $post_data, CURLOPT_HTTPHEADER => array( 'Authorization: Basic ' . base64_encode($razorpay_key_id . ':' . $razorpay_secret), "Content-Type: application/json" ), )); $response = curl_exec($curl); $err = curl_error($curl); $res = json_decode($response);
排查方向
- 账户权限限制:你的Razorpay账户可能未开通拆分支付(Transfers)功能,或该功能被平台限制,需联系Razorpay支持确认权限状态。
- 交易状态不符:目标交易(
tr_id对应的支付)可能未处于captured状态,或已完成过拆分操作,只有已成功捕获且未拆分的交易才能执行该API。 - 关联账户有效性:检查
account字段的acc_...是否为已正确关联到主账户的有效子账户,且账户状态正常。 - 参数合法性校验:确认
on_hold_until时间戳为未来有效时间,amount符合平台拆分金额限制(如印度卢比的最小拆分额度),currency与原交易币种一致。 - 认证与API版本问题:核对
$razorpay_key_id和$razorpay_secret是否正确,认证头生成无误;同时确认使用的API版本支持该拆分操作。
内容的提问来源于stack exchange,提问作者sanjay solanki
相关产品推荐
相关产品推荐

