· 5 years ago · May 26, 2020, 07:32 PM
1<!DOCTYPE html>
2<html lang="en">
3 <head>
4 <meta charset="utf-8" />
5 <title>Accept a card payment</title>
6 <meta name="description" content="A demo of a card payment on Stripe" />
7 <meta name="viewport" content="width=device-width, initial-scale=1" />
8 <link rel="stylesheet" href="https://s3-eu-west-1.amazonaws.com/dev.appdrag.com/simplibuy-50918f/preview/global.css" />
9 <script src="https://js.stripe.com/v3/"></script>
10 </head>
11 <body>
12 <!-- Display a payment form -->
13 <form id="payment-form">
14 <input type="text" id="amount" name="amount" placeholder="$ 0.00" value="101.22" required>
15 <input type="text" id="stripeAccount" name="stripeAccount" placeholder="stripeAccount" value="acct_1Gn71TD3JtDR5oC5" required>
16 <label for="card-element">CREDIT/DEBIT CARD NUMBER</label>
17 <div id="card-element"><!--Stripe.js injects the Card Element--></div>
18 <button id="submit">
19 <div class="spinner hidden" id="spinner"></div>
20 <span id="button-text">Pay</span>
21 </button>
22 <script>
23 // A reference to Stripe.js initialized with your real test publishable API key.
24var stripe = Stripe("pk_test_vWbrzqOmI6mJzKH7QdmPZda200uKxdIYbR");
25// The items the customer wants to buy
26var purchase = {
27 items: [{ id: "clientSecret" }]
28};
29// Disable the button until we have Stripe set up on the page
30document.querySelector("button").disabled = true;
31fetch("https://simplibuy-50918f.appdrag.site/api/STRIPE-PAYMENTINTENT", {
32 method: "POST",
33 headers: {
34 "Content-Type": "application/json"
35 },
36 body: JSON.stringify(purchase)
37})
38 .then(function(result) {
39 return result.json();
40 })
41 .then(function(data) {
42 var elements = stripe.elements();
43 var style = {
44 base: {
45 color: "#32325d",
46 fontFamily: 'Arial, sans-serif',
47 fontSmoothing: "antialiased",
48 fontSize: "16px",
49 "::placeholder": {
50 color: "#32325d"
51 }
52 },
53 invalid: {
54 fontFamily: 'Arial, sans-serif',
55 color: "#fa755a",
56 iconColor: "#fa755a"
57 }
58 };
59 var card = elements.create("card", { style: style });
60 // Stripe injects an iframe into the DOM
61 card.mount("#card-element");
62 card.on("change", function (event) {
63 // Disable the Pay button if there are no card details in the Element
64 document.querySelector("button").disabled = event.empty;
65 document.querySelector("#card-errors").textContent = event.error ? event.error.message : "";
66 });
67 var form = document.getElementById("payment-form");
68 form.addEventListener("submit", function(event) {
69 event.preventDefault();
70 // Complete payment when the submit button is clicked
71 payWithCard(stripe, card, data.clientSecret);
72 });
73 });
74// Calls stripe.confirmCardPayment
75// If the card requires authentication Stripe shows a pop-up modal to
76// prompt the user to enter authentication details without leaving your page.
77var payWithCard = function(stripe, card, clientSecret) {
78 loading(true);
79 stripe
80 .confirmCardPayment(clientSecret, {
81 payment_method: {
82 card: card
83 }
84 })
85 .then(function(result) {
86 if (result.error) {
87 // Show error to your customer
88 showError(result.error.message);
89 } else {
90 // The payment succeeded!
91 orderComplete(result.paymentIntent.id);
92 }
93 });
94};
95/* ------- UI helpers ------- */
96// Shows a success message when the payment is complete
97var orderComplete = function(paymentIntentId) {
98 loading(false);
99 document
100 .querySelector(".result-message a")
101 .setAttribute(
102 "href",
103 "https://dashboard.stripe.com/test/payments/" + paymentIntentId
104 );
105 document.querySelector(".result-message").classList.remove("hidden");
106 document.querySelector("button").disabled = true;
107};
108// Show the customer the error from Stripe if their card fails to charge
109var showError = function(errorMsgText) {
110 loading(false);
111 var errorMsg = document.querySelector("#card-errors");
112 errorMsg.textContent = errorMsgText;
113 setTimeout(function() {
114 errorMsg.textContent = "";
115 }, 4000);
116};
117// Show a spinner on payment submission
118var loading = function(isLoading) {
119 if (isLoading) {
120 // Disable the button and show a spinner
121 document.querySelector("button").disabled = true;
122 document.querySelector("#spinner").classList.remove("hidden");
123 document.querySelector("#button-text").classList.add("hidden");
124 } else {
125 document.querySelector("button").disabled = false;
126 document.querySelector("#spinner").classList.add("hidden");
127 document.querySelector("#button-text").classList.remove("hidden");
128 }
129};
130 </script>
131 <p id="card-errors" role="alert"></p>
132 <p class="result-message hidden">
133 Payment succeeded, see the result in your
134 <a href="" target="_blank">Stripe dashboard.</a> Refresh the page to pay again.
135 </p>
136 </form>
137 </body>
138</html>