简体   繁体   中英

Stripe Checkout is not defined reference error

I am trying to put Stripe into my web page to accept payments. But whenever I load the page I get an error saying that stripeCheckout is not defined. I know this has to do with the library imported in one of my script tags, but I am not sure why it is showing up as undefined. The library imported I thought was correct. Here is my code:

    <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">





    <!-- CSS Link -->
    <link rel="stylesheet" href="styles.css">

    <title>Store</title>

    <script src="https://checkout.stripe.com/checkout.js" defer></script>
<script>
    var stripePublicKey = '<%= stripePublicKey %>'
</script>
<script src="store.js" defer></script>
</head>

and this in my store.js file

const stripeHandler = stripeCheckout.configure({
    key: stripePublicKey,
    locale: 'auto',
    token: function(token){

    }
})

// Removes cart items after they are purchased
const purchaseItems = () => {
    // let cartItems = document.getElementsByClassName('cart-items')[0]
    // while(cartItems.hasChildNodes()){
    //     cartItems.removeChild(cartItems.firstChild)
    // }
    // updateCartTotal()

    let priceElement = document.getElementsByClassName('cart-total-price')[0]
    let price = parseFloat(priceElement.innerText.replace('$', '')) * 100
    stripeHandler.open({
        amount: price
    })
}

I believe that that particular Stripe checkout API (and script) is now deprecated.

Here's a link to the docs for the new APIs: https://stripe.com/docs/payments/checkout/migration#client-products

Example from docs:

// client.html
<script src="https://js.stripe.com/v3"></script>
<button id="checkout-button">Pay</button>

// client.js
var stripe = Stripe('YOUR_API_KEY');

var checkoutButton = document.querySelector('#checkout-button');
checkoutButton.addEventListener('click', function () {
  stripe.redirectToCheckout({
    items: [{
      // Define the product and SKU in the Dashboard first, and use the SKU
      // ID in your client-side code.
      sku: 'sku_123',
      quantity: 1
    }],
    successUrl: 'https://www.example.com/success',
    cancelUrl: 'https://www.example.com/cancel'
  });
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM