Как отправить данные в апи

Я пытаюсь интегрировать платежный шлюз в свое приложение. Их документы (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),
  });

Предоставление ключей от вашей учетной записи всем, кто посещает ваш сайт, кажется довольно серьезной проблемой безопасности.

Quentin 09.04.2019 15:59

@ Квентин, ты имеешь в виду account: 'anccount',?

Le guy 09.04.2019 16:06

Нет, `-u <YOUR_API_KEY>:<YOUR_SECRET_KEY> ` (который вы не включили в свой JS, но который понадобится для доступа к API). Это секрет по причине.

Quentin 09.04.2019 16:07

@Квентин, что мне тогда делать? сохранить его в конце и получить его?

Le guy 09.04.2019 16:55

@ Квентин, как мне отправить ключ?

Le guy 09.04.2019 16:55

Свяжитесь с api.razorpay.com из вашего бэкенда после того, как вы утвердите запрос от клиента.

Quentin 09.04.2019 16:57

@ Квентин, я не понимаю .. что вы подразумеваете под «одобрил запрос от клиента»

Le guy 09.04.2019 17:31

Предположительно, вы хотите установить некоторые условия, прежде чем переводить деньги.

Quentin 09.04.2019 17:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
8
1 094
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

См. руководство по завивке:

-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 для реализации решения.

Другие вопросы по теме