Advertisement
Guest User

Untitled

a guest
Feb 21st, 2020
232
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.77 KB | None | 0 0
  1. // A reference to Stripe.js
  2. var stripe;
  3.  
  4. // Disable the button until we have Stripe set up on the page
  5. document.querySelector("button").disabled = true;
  6.  
  7. fetch("/api/create_payment_intent", {
  8. method: "POST",
  9. headers: {
  10. "Content-Type": "application/json"
  11. },
  12. })
  13. .then(function(result) {
  14. return result.json();
  15. })
  16. .then(function(data) {
  17. return setupElements(data);
  18. })
  19. .then(function({ stripe, card, clientSecret }) {
  20.  
  21. var form = document.getElementById("payment-form");
  22. form.addEventListener("submit", function(event) {
  23. event.preventDefault();
  24. // Initiate payment when the submit button is clicked
  25. pay(stripe, card, clientSecret);
  26. });
  27. });
  28.  
  29. // Set up Stripe.js and Elements to use in checkout form
  30. var setupElements = function(data) {
  31. stripe = Stripe(data.publishableKey);
  32. var elements = stripe.elements();
  33.  
  34. var elementStyles = {
  35. base: {
  36. color: '#fff',
  37. fontFamily: 'Ubuntu, sans-serif',
  38. fontSize: '16px',
  39. '::placeholder': {
  40. color: '#fff',
  41. },
  42. },
  43. invalid: {
  44. color: '#fff',
  45. ':focus': {
  46. color: '#FA755A',
  47. },
  48. '::placeholder': {
  49. color: '#FFCCA5',
  50. },
  51. },
  52. };
  53.  
  54. var elementClasses = {
  55. focus: 'focus',
  56. empty: 'empty',
  57. invalid: 'invalid',
  58. };
  59.  
  60. var cardNumberElement = elements.create('cardNumber', {
  61. style: elementStyles,
  62. classes: elementClasses,
  63. });
  64. cardNumberElement.mount("#ccNumber-container");
  65. var cardExpiryElement = elements.create('cardExpiry', {
  66. style: elementStyles,
  67. classes: elementClasses,
  68. placeholder: "AY / YIL"
  69. });
  70. cardExpiryElement.mount("#ccExpiry-container");
  71. var cardCvcElement = elements.create('cardCvc', {
  72. style: elementStyles,
  73. classes: elementClasses,
  74. });
  75. cardCvcElement.mount("#ccCvc-container");
  76.  
  77. return {
  78. stripe: stripe,
  79. card: {
  80. number: cardNumberElement,
  81. exp_month: "07",
  82. exp_year: "20",
  83. cvc: cardCvcElement,
  84. },
  85. clientSecret: data.clientSecret
  86. };
  87. };
  88.  
  89. var pay = function(stripe, card, clientSecret) {
  90. changeLoadingState(true);
  91.  
  92. // Initiate the payment.
  93. // If authentication is required, confirmCardPayment will automatically display a modal
  94. stripe.confirmCardPayment(clientSecret, {
  95. payment_method: {
  96. card: card,
  97. billing_details:{
  98. name: "Kemal Dursun",
  99. }
  100. }
  101. })
  102. .then(function(result) {
  103. if (result.error) {
  104. // Show error to your customer
  105. showError(result.error.message);
  106. } else {
  107. // The payment has been processed!
  108. orderComplete(clientSecret);
  109. }
  110. });
  111. };
  112.  
  113. var orderComplete = function(clientSecret) {
  114. // Just for the purpose of the sample, show the PaymentIntent response object
  115. stripe.retrievePaymentIntent(clientSecret).then(function(result) {
  116. var paymentIntent = result.paymentIntent;
  117. var paymentIntentJson = JSON.stringify(paymentIntent, null, 2);
  118.  
  119. console.log(paymentIntentJson);
  120.  
  121. changeLoadingState(false);
  122. Alert("fas fa-check", "Tebrikler!", "Ödemeniz başarıyla tamamlandı!");
  123. });
  124. };
  125.  
  126. var showError = function(errorMsgText) {
  127. console.log(errorMsgText);
  128. };
  129.  
  130. // Show a spinner on payment submission
  131. var changeLoadingState = function(isLoading) {
  132. if (isLoading) {
  133. Wait("Lütfen bekleyin...");
  134. } else {
  135. Go();
  136. }
  137. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement