Я использую API PayPal для настройки оплаты подписки на моем сайте. Я знаю, что есть SDK узла PayPal, но, к сожалению, они не обновили его соответствующим образом и устарели, когда дело доходит до подписок.
Мне удалось получить токен доступа и использовать его для выполнения вызовов и т. Д., Однако нет смысла получать токен доступа каждый раз, когда я вызываю их API. Какой самый идеальный способ хранения самого токена доступа, времени истечения токена и времени создания токена. Время истечения и время создания токена будут использоваться для проверки того, не истек ли токен, прежде чем пытаться получить новый.
Я создал приведенный ниже js-файл, который будет использоваться через await paypal.getToken ()
async function getToken(){
return new Promise((resolve, reject) => {
if(//Token expired) {
request.post({
uri: "https://api.sandbox.paypal.com/v1/oauth2/token",
headers: {
"Accept": "application/json",
"Accept-Language": "en_US",
"content-type": "application/x-www-form-urlencoded"
},
auth: {
'user': clientID,
'pass': clientSecret,
},
form: {
"grant_type": "client_credentials"
}
}, function(error, response, body) {
if(error)
reject(new Error(error))
else {
//Set global variable or whats best option with the access token that was obtained - JSON.parse(body).access_token
//Set global variable or whats best option with the expiry time - SON.parse(body).expires_in
//Set global vairable or whats best option with the current time in MS - Date.now()
resolve(JSON.parse(body).access_token);
}
});
}else {
// resolve(config.paypal_access_token); //Retrieve access_token from global vairable or whats best option
}
});
}
module.exports.getToken = getToken;