如何将数据发送到api

时间:2019-04-09 13:54:54

标签: javascript

我正在尝试将支付网关集成到我的应用程序中。他们的文档(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),
  });

1 个答案:

答案 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,了解该解决方案的实现。