Stripe verifyCardSetup 包含付款方式的自定义卡数据

Gil*_*Yue 5 stripe-payments react-native

stripe.confirmCardSetup(clientSecret,
        {
          payment_method: {
            card: {
               number: this.state.form.values.number,
            exp_month: this.state.form.values.expiry.substring(0,2),
            exp_year: this.state.form.values.expiry.substring(3,5),
            cvc: this.state.form.values.cvc,
             },
            billing_details: {
              name: name,
            },
          },
        }
      ).then(function(result) {...})
Run Code Online (Sandbox Code Playgroud)

我试图创建一种付款方式,可供客户稍后通过 stripe 的confirmCardSetup 使用,不使用 stripe 元素,而是将卡信息(号码、cvc、到期日期)传递到付款方式字段中。它不起作用,我想知道我是否可以做这种性质的事情?(我们使用的是 React Native,不想使用 Tipsi-Stripe)

Bri*_*lli 7

我想出了如何进行这项工作。如果其他人遇到同样的问题,以下是解决方案:

var paymentMethod = {
  payment_method: {
    card: this.cardNumberElement,
    billing_details: {
      name: this.billingNameText.getValue()
    }
  }
};

stripe.confirmCardSetup(setupIntentSecret, paymentMethod)
      .then(function(result) { ... });
Run Code Online (Sandbox Code Playgroud)

如果您将该属性分配cardcardElement使用以下代码创建的对象,则此方法有效:

this.elements = this.stripe.elements();
this.cardNumberElement = this.elements.create('cardNumber');
this.cardNumberElement.mount('#card-number');
this.cardExpiryElement = this.elements.create('cardExpiry');
this.cardExpiryElement.mount('#card-expiry');
this.cardCvcElement = this.elements.create('cardCvc');
this.cardCvcElement.mount('#card-cvc');
Run Code Online (Sandbox Code Playgroud)

关键是您必须从同一个elements对象创建所有组件。这会将所有组件关联在一起,并将所有对象的所有信息发送到 Stripe API。