Заголовок: невозможно ли отменить транзакцию, когда мой сервер находится в состоянии ошибки
Я пытаюсь сделать PayPal Checkout Docs .
Это код клиента
import React, { Component } from 'react';
import axios from 'axios';
import SmartPaymentButtons, { PayPalSDKWrapper } from 'react-smart-payment-buttons';
class PayPal extends Component {
render() {
return (
<PayPalSDKWrapper clientId="<client_ID>">
<SmartPaymentButtons
createOrder={(data, actions) => {
return actions.order.create({
purchase_units: [{
amount: {
currency_code: "USD",
value: "0.09"
}
}]
});
}}
onApprove={ (data, actions) => {
return actions.order.capture()
.then(async (details) => {
alert("Transaction completed by " + details.payer.name.given_name);
return axios({
method: 'POST',
url: 'http://localhost:5002/paypal/paypal-transaction-complete',
data: {
orderID: data.orderID
},
}).then(res => {
return res.data;
})
});
}}
/>
</PayPalSDKWrapper>
);
}
}
export default PayPal;
А это код nodejs
const checkoutNodeJssdk = require('@paypal/checkout-server-sdk');
const payPalClient = require('../Common/payPalClient');
module.exports = async function handleRequest(req, res) {
const orderID = req.body.orderID;
let request = new checkoutNodeJssdk.orders.OrdersGetRequest(orderID);
let order;
try {
order = await payPalClient.client().execute(request);
} catch (err) {
console.error(err);
return res.send(500);
}
// sending error on purpose
if (order.result.purchase_units[0].amount.value !== '220.00') {
return res.send(400);
}
// Save the transaction in your database
// <...saving orderID code...>
return res.send(200);
}
Я специально допустил ошибку на своем сервере. Так что orderID
не сохранил. Это то, что я ожидал. Но PayPal заплатил деньги. Я не получил orderID в своей БД, но уже оплатил PayPal.
Есть ли способ решить эту проблему?