Понимание того, какие данные Stripe необходимы для проекта Vue и Laravel

#laravel #vue.js #stripe-payments #laravel-cashier

#laravel #vue.js #stripe-платежи #laravel-касса

Вопрос:

Я использую vue-stripe и пытаюсь настроить способ совершения одноразовых покупок. Я выполняю запрос токена, и он генерирует токен ниже, когда я ввожу дату номера cc и cvc.

 card:
    address_city: null
    address_country: null
    address_line1: null
    address_line1_check: null
    address_line2: null
    address_state: null
    address_zip: "42424"
    address_zip_check: "unchecked"
    brand: "Visa"
    country: "US"
    cvc_check: "unchecked"
    dynamic_last4: null
    exp_month: 4
    exp_year: 2024
    funding: "credit"
    id: "card_1IHHP9Jcu3r8UW8rqiLydyLZ"
    last4: "4242"
    name: null
    object: "card"
    tokenization_method: null
    __proto__: Object
client_ip: "137.187.202.50"
created: 1612481911
id: "tok_1IHHP9Jcu3r8UW8r81KS1HBH"
livemode: false
object: "token"
type: "card"
used: false
 

Я надеялся, что смогу взять этот токен и передать его Laravel Cashier для завершения оплаты. В моем контроллере я попытался

 $stripeCharge = auth()->user()->charge( 100, $request->card);
 

но это выдало мне ошибку

 Invalid string: {:id=>"card_1IHHP9Jcu3r8UW8rqiLydyLZ", :object=>"card", :address_zip=>"42424", :address_zip_check=>"unchecked", :brand=>"Visa", :country=>"US", :cvc_check=>"unchecked", :exp_month=>"4", :exp_year=>"2024", :funding=>"credit", :last4=>"4242"}"
 

поэтому вместо этого я попытался использовать

 $stripeCharge = auth()->user()->charge( 100, $request->id);
 

но он сказал

 A token may not be passed in as a PaymentMethod. Instead, use payment_method_data with type=card and card[token]=tok_1IHHSfJcu3r8UW8rsTWenxiT.
 

Итак, я попытался

 axios.post('/purchase', {
                    payment_method_data: {
                        card: {
                            token: token.id
                        },
                    }
                })
 

но это выдает ошибку

 message: "You cannot confirm this PaymentIntent because it's missing a payment method. You can either update the PaymentIntent with a payment method and then confirm it again, or confirm it again directly with a payment method."
 

Я чувствую, что я близок, но просто не понимаю, чего хочет Stripe и что отправляет Laravel, когда я делаю заряд. Я был бы рад любой помощи!

Ответ №1:

Вам нужно создать способ оплаты в Vue, а не токен: https://stripe.com/docs/js/payment_methods/create_payment_method

Комментарии:

1. Понятно, хорошо, я спросил vuestripe.com разработчики плагинов, если бы был способ сгенерировать платеж create вместо токена. В чем разница между токеном и способом оплаты?

2. В основном это: stripe.com/docs/payments/payment-intents/migration