Преобразовать следующую команду Paypal curl в axios? - PullRequest
0 голосов
/ 19 ноября 2018

Как я могу преобразовать эту команду PayPal Curl в Axios?

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
-H "Accept: application/json" \
-H "Accept-Language: en_US" \
-u "client_id:secret" \
-d "grant_type=client_credentials"

Я использую vueAxios в vue, поэтому " this. ".

this.axios.post('https://api.sandbox.paypal.com/v1/oauth2/token',
    {'Accept': "application/json", 'Accept-Language': "en_US", 
    'XXXXXX': 'XXXXX', // my paypal client ID and client secret 
    'grant_type':'client_credentials'}
    )
    .then( response => {
        console.log("Response is: ", response);
    })
    .catch( error => {
        console.log("Error is :", error);
});

Я получаю эту ошибку:

 Error is : Error: Request failed with status code 401
    at createError (createError.js?16d0:16)
    at settle (settle.js?db52:18)
    at XMLHttpRequest.handleLoad (xhr.js?ec6c:77)

Я также попробовал это (что, кажется, лучше, но я все еще получаю ошибку 400):

 this.axios({ 
    method: 'POST', 
    url: 'https://api.sandbox.paypal.com/v1/oauth2/token', 
    headers: {
            'Accept': 'application/json',
            'Accept-Language': 'en_US',
            'Content-Type':'application/x-www-form-urlencoded'
    },
    auth: {
            username: '<XXXX My paypal client ID>',
            password: '<XXXX My paypal secret>'
    } ,
    data: {
        grant_type: 'client_credentials'
    },
})
.then(function(response) {console.log(response);})
.catch(function(response) {console.log(response);});

ОБНОВЛЕНИЕ - после некоторой справки из комментариев я попробовал следующий код, и на paypal возникла ошибка CORS (я установил nps-пакеты "cors", и ошибка cors сохраняется (как локально, так и при развертывании)).

Это отвечает на мой вопрос, но, как указано здесь , похоже, что Paypal не разрешает запросы непосредственно из браузера.

this.axios({
    withCredentials: true,
    url: 'https://api.sandbox.paypal.com/v1/oauth2/token',
    method: 'post',
    headers: { 
        'Accept': 'application/json', 
        'Accept-Language': 'en_US',
        'Content-Type':'application/x-www-form-urlencoded',
        'Access-Control-Allow-Origin': '*',
        },
    data: { 'grant_type':'client_credentials' },
    auth: {
        username: 'XXXXXXXX',
        password: 'XXXXXXXX'
    }
})

Сопутствующая документация:

CORS: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS

VueAxios: https://www.npmjs.com/package/vue-axios

Paypal dev: https://developer.paypal.com/docs/api/overview/#make-your-first-call

1 Ответ

0 голосов
/ 19 ноября 2018

Согласно axios GitHub docs :

this.axios({
  url: 'https://api.sandbox.paypal.com/v1/oauth2/token',
  method: 'post',
  headers: { 
       'Accept': 'application/json', 
       'Accept-Language': 'en_US',
       'Content-Type':'application/x-www-form-urlencoded',
       'Access-Control-Allow-Origin': '*', 
  },
  data: { 'grant_type':'client_credentials' },
  auth: {
    username: client_id,
    password: secret
  }
})
...