Работа с Stripe и Node / Express для зарядки существующего клиента без карты - PullRequest
0 голосов
/ 23 октября 2018

У меня есть клиенты, созданные в Stripe без карты из внешней интеграции.

Таким образом, объект клиента существует, но у него нет карты.

Я бы хотел, чтобы клиентчтобы иметь возможность перейти на страницу оплаты и произвести оплату через кассу.Однако идентификатор клиента уже известен.Поэтому мы просто просим клиента ввести его «ссылку», а затем ввести карту и оплатить.

У меня есть этот код:

app.post('/charge', (req, res) => {

  stripe.charges.create({
    amount: 4000,
    description: 'Sample Charge',
    currency: 'gbp',
    customer: req.body.stripeId
  },function(err,result){

    console.log(err);

    res.render('charge'});
  });
});

Однако это возвращает ошибку:

Error: Cannot charge a customer that has no active card

Я думал, что весь смысл оформления заказа состоит в том, что он создал карточку для покупателя.

Как сохранить карточку, введенную через кассу, у указанного покупателя и снять ее?

Код оформления заказа:

 <script
    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
    data-key="pk_test_Some_key"
    data-email="customer email"
    data-billing-address="true"
    data-allow-remember-me="false"
    data-name="Company Limited"
    data-description="Example charge"
    data-image="an-image.jpg"
    data-locale="auto"
    data-zip-code="true"
    data-currency="gbp">
  </script>

1 Ответ

0 голосов
/ 23 октября 2018

Я думал, что весь смысл оформления заказа заключается в том, что он создал карточку для клиента.

Он создает карточку, но вам все равно нужно прикрепить ее к покупателю самостоятельно:

stripe.customers.update(req.body.stripeId, { // I assume this is the customer ID (`cus_xxx`)
  source: req.body.stripeToken // `tok_xxx` generated by Stripe Checkout
}, function(err, customer) {
  stripe.charges.create({
    amount: 4000,
    description: 'Sample Charge',
    currency: 'gbp',
    customer: customer.id
  }) ... 
});

https://stripe.com/docs/saving-cards + https://stripe.com/docs/api/customers/update?lang=node#update_customer-source

...