在 React 中集成 Stripe 3D 安全支付

时间:2021-01-05 16:16:57

标签: javascript reactjs stripe-payments

我的应用程序中有条带网关付款,但在 (1.1.2021) 欧盟应用了新的安全限制之后,它不适用于 3D 安全信用卡。所以我尝试添加 3Ds auth,但我在我的服务器上收到服务器错误 500 并拒绝在条带上付款。我的应用程序基于 Cezerin2 存储库。我也尝试通过 google pay 实现卡支付,但我遇到了同样的错误。对不起,我对服务器端应用程序没有太多经验。 这是我的代码:

import stripePackage from 'stripe';
import OrdersService from '../services/orders/orders';
import OrdertTansactionsService from '../services/orders/orderTransactions';

const getPaymentFormSettings = options => {
    const { gateway, gatewaySettings, order, amount, currency } = options;
    const formSettings = {
        order_id: order.id,
        amount,
        currency,
        email: order.email,
        public_key: gatewaySettings.public_key
    };
    return Promise.resolve(formSettings);
};

const processOrderPayment = async ({ order, gatewaySettings, settings }) => {
    try {
        const stripe = stripePackage(gatewaySettings.secret_key);
        const charge = await stripe.charges.create({
            amount: order.grand_total * 100,
            currency: settings.currency_code,
               **type: 'three_d_secure',
               three_d_secure: {
               card: source_id, #src_xcvxcvxcvc
                  },
               redirect: {
            return_url: return_url
                       },**
            description: `Order #${order.number}`,
            statement_descriptor: `Order #${order.number}`,
            metadata: {
                order_id: order.id
            },
            source: order.payment_token
        });

        // status: succeeded, pending, failed
        const paymentSucceeded =
            charge.status === 'succeeded' || charge.paid === true;

        if (paymentSucceeded) {
            await OrdersService.updateOrder(order.id, {
                paid: true,
                date_paid: new Date()
            });
        }

        await OrdertTansactionsService.addTransaction(order.id, {
            transaction_id: charge.id,
            amount: charge.amount / 100,
            currency: charge.currency,
            status: charge.status,
            details: charge.outcome.seller_message,
            success: paymentSucceeded
        });

        return paymentSucceeded;
    } catch (err) {
        // handle errors
        return false;
    }
};

export default {
    getPaymentFormSettings,
    processOrderPayment
};```

0 个答案:

没有答案
相关问题