Guest User

Untitled

a guest
Nov 20th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.07 KB | None | 0 0
  1. <div id="postcard">
  2. Enter a message (optional) and address. If you don't have an address, enter an email and we'll email that person for their address.
  3. <br />
  4. <%= form_for(@postcard, :remote => true) do |f| %>
  5. <% if @postcard.errors.any? %>
  6. <div id="error_explanation">
  7. <h2><%= pluralize(@postcard.errors.count, "error") %> prohibited this postcard from being saved:</h2>
  8.  
  9. <ul>
  10. <% @postcard.errors.full_messages.each do |msg| %>
  11. <li><%= msg %></li>
  12. <% end %>
  13. </ul>
  14. </div>
  15. <% end %>
  16.  
  17. <div class="field">
  18. <%= f.label :message %><br />
  19. <%= f.text_area(:message, :size => "40x8") %>
  20. </div>
  21. <div class="field">
  22. <%= f.label :email %><br />
  23. <%= f.email_field :email %>
  24. </div>
  25. <div class="field">
  26. <%= f.label :size %><br />
  27. <%= f.select(:size, options_for_select([['Regular (4x6)', 'regular'], ['Jumbo (5.5x8.5)', 'jumbo']])) %>
  28. </div>
  29. <div class="field">
  30. <%= f.hidden_field(:user_id, :value => current_user.id) %>
  31. <%= f.hidden_field(:photo_id, :value => params[:photo]) %>
  32. </div>
  33.  
  34. <%= f.fields_for :address do |builder| %>
  35. <p>
  36. <%= render 'addresses/form', :builder => builder %>
  37. </p>
  38. <% end %>
  39.  
  40. <div id="postcardsubmit" class="actions">
  41. <%= f.submit %>
  42. </div>
  43. <% end %>
  44. </div>
  45.  
  46. <div id="stripe">
  47. <% if current_user.stripe_id %>
  48. <div id='savedpayer'><button type="saved-cc" class="saved-cc-button">Pay 1.00</button> w/ saved Stripe info</div>
  49. <div id="paying">Payment in progress</div>
  50. <% else %>
  51. <form action="/stripe" method="POST" id="payment-form">
  52. <div class="form-row">
  53. <label>Card Number</label>
  54. <input type="text" size="20" autocomplete="off" class="card-number"/>
  55. </div>
  56. <div class="form-row">
  57. <label>CVC</label>
  58. <input type="text" size="4" autocomplete="off" class="card-cvc"/>
  59. </div>
  60. <div class="form-row">
  61. <label>Expiration (MM/YYYY)</label>
  62. <input type="text" size="2" class="card-expiry-month"/>
  63. <span> / </span>
  64. <input type="text" size="4" class="card-expiry-year"/>
  65. </div>
  66. <button type="submit" class="submit-button">Submit Payment</button>
  67. <% end %>
  68. </div>
  69.  
  70. <script>
  71. $(document).ready(function() {
  72.  
  73. $("#paying").hide();
  74. $("#stripe").hide();
  75.  
  76. $('#postcardsubmit input').click(function () {
  77. $("#postcard").hide();
  78. $("#stripe").show();
  79. });
  80.  
  81.  
  82. $(".saved-cc-button").click(function () {
  83. alert("need to ajax post to charge the card");
  84. $("#savedpayer").hide();
  85. $("#paying").show();
  86. $.ajax({
  87. type: 'POST',
  88. url: '/stripe',
  89. data: { loggedinid : <%= current_user.id %> },
  90. headers: {
  91. 'X-Transaction': 'POST Example',
  92. 'X-CSRF-Token': $('meta[name="csrf-token"]').attr('content')
  93. },
  94. success: function(msg) {
  95. $("#paying").hide();
  96. console.log(msg);
  97. alert("payment recieved");
  98. }
  99. });
  100. });
  101.  
  102. $("#payment-form").submit(function(event) {
  103. // disable the submit button to prevent repeated clicks
  104. $('.submit-button').attr("disabled", "disabled");
  105.  
  106. Stripe.createToken({
  107. number: $('.card-number').val(),
  108. cvc: $('.card-cvc').val(),
  109. exp_month: $('.card-expiry-month').val(),
  110. exp_year: $('.card-expiry-year').val()
  111. }, stripeResponseHandler);
  112.  
  113. // prevent the form from submitting with the default action
  114. return false;
  115. });
  116.  
  117. function stripeResponseHandler(status, response) {
  118. if (response.error) {
  119. // show the errors on the form
  120. $(".payment-errors").text(response.error.message);
  121. $(".submit-button").removeAttr("disabled");
  122. } else {
  123. var form$ = $("#payment-form");
  124. // token contains id, last4, and card type
  125. var token = response['id'];
  126. // insert the token into the form so it gets submitted to the server
  127. form$.append("<input type='hidden' name='stripeToken' value='" + token + "'/>");
  128. // and submit
  129. form$.get(0).submit();
  130. }
  131. }
  132.  
  133. });
  134. </script>
Add Comment
Please, Sign In to add comment