首页 > 解决方案 > 如何将 3D 安全条带支付与 nodejs 集成?

问题描述

我正在尝试集成条纹 3D 安全支付。我也成功集成,但是当我尝试进行超过 10,000.00 美元的交易时,它会给出错误,例如'Amount for a export transaction must be less than $10,000.00'

我的代码如下,

try {
 paymentIntent = await stripe.paymentIntents.create({
    amount: Math.round(amount * 100),
    payment_method_types: ['card'],
    currency: "usd",
    customer: customer_id,
    payment_method: card_id,
    off_session: true,
    confirm: true,
    shipping: {
        name: "Jenny Rosen",
        address: {
            line1: "510 Townsend St",
            postal_code: "98140",
            city: "San Francisco",
            state: "CA",
            country: "US"
        }
    },
    description: JSON.stringify(description)
 });

 return {
    succeeded: true,
    clientSecret: paymentIntent.client_secret,
 }

 } catch (err) {

 if (err.code === "authentication_required") {

    return {
        error: "authentication_required",
        paymentMethod: err.raw.payment_method.id,
        payment_method_types: ['card'],
        clientSecret: err.raw.payment_intent.client_secret,
        amount: amount * 100,
        card: {
            brand: err.raw.payment_method.card.brand,
            last4: err.raw.payment_method.card.last4
        }
    }
 } else if (err.code) {
    return {
        error: err.code,
    }
 } else {
    console.log("Unknown error occurred", err);
 }
}

在这里,我根据条带文档将我的金额转换为美分,例如,如果我想支付 100 美元,那么我需要将 100*100 传递给条带。

标签: javascriptnode.jsstripe-payments

解决方案


您看到的错误实际上与出口交易的性质有关,而不是与 3DS 要求有关。

在印度,“出口”交易是根据交付货物或提供服务的目的地来定义的。要使交易成为“出口交易”,目的地必须在印度境外。这与使用的付款方式或买家的家庭住址无关。

在您的测试代码的情况下,送货地址是美国地址,因此这被视为出口交易,由于印度法规,硬交易限额为 10,000 美元。

要在您的测试代码中解决此问题,只需将送货地址更改为印度地址。


推荐阅读