Я пытаюсь интегрировать платежный шлюз в свое приложение. Их документы (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),
});
@ Квентин, ты имеешь в виду account: 'anccount',
?
Нет, `-u <YOUR_API_KEY>:<YOUR_SECRET_KEY> ` (который вы не включили в свой JS, но который понадобится для доступа к API). Это секрет по причине.
@Квентин, что мне тогда делать? сохранить его в конце и получить его?
@ Квентин, как мне отправить ключ?
Свяжитесь с api.razorpay.com из вашего бэкенда после того, как вы утвердите запрос от клиента.
@ Квентин, я не понимаю .. что вы подразумеваете под «одобрил запрос от клиента»
Предположительно, вы хотите установить некоторые условия, прежде чем переводить деньги.
-d/--data
(HTTP) Sends the specified data in a POST request to the HTTP server, in the same way that a browser does when a user has filled in an HTML form and presses the submit button. This will cause curl to pass the data to the server using the content-type application/x-www-form-urlencoded. Compare to -F/--form.
Теперь посмотрите ваш код:
data: angular.toJson(payData),
JSON не является application/x-www-form-urlencoded!
Вам необходимо закодировать данные в ожидаемом формате.
Теперь см. Как заставить Angular2 выполнять POST с помощью x-www-form-urlencoded в другом месте Stackoverflow для реализации решения.
Предоставление ключей от вашей учетной записи всем, кто посещает ваш сайт, кажется довольно серьезной проблемой безопасности.