Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var ts = (new Date()).getTime();
- //var url = "https://js.stripe.com/v3?_="+ts;
- var url = "https://js.stripe.com/v3";
- if (typeof loadingStart !== "function") {
- function loadingStart($param) { }
- }
- if (typeof loadingStop !== "function") {
- function loadingStop($param) { }
- }
- setIsLoading(true);
- $.ajax({
- url: url,
- dataType: 'script',
- cache: true
- }).always(bindStripeElements);
- //$.getScript(url, function() {
- function bindStripeElements() {
- setIsLoading(false);
- var isLoading = false;
- var paymentMethod = $('#paymentMethod').find('option:selected');
- var $form = $(paymentMethod).closest('form');
- var $next = $('#signup-next');
- var stripe = Stripe(apiKey);
- var elements = stripe.elements({locale: langcode});
- if (paymentMethod.val() == 1) { // DD
- } else if (paymentMethod.val() == 2) { // CC
- var style = {
- base: {
- fontSize: '16px',
- lineHeight: '20px',
- },
- };
- // Create an instance of the card Element
- var card = elements.create('card', {style: style});
- // Add an instance of the card Element into the `card-element` <div>
- card.mount('#card-element');
- }
- function checkSepa() {
- var sepaMandate = $('#sepa_debit_mandate');
- if(paymentMethod.val() != '1' || sepaMandate.prop('checked')) {
- return true;
- } else {
- $('#debit-errors').text(translate['MODELS:CUSTOMER:SEPA_ACCEPT_ERROR']).show();
- $('#payment-errors').show();
- return false;
- }
- }
- // listen for fetch event
- $(document).off("fleetpay:fetch:payment:token").on("fleetpay:fetch:payment:token", handleSubmit);
- //$form.off('submit').on('submit', handleSubmit);
- function handleSubmit(e) {
- e.preventDefault();
- $('#card-errors').text('').hide();
- $('#payment-errors').hide();
- if(isLoading === false) setIsLoading(true);
- if (paymentMethod.val() == 1) // Direct Debit
- {
- if(!checkSepa()) {
- setIsLoading(false);
- return false;
- }
- // remove white spaces
- var iban = $('#iban').val();
- iban = iban.replace(/ /g, '');
- $('#iban').val(iban);
- if(!$('#sourceToken').val()) {
- var sepaSource = {
- type: 'sepa_debit',
- sepa_debit: {
- iban: $('#iban').val()
- },
- currency: 'eur'
- };
- if ($('#bankAccountHolder').val()) {
- sepaSource.owner = {
- name: $('#bankAccountHolder').val()
- };
- }
- stripe.createSource(sepaSource).then(function (result) {
- if (result.error) {
- $('#debit-errors').text(result.error.message).show();
- $('#payment-errors').show();
- setIsLoading(false);
- } else {
- $('#debit-errors').text('').hide();
- $('#payment-errors').hide();
- stripeDirectDebitHandler(result.source);
- }
- });
- } else {
- triggerTokenUpdateEvent();
- //$form.submit();
- }
- }
- else if (paymentMethod.val() == 2) // Credit Card
- {
- if(!$('#sourceToken').val()) {
- stripe.createSource(card).then(function (result) {
- if (result.error) {
- $('#card-errors').text(result.error.message).show();
- $('#payment-errors').show();
- setIsLoading(false);
- } else {
- $('#card-errors').text('').hide();
- $('#payment-errors').hide();
- stripeCreditCardHandler(result.source);
- }
- });
- } else {
- triggerTokenUpdateEvent();
- // $form.submit();
- }
- }
- return false;
- }
- function triggerTokenUpdateEvent(){
- setIsLoading(false);
- var sourceToken = $('#sourceToken').val();
- var sourceName = $('#sourceName').val();
- // trigger the event so that external listeners can run & make the necessary changes
- var data = {
- 'sourceToken': sourceToken,
- 'sourceName': sourceName,
- 'transactionReference': '',
- };
- $(document).trigger("fleetpay:payment:token:updated", [data]);
- }
- function stripeCreditCardHandler(source) {
- $('#sourceToken').val(source.id);
- var cardName = source.card.brand + ' ' + source.card.last4;
- $('#sourceName').val(cardName);
- // $form[0].submit();
- triggerTokenUpdateEvent();
- }
- function stripeDirectDebitHandler(source) {
- $('#sourceToken').val(source.id);
- var debitName = source.sepa_debit.country+ 'XX-XXXX-' + source.sepa_debit.last4;
- $('#sourceName').val(debitName);
- triggerTokenUpdateEvent();
- //$form[0].submit();
- }
- }
- function setIsLoading(isLoading) {
- var element = $('#form-content');
- if(isLoading) {
- loadingStart(element);
- } else {
- loadingStop(element);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement