#paypal #paypal-sandbox #paypal-rest-sdk
#paypal #paypal-песочница #paypal-rest-sdk
Вопрос:
Потратив целый день на эту опасную вещь, я не могу понять, как одобрена транзакция, я получаю идентификатор заказа, но плата не взимается (не для покупателя или получателя).). Я нахожусь в живой среде после успешного тестирования в песочнице.
Итак, код длинный, но в основном на стороне сервера мы сначала создаем транзакцию:
const request = new paypal.orders.OrdersCreateRequest();
request.prefer("return=representation");
request.requestBody({
intent: 'CAPTURE', //CAPTURE
purchase_units: [{
amount: {
currency_code: currency,
value: finalPrice
},
payee: {
email_address: payee
},
shipping: shipObj
}]
});
и позже мы одобряем заказ с помощью PayPal :
let request = new paypal.orders.OrdersGetRequest(orderID);
let order;
try {
order = await client.execute(request);
}
catch (err) {
console.error("error",err);
return res.sendStatus(500);
}
На данный момент я получаю order.result.status
= ОДОБРЕНО .
Это живая среда (клиент и секретные ключи). Как вы можете отправить одобрение разработчику и указать идентификатор заказа, но не взимать плату?Это такая опасная вещь, и она может буквально разрушить бизнес.
Итак, я узнал, что есть ссылка на ваш идентификатор заказа :
https://api.paypal.com/v2/checkout/orders/4PE63643WC652674S
Если вы посмотрите на эту страницу, вы получите это :
"message":"Authentication failed due to invalid authentication credentials or a missing Authorization header."
Теперь только бог знает, что это значит, и это сообщение об ошибке на странице идентификатора заказа, что означает, что идентификатор заказа ничего не значит??
Итак, я также проверяю ссылку paypal с моим идентификатором клиента (должно быть идентично моему идентификатору клиента в sdk, верно?) :
https://www.paypal.com/sdk/js?client-id=xxxxxxxxxamp;merchant-id=xxx@yyyy.comamp;disable-funding=credit,cardamp;currency=USD
Который кажется нормальным и содержит правильное электронное письмо.
Комментарии:
1. Вам нужно создать заказ, попросить клиента одобрить заказ через окно PayPal, затем вы можете зафиксировать заказ — не похоже, что вы фиксируете его где угодно (новый paypal.orders. Запрос OrdersCaptureRequest(OrderID))
2. конечно, я это делаю, появляется окно с адресом и ценой, пользователь входит в систему, одобряет продажу, затем это происходит. У меня есть ordersscreaterequest и OrdersGetRequest, поэтому, когда приходит запрос OrdersCaptureRequest?
3. Я не вижу, где вы фиксируете заказ?
4. насколько глупым я мог быть. Извините. По какой-то причине я удалил этот блок. Вау. Большое спасибо.
Ответ №1:
Похоже, вы, возможно, решили проблему и пропустили шаг захвата, который является обязательным шагом для совершения транзакции и всегда должен выполняться после утверждения.
Просто чтобы рассмотреть наилучшие способы интеграции, если вы делаете это с помощью вызовов API с сервера, вам нужно настроить make два маршрута на вашем сервере, один для «Настройки транзакции» и один для «Захвата транзакции», описанный здесь: https://developer.paypal.com/docs/checkout/reference/server-integration /
Тогда лучший поток одобрения клиентов JS для сопряжения с этими серверными маршрутами таков: https://developer.paypal.com/demo/checkout/#/pattern/server