Я использую Ax ios для активации подписки PayPal, поскольку NODE SDK
не поддерживает активацию подписки. Для этого я создал этот метод, который генерирует PayPal
токен доступа:
let getAccessToken = async () => {
return await axios(options).then((response) => {
return response.data.access_token
});
}
, опции содержат следующие детали:
const options = {
method: 'post',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Access-Control-Allow-Credentials': true
},
data: qs.stringify(data),
auth: {
username: PAYPAL_CLIENT_ID,
password: PAYPAL_CLIENT_SECRET
},
url: 'https://api.sandbox.paypal.com/v1/oauth2/token'
}
это работает нормально, но я Возникли некоторые проблемы с активацией подписки, вот метод, который обрабатывает это:
let activateSubscription = async (accessToken, subscriptionId) => {
return await axios.post(
`${baseURL}/v1/billing/subscriptions/${subscriptionId}/activate`,
{
headers: {
"Authorization": `Bearer ${accessToken}`,
"Content-Type": 'application/json'
}
}).then((data) => {
return true;
})
.catch((error) => {
console.log(error.response.data);
return false;
});
}
По сути, я передаю сгенерированные accessToken
и subscriptionId
, но в качестве ответа получаю следующее:
{
name: 'AUTHENTICATION_FAILURE',
message: 'Authentication failed due to invalid authentication credentials or a missing Authorization header.',
links: [
{
href: 'https://developer.paypal.com/docs/api/overview/#error',
rel: 'information_link'
}
]
}
Мое подозрение было в том, что сгенерированный токен был неверным, поэтому я попробовал его в почтальоне, отправляющем этот запрос:
{{host}}/v1/billing/subscriptions/I-7D10FGKVNMD0/activate
, а возвращаемое содержимое - 204
, что нормально в соответствии с тем, что делают c говорит здесь .
Запрос кажется правильным, что я делаю не так?