如何使用 React Native 从 stripe 中使用 createPaymentMethod 获取 paymentMethodId?

问题描述 投票:0回答:1

我正在使用@stripe/stripe-react-native,并且已经使用公钥将条带提供程序传递给我的

app.js
,到目前为止没有任何问题。

在我的组件中,我使用

CardField
,并使用
cardDetails
设置
useState

我想用这个获得

paymentMethodId

const {error, paymentMethod} = await stripe.createPaymentMethod({
  paymentMethodType: 'Card',
  paymentMethodData: {
     cardDetails,
     billingDetails: {
     name: checkout.payment.fullName,
  },

});
if (error) {
  console.log(error);
  return;
}

但是无法获取它,如日志所示:

LOG  {"code": "Failed",
      "declineCode": null,
      "localizedMessage": "Card details not complete",
      "message": "Card details not complete",
      "stripeErrorCode": null,
      "type": null}

cardDetails
等于:

LOG  {"brand": "Visa",
      "complete": true,
      "expiryMonth": 5,
      "expiryYear": 25,
      "last4": "4242",
      "validCVC": "Valid",
      "validExpiryDate": "Valid",
      "validNumber": "Valid"}

我尝试了多种方法来编写参数,但我看到

createPaymentMethod
正在等待这个:

export declare type CardParams = {
    paymentMethodType: 'Card';
    paymentMethodData?: {
        token?: string;
        billingDetails?: BillingDetails;
    };
} | {
    paymentMethodType: 'Card';
    paymentMethodData: {
        paymentMethodId: string;
        cvc?: string;
        billingDetails?: BillingDetails;
    };
};

其中不包括卡详细信息。

我很困惑,错误告诉我要提供卡的详细信息,因为知道它不是由

await
createPaymentMethod
编辑的。

我还了解到我不需要提供银行卡详细信息,但我不明白如果不提供,我将如何获得

paymentMethodId
。无论如何我都尝试过,结果是相同的错误消息。

react-native parameters stripe-payments payment-method
1个回答
0
投票

SDK 应自动从

CardField
收集卡详细信息,因此您不需要显式传递这些信息。相反,您只传递额外的
billingDetails
(例如地址)。请参阅使用
CardField
此处的示例:

const billingDetails: BillingDetails = {
  email: '[email protected]',
  phone: '+48888000888',
  address: {
    city: 'Houston',
    country: 'US',
    line1: '1459  Circle Drive',
    line2: 'Texas',
    postalCode: '77063',
  },
}; // mocked data for tests

// 2. Create payment method
const { paymentMethod, error } = await createPaymentMethod({
  paymentMethodType: 'Card',
  paymentMethodData: { billingDetails },
});
© www.soinside.com 2019 - 2024. All rights reserved.