Advertisement
Guest User

Untitled

a guest
Nov 20th, 2020
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.06 KB | None | 0 0
  1.  
  2. const STRIPE_TEST_PK = 'pk_test_';
  3. const DETACH_ENDPOINT = NODE_ENV == 'production' ? '<prod_endpoint>' : '<test_endpoint>'
  4.  
  5. // Create an instance of Elements.
  6. var stripe = Stripe(STRIPE_TEST_PK);
  7. var elements = stripe.elements();
  8.  
  9. // Custom styling can be passed to options when creating an Element.
  10. // (Note that this demo uses a wider set of styles than the guide below.)
  11. var style = {
  12. base: {
  13. color: '#32325d',
  14. fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
  15. fontSmoothing: 'antialiased',
  16. fontSize: '16px',
  17. '::placeholder': {
  18. color: '#aab7c4'
  19. },
  20. width: '100%'
  21. },
  22. invalid: {
  23. color: '#fa755a',
  24. iconColor: '#fa755a'
  25. }
  26. };
  27.  
  28. // RELEVANT ELEMENTS
  29. // Create an instance of the card Element.
  30. var card = elements.create('card', { style: style });
  31.  
  32. // Locally store stripe client secret
  33. var clientSecret = document.getElementById('payment-form').dataset.secret
  34. var paymentMethodId = document.getElementById('payment-form').dataset.payment_method_id
  35. var type = document.getElementById('payment-form').dataset.type
  36. var customer = document.getElementById('payment-form').dataset.customer
  37.  
  38. // spinner
  39. var spinner = document.getElementById('spinner')
  40.  
  41. // Add an instance of the card Element into the `card-element` <div>.
  42. card.mount('#card-element');
  43.  
  44. // Get cardholder name input
  45. var cardholder = document.getElementById('cardholder-name')
  46.  
  47. // Handle real-time validation errors from the card Element.
  48. card.on('change', function (event) {
  49. var displayError = document.getElementById('status-msg');
  50. if (event.error) {
  51. displayError.innerHTML = event.error.message;
  52.  
  53. } else {
  54. displayError.innerHTML = '';
  55.  
  56. }
  57. });
  58.  
  59. // Handle form submission.
  60. var form = document.getElementById('payment-form');
  61. form.addEventListener('submit', function (event) {
  62. event.preventDefault();
  63. console.log("Type: " + type)
  64.  
  65. // hide all form stuff -disable form input/submissions
  66. document.getElementById('payment-form').style.display = 'none';
  67. document.getElementById('save-button').style.display = 'none';
  68. document.getElementById('agreement').style.display = 'none';
  69.  
  70. // show spinner
  71. document.getElementById('spinner').style.display = 'block';
  72.  
  73. // Confirm card details
  74. stripe.confirmCardSetup(
  75. clientSecret,
  76. {
  77. payment_method: {
  78. card: card,
  79. billing_details: {
  80. name: cardholder.value
  81. }
  82. }
  83. })
  84. .then(result => {
  85. if (result.error) {
  86. console.log("confirmCardSetup error condition")
  87. // hide spinner
  88. spinner.style.display = 'none';
  89.  
  90. // show all form stuff
  91. document.getElementById('payment-form').style.display = 'flex';
  92. document.getElementById('save-button').style.display = 'block';
  93. document.getElementById('agreement').style.display = 'block';
  94.  
  95. // Inform the user if there was an error.
  96. var errorElement = document.getElementById('status-msg');
  97. errorElement.innerHTML = result.error.message;
  98. errorElement.style.display = 'flex';
  99. } else {
  100. console.log("else clause")
  101.  
  102. if (type == "edit") {
  103. // call to server, detach old payment method
  104. $.ajax({
  105. url: DETACH_ENDPOINT,
  106. data: {
  107. customer: customer
  108. },
  109. success: function (res) {
  110. if (res.result == 'success') {
  111. spinner.style.display = 'none';
  112.  
  113. // Payment Method setup Succeessfully, display message
  114. document.getElementById('success-msg').innerHTML = 'Payment edit successful! \nYou can close this screen now.';
  115. document.getElementById('success-msg').style.display = 'block';
  116. document.getElementById('success-wrapper').style.display = 'flex';
  117. } else {
  118. spinner.style.display = 'none';
  119. document.getElementById('status-msg').innerHTML = res.message;
  120. document.getElementById('status-msg').style.display = 'block';
  121. document.getElementById('status-wrapper').style.display = 'flex';
  122. }
  123. },
  124. error: function (err) {
  125. spinner.style.display = 'none';
  126. document.getElementById('status-msg').innerHTML = err
  127. document.getElementById('status-wrapper').style.display = 'flex';
  128. }
  129. })
  130. }
  131. };
  132. })
  133. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement