Advertisement
mjt

Hive Payment Gateway

mjt
Aug 8th, 2019
1,223
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. var ts = (new Date()).getTime();
  3. //var url = "https://js.stripe.com/v3?_="+ts;
  4. var url = "https://js.stripe.com/v3";
  5.  
  6. if (typeof loadingStart !== "function") {
  7.     function loadingStart($param) { }
  8. }
  9. if (typeof loadingStop !== "function") {
  10.     function loadingStop($param) { }
  11. }
  12.  
  13. setIsLoading(true);
  14. $.ajax({
  15.     url: url,
  16.     dataType: 'script',
  17.     cache: true
  18. }).always(bindStripeElements);
  19.  
  20. //$.getScript(url, function() {
  21. function bindStripeElements() {
  22.     setIsLoading(false);
  23.  
  24.     var isLoading = false;
  25.     var paymentMethod = $('#paymentMethod').find('option:selected');
  26.     var $form = $(paymentMethod).closest('form');
  27.     var $next = $('#signup-next');
  28.  
  29.     var stripe = Stripe(apiKey);
  30.     var elements = stripe.elements({locale: langcode});
  31.  
  32.     if (paymentMethod.val() == 1) { // DD
  33.  
  34.  
  35.     } else if (paymentMethod.val() == 2) { // CC
  36.         var style = {
  37.             base: {
  38.                 fontSize: '16px',
  39.                 lineHeight: '20px',
  40.             },
  41.         };
  42.         // Create an instance of the card Element
  43.         var card = elements.create('card', {style: style});
  44.         // Add an instance of the card Element into the `card-element` <div>
  45.         card.mount('#card-element');
  46.     }
  47.  
  48.     function checkSepa() {
  49.         var sepaMandate = $('#sepa_debit_mandate');
  50.         if(paymentMethod.val() != '1' || sepaMandate.prop('checked')) {
  51.             return true;
  52.         } else {
  53.             $('#debit-errors').text(translate['MODELS:CUSTOMER:SEPA_ACCEPT_ERROR']).show();
  54.             $('#payment-errors').show();
  55.             return false;
  56.         }
  57.     }
  58.  
  59.     // listen for fetch event
  60.     $(document).off("fleetpay:fetch:payment:token").on("fleetpay:fetch:payment:token", handleSubmit);
  61.  
  62.     //$form.off('submit').on('submit', handleSubmit);
  63.  
  64.     function handleSubmit(e) {
  65.         e.preventDefault();
  66.  
  67.         $('#card-errors').text('').hide();
  68.         $('#payment-errors').hide();
  69.  
  70.         if(isLoading === false) setIsLoading(true);
  71.  
  72.         if (paymentMethod.val() == 1) // Direct Debit
  73.         {
  74.             if(!checkSepa()) {
  75.                 setIsLoading(false);
  76.                 return false;
  77.             }
  78.  
  79.             // remove white spaces
  80.             var iban = $('#iban').val();
  81.             iban = iban.replace(/ /g, '');
  82.             $('#iban').val(iban);
  83.  
  84.             if(!$('#sourceToken').val()) {
  85.                 var sepaSource = {
  86.                     type: 'sepa_debit',
  87.                     sepa_debit: {
  88.                         iban: $('#iban').val()
  89.                     },
  90.                     currency: 'eur'
  91.                 };
  92.                 if ($('#bankAccountHolder').val()) {
  93.                     sepaSource.owner = {
  94.                         name: $('#bankAccountHolder').val()
  95.                     };
  96.                 }
  97.  
  98.                 stripe.createSource(sepaSource).then(function (result) {
  99.  
  100.                     if (result.error) {
  101.                         $('#debit-errors').text(result.error.message).show();
  102.                         $('#payment-errors').show();
  103.                         setIsLoading(false);
  104.                     } else {
  105.                         $('#debit-errors').text('').hide();
  106.                         $('#payment-errors').hide();
  107.                         stripeDirectDebitHandler(result.source);
  108.                     }
  109.                 });
  110.             } else {
  111.  
  112.                 triggerTokenUpdateEvent();
  113.                 //$form.submit();
  114.             }
  115.         }
  116.         else if (paymentMethod.val() == 2) // Credit Card
  117.         {
  118.             if(!$('#sourceToken').val()) {
  119.                 stripe.createSource(card).then(function (result) {
  120.  
  121.                     if (result.error) {
  122.                         $('#card-errors').text(result.error.message).show();
  123.                         $('#payment-errors').show();
  124.                         setIsLoading(false);
  125.                     } else {
  126.                         $('#card-errors').text('').hide();
  127.                         $('#payment-errors').hide();
  128.                         stripeCreditCardHandler(result.source);
  129.                     }
  130.                 });
  131.             } else {
  132.                 triggerTokenUpdateEvent();
  133.                 // $form.submit();
  134.             }
  135.         }
  136.  
  137.         return false;
  138.     }
  139.  
  140.     function triggerTokenUpdateEvent(){
  141.         setIsLoading(false);
  142.  
  143.         var sourceToken = $('#sourceToken').val();
  144.         var sourceName = $('#sourceName').val();
  145.  
  146.         // trigger the event so that external listeners can run & make the necessary changes
  147.         var data = {
  148.                 'sourceToken': sourceToken,
  149.                 'sourceName': sourceName,
  150.                 'transactionReference': '',
  151.         };
  152.  
  153.         $(document).trigger("fleetpay:payment:token:updated", [data]);
  154.     }
  155.  
  156.     function stripeCreditCardHandler(source) {
  157.         $('#sourceToken').val(source.id);
  158.  
  159.         var cardName = source.card.brand + ' ' + source.card.last4;
  160.         $('#sourceName').val(cardName);
  161.  
  162.         // $form[0].submit();
  163.  
  164.         triggerTokenUpdateEvent();
  165.     }
  166.  
  167.     function stripeDirectDebitHandler(source) {
  168.         $('#sourceToken').val(source.id);
  169.  
  170.         var debitName = source.sepa_debit.country+ 'XX-XXXX-' + source.sepa_debit.last4;
  171.         $('#sourceName').val(debitName);
  172.  
  173.         triggerTokenUpdateEvent();
  174.         //$form[0].submit();
  175.  
  176.     }
  177. }
  178.  
  179. function setIsLoading(isLoading) {
  180.     var element = $('#form-content');
  181.     if(isLoading) {
  182.         loadingStart(element);
  183.     } else {
  184.         loadingStop(element);
  185.     }
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement