我正在尝试将支付网关集成到我的应用程序中。他们的文档(https://razorpay.com/docs/route/api-reference/#funds-movement-in-linked-accounts)说我必须像这样发送请求:
curl https://api.razorpay.com/v1/payments/pay_AlSXPEsTyXyxYx/transfers \
-u <YOUR_API_KEY>:<YOUR_SECRET_KEY> \
-d 'transfers[0][account]=acc_BYYYYJRfs1234S' \
-d 'transfers[0][amount]=1000' \
-d 'transfers[0][currency]=INR' \
-d 'transfers[0][notes][roll_no]=IEC2011025' \
-d 'transfers[0][notes][name]=Gaurav Kumar' \
-d 'transfers[0][linked_account_notes][0]=roll_no' \
-d 'transfers[1][account]=acc_BYYYYJRfs1234S' \
-d 'transfers[1][amount]=1000' \
-d 'transfers[1][currency]=INR' \
-d 'transfers[1][notes][roll_no]=IEC2011026' \
-d 'transfers[1][notes][name]=Saurav Kumar'
我将数据作为对象发送并对其进行angular.toJson()
。我收到400个错误的请求
let payData =
{
account: 'anccount',
rzp_test_abcd: 'tyaef', //key
amount: parseInt($scope.amountPayingNow*100),
}
调用其API:
$http({
method: "POST",
url: 'https://api.razorpay.com/v1/payments/'+ transaction.razorpay_payment_id + '/transfers',
data: angular.toJson(payData),
});
答案 0 :(得分:0)
请参见the curl manual:
-d /-数据
(HTTP)将POST请求中的指定数据发送到HTTP服务器,就像用户填写HTML表单并按Submit按钮时浏览器所做的一样。这将导致curl使用内容类型application / x-www-form-urlencoded将数据传递到服务器。比较-F /-form。
现在查看您的代码:
data: angular.toJson(payData),
JSON不是application / x-www-form-urlencoded!
您需要以预期的格式对数据进行编码。
现在请参阅Stackoverflow其他地方的How to force Angular2 to POST using x-www-form-urlencoded,了解该解决方案的实现。