Search for PHP example new stripe “checkout” integration stripe-php

前端 未结 3 1193
孤城傲影
孤城傲影 2021-02-09 04:31

What do I have to change in my code to immigrate from legacy stripe checkout to the new checkout?? I am confused with their wording. And most examples I find are old (2015-1016.

3条回答
  •  野趣味
    野趣味 (楼主)
    2021-02-09 05:17

    Basic setup (you can build it up from here)

    Back-end:

    Update your Stripe PHP Library.

    Change from \Stripe\Charge to \Stripe\PaymentIntent following this format:

    $charge = \Stripe\Charge::create([
        'source' => $token_id,
        'amount' => $amount,
        'currency' => 'usd',
    ]);
    

    $intent = \Stripe\PaymentIntent::create([
            'payment_method_data' => [
                'type' => 'card',
                'card' => ['token' => $token_id],
            ],
            'amount' => $amount,
            'currency' => 'usd',
            'confirmation_method' => 'manual',
            'confirm' => true,
        ]);
    

    Front-end:

    Update your Stripe JS to use v3.

    
    

    Update JS code that handles your payment form:

    document.addEventListener("DOMContentLoaded", function(event) {
        var stripe = Stripe('xxxxxxxxxx'); // test publishable API key
        var elements = stripe.elements();
    
        var card = elements.create('card');
        // Add an instance of the card UI component into the `card-element` 
    card.mount('#card-element'); // Handle events and errors card.addEventListener('change', function(event) { var displayError = document.getElementById('card-errors'); if (event.error) { displayError.textContent = event.error.message; } else { displayError.textContent = ''; } }); function stripeTokenHandler(token) { // Insert the token ID into the form so it gets submitted to the server var form = document.getElementById('payment-form'); var hiddenInput = document.createElement('input'); hiddenInput.setAttribute('type', 'hidden'); hiddenInput.setAttribute('name', 'stripeToken'); hiddenInput.setAttribute('value', token.id); form.appendChild(hiddenInput); // Submit the form form.submit(); } function createToken() { stripe.createToken(card).then(function(result) { if (result.error) { // Inform the user if there was an error var errorElement = document.getElementById('card-errors'); errorElement.textContent = result.error.message; } else { // Send the token to your server stripeTokenHandler(result.token); } }); }; // Create a token when the form is submitted. var form = document.getElementById('payment-form'); form.addEventListener('submit', function(e) { e.preventDefault(); createToken(); }); });

    Edit your HTML form:

        

提交回复
热议问题