Нельзя ли отменить транзакцию, когда мой сервер находится в состоянии ошибки - PullRequest
0 голосов
/ 28 июня 2019

Заголовок: невозможно ли отменить транзакцию, когда мой сервер находится в состоянии ошибки

Я пытаюсь сделать 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.

Есть ли способ решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...