· 5 years ago · May 27, 2020, 01:40 AM
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_80emtxCEoqaI0zvqt6EdHWBo00fBpPG5FJ");
25// The items the customer wants to buy
26var purchase = {
27 items: [{ id: "xl-tshirt" }]
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 'Accept': 'application/json',
35 'Content-Type': 'application/json',
36 },
37 body: JSON.stringify({})
38 })
39 .then(function(result) {
40 return result.json();
41 })
42 .then(function(data) {
43 var elements = stripe.elements();
44 var style = {
45 base: {
46 color: "#32325d",
47 fontFamily: 'Arial, sans-serif',
48 fontSmoothing: "antialiased",
49 fontSize: "16px",
50 "::placeholder": {
51 color: "#32325d"
52 }
53 },
54 invalid: {
55 fontFamily: 'Arial, sans-serif',
56 color: "#fa755a",
57 iconColor: "#fa755a"
58 }
59 };
60 var card = elements.create("card", { style: style });
61 // Stripe injects an iframe into the DOM
62 card.mount("#card-element");
63 card.on("change", function (event) {
64 // Disable the Pay button if there are no card details in the Element
65 document.querySelector("button").disabled = event.empty;
66 document.querySelector("#card-errors").textContent = event.error ? event.error.message : "";
67 });
68 var form = document.getElementById("payment-form");
69 form.addEventListener("submit", function(event) {
70 event.preventDefault();
71 // Complete payment when the submit button is clicked
72 payWithCard(stripe, card, data.clientSecret);
73 });
74 });
75// Calls stripe.confirmCardPayment
76// If the card requires authentication Stripe shows a pop-up modal to
77// prompt the user to enter authentication details without leaving your page.
78var payWithCard = function(stripe, card, clientSecret) {
79 loading(true);
80 stripe
81 .confirmCardPayment(clientSecret, {
82 payment_method: {
83 card: card
84 }
85 })
86 .then(function(result) {
87 if (result.error) {
88 // Show error to your customer
89 showError(result.error.message);
90 } else {
91 // The payment succeeded!
92 orderComplete(result.paymentIntent.id);
93 }
94 });
95};
96/* ------- UI helpers ------- */
97// Shows a success message when the payment is complete
98var orderComplete = function(paymentIntentId) {
99 loading(false);
100 document
101 .querySelector(".result-message a")
102 .setAttribute(
103 "href",
104 "https://dashboard.stripe.com/test/payments/" + paymentIntentId
105 );
106 document.querySelector(".result-message").classList.remove("hidden");
107 document.querySelector("button").disabled = true;
108};
109// Show the customer the error from Stripe if their card fails to charge
110var showError = function(errorMsgText) {
111 loading(false);
112 var errorMsg = document.querySelector("#card-errors");
113 errorMsg.textContent = errorMsgText;
114 setTimeout(function() {
115 errorMsg.textContent = "";
116 }, 4000);
117};
118// Show a spinner on payment submission
119var loading = function(isLoading) {
120 if (isLoading) {
121 // Disable the button and show a spinner
122 document.querySelector("button").disabled = true;
123 document.querySelector("#spinner").classList.remove("hidden");
124 document.querySelector("#button-text").classList.add("hidden");
125 } else {
126 document.querySelector("button").disabled = false;
127 document.querySelector("#spinner").classList.add("hidden");
128 document.querySelector("#button-text").classList.remove("hidden");
129 }
130};
131 </script>
132 <p id="card-errors" role="alert"></p>
133 <p class="result-message hidden">
134 Payment succeeded, see the result in your
135 <a href="" target="_blank">Stripe dashboard.</a> Refresh the page to pay again.
136 </p>
137 </form>
138 </body>
139</html>