| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286 | 
							- function init_components_payment(input){
 
- 	input.each(function(i,input){
 
- 		input = $(input);
 
- 		if(!input.is(":visible")) return;
 
- 		var action = input.attr('data-action');
 
- 		if(!action) {
 
- 			console.log('PAYMENT COMPONENT: Need "data-action" to get process payment');
 
- 			return;
 
- 		}
 
- 		$.action({
 
- 			action: 'stripe_init_component',
 
- 			process: action
 
- 		}, function(r){
 
- 			if(!r.content) return;
 
- 			//On utilise un wrapper pour gérer les overflows "out of the box"
 
- 			input.addClass('row card-container');
 
- 			var content = $(r.content);
 
- 			input.append(content);
 
- 			init_creditcard_component();
 
- 		});
 
- 	});
 
- }
 
- //CHARGEMENT DE LA PAGE
 
- function init_plugin_stripe(){
 
- 	switch($.urlParam('page')){
 
- 		default:
 
- 		break;
 
- 	}
 
- }
 
- //Init page settings
 
- function init_setting_global_stripe(parameter){
 
- 	switch(parameter.section){
 
- 		case 'global.stripe':
 
- 			$.each($('code'), function(idx, val){
 
- 				hljs.highlightBlock($(val).get(0));
 
- 			});
 
- 		break;
 
- 	}
 
- }
 
- function stripe_setting_save(){
 
- 	$.action({ 
 
- 		action : 'stripe_setting_save', 
 
- 		fields :  $('#stripe-setting-form').toJson() 
 
- 	},function(){
 
- 		$.message('success','Configuration enregistrée');
 
- 	});
 
- }
 
- function stripe_card_execute(options,complete){
 
- 	var activeBtn = $('#shop-stripe-button > span.button-active'),
 
- 		loadingBtn = $('#shop-stripe-button > span.button-loading');
 
- 	var o = $.extend({
 
- 		card: '4242424242424242',
 
- 		cvv: '123',
 
- 		month:8,
 
- 		year: 2019,
 
- 		owner: ''
 
- 	},options);
 
- 	try{
 
- 		Stripe.setPublishableKey(o.key);
 
- 		Stripe.card.createToken({
 
- 			number: o.card,
 
- 			cvc: o.cvv,
 
- 			exp_month:o.month,
 
- 			exp_year: o.year,
 
- 			name: o.owner
 
- 		}, function (status, response) {
 
- 			activeBtn.removeClass('hidden');
 
- 			loadingBtn.addClass('hidden');
 
- 			complete(response);
 
- 		});
 
- 	} catch(e){
 
- 	 	activeBtn.removeClass('hidden');
 
- 		loadingBtn.addClass('hidden');
 
- 		complete({error:e});
 
- 	}
 
- }
 
- function stripe_card(options,complete){
 
- 	var stripeLib = 'https://js.stripe.com/v2/';
 
- 	if($('script[src="'+stripeLib+'"]',document).length == 0){
 
- 		var s = document.createElement( 'script' );
 
- 		s.type = 'text/javascript';
 
- 		s.setAttribute( 'src', stripeLib );
 
- 		s.onload = function(){ stripe_card_execute(options,complete)};
 
- 		document.body.appendChild(s);
 
- 	}else{
 
- 		stripe_card_execute(options,complete);
 
- 	}
 
- }
 
- //Fonction pour lancer l'initialisation
 
- //du paiement par Stripe (récup des données)
 
- function stripe_process_payment(public_key, processAction=null){
 
- 	try{
 
- 		if(!processAction) throw 'Erreur sur l\'action pour procéder au paiement';
 
- 		var activeBtn = $('#shop-stripe-button > span.button-active'),
 
- 			loadingBtn = $('#shop-stripe-button .button-loading');
 
- 		loadingBtn.removeClass('hidden');
 
- 		activeBtn.addClass('hidden');
 
- 		var cardNumber = $('#stripe-card-number'),
 
- 			cardCvv = $('#stripe-card-cvv'),
 
- 			cardExpire = $('#stripe-card-expire'),
 
- 			cardOwner = $('#stripe-card-owner');
 
- 		var expParts = cardExpire.val().split(' / ');
 
- 		var month = expParts[0],
 
- 			year = expParts[1];
 
- 		if(cardNumber.val() == '') throw 'Numéro de carte invalide';
 
- 		if(cardCvv.val() == '')  throw 'Numéro CVV invalide';
 
- 		if(month == '')  throw 'Mois d\'expiration invalide';
 
- 		if(year == '')  throw 'Année d\'expiration invalide';
 
- 		stripe_card({
 
- 			key : public_key,
 
- 	        card: cardNumber.val().replace(/ /g,''),
 
- 	        cvv: cardCvv.val(),
 
- 	        month: month,
 
- 	        year: year,
 
- 	        owner: cardOwner.val()
 
- 	    },function(response){
 
- 		    if(response.error) return $.message('error',response.error.code+' : '+response.error.message);
 
- 		    $.action({
 
- 		    	action : processAction,
 
- 		    	token : response.id
 
- 		    },function(r){
 
- 		    	reset_inputs('.card-container');
 
- 				loadingBtn.addClass('hidden');
 
- 		    	activeBtn.removeClass('hidden');
 
- 		    	$.message('success','Paiement effectué');
 
- 		    });
 
- 		});
 
- 	} catch(e){
 
- 		$.message('error',e);
 
- 		loadingBtn.addClass('hidden');
 
- 		activeBtn.removeClass('hidden');
 
- 	}
 
- }
 
- // 4: VISA, 51 -> 55: MasterCard, 36-38-39: DinersClub, 34-37: American Express, 65: Discover
 
- function init_creditcard_component(){
 
- 	var cards = [{
 
- 		name: "mastercard",
 
- 		color: "#0061A8",
 
- 		logo: "fab fa-cc-mastercard"
 
- 	}, {
 
- 		name: "visa",
 
- 		color: "#daa520",
 
- 		logo: "fab fa-cc-visa"
 
- 	}, {
 
- 		name: "dinersclub",
 
- 		color: "#888",
 
- 		logo: "fab fa-cc-diners-club"
 
- 	}, {
 
- 		name: "americanExpress",
 
- 		color: "#108168",
 
- 		logo: "fab fa-cc-amex"
 
- 	}, {
 
- 		name: "discover",
 
- 		color: "#7ea8bb",
 
- 		logo: "fab fa-cc-discover"
 
- 	}];
 
- 	var html = document.getElementsByTagName('html')[0];
 
- 	var number = "";
 
- 	var cardNumber = $(".card_number");
 
- 	//Gestion de l'UI (surbrillance des éléments)
 
- 	$(document).click(function(e){
 
- 		if(!$(e.target).is(".cvv") || !$(e.target).closest(".cvv").length){
 
- 			$(".card").css("transform", "rotatey(0deg)");
 
- 			$(".seccode").css("color", "var(--text-color)");
 
- 		}
 
- 		if(!$(e.target).is(".expire") || !$(e.target).closest(".expire").length)
 
- 			$(".date_value").css("color", "var(--text-color)");
 
- 		if(!$(e.target).is(".number") || !$(e.target).closest(".number").length)
 
- 			cardNumber.css("color", "var(--text-color)");
 
- 		if(!$(e.target).is(".inputname") || !$(e.target).closest(".inputname").length)
 
- 			$(".fullname").css("color", "var(--text-color)");
 
- 	});
 
- 	//Gestion du champ N° Carte
 
- 	var selected_card = -1;
 
- 	$(".number").keyup(function(event){
 
- 		cardNumber.text($(this).val());
 
- 		number = $(this).val();
 
- 		if(parseInt(number.substring(0, 2)) > 50 && parseInt(number.substring(0, 2)) < 56){
 
- 			selected_card = 0;
 
- 		} else if(parseInt(number.substring(0, 1)) == 4){
 
- 			selected_card = 1;  
 
- 		} else if(parseInt(number.substring(0, 2)) == 36 || parseInt(number.substring(0, 2)) == 38 || parseInt(number.substring(0, 2)) == 39){
 
- 			selected_card = 2;     
 
- 		} else if(parseInt(number.substring(0, 2)) == 34 || parseInt(number.substring(0, 2)) == 37){
 
- 			selected_card = 3; 
 
- 		} else if(parseInt(number.substring(0, 2)) == 65){
 
- 			selected_card = 4; 
 
- 		} else if(parseInt(number.substring(0, 4)) == 5019){
 
- 			selected_card = 5; 
 
- 		} else {
 
- 			selected_card = -1; 
 
- 		}
 
- 		if(selected_card != -1){
 
- 			html.setAttribute("style", "--card-color: " + cards[selected_card].color);  
 
- 			$(".bankid").attr("class", "bankid").addClass(cards[selected_card].logo).removeClass('hidden');
 
- 		} else {
 
- 			html.setAttribute("style", "--card-color: #cecece");
 
- 			$(".bankid").attr("class", "bankid").addClass('hidden');
 
- 		}
 
- 		if(cardNumber.text().length === 0)
 
- 			cardNumber.html("●●●● ●●●● ●●●● ●●●●");
 
- 	}).focus(function(){
 
- 		cardNumber.css("color", "white");
 
- 	}).on("keydown input", function(){
 
- 		cardNumber.text($(this).val());
 
- 		if(event.key >= 0 && event.key <= 9)
 
- 			if($(this).val().length === 4 || $(this).val().length === 9 || $(this).val().length === 14)
 
- 				$(this).val($(this).val() +  " ");
 
- 	})
 
- 	//Gestion du champ Nom
 
- 	$(".inputname").keyup(function(){  
 
- 		$(".fullname").text($(this).val());  
 
- 		if($(".inputname").val().length === 0) $(".fullname").text("NOM");
 
- 		return event.charCode;
 
- 	}).focus(function(){
 
- 		$(".fullname").css("color", "white");
 
- 	});
 
- 	//Gestion du champ CVV
 
- 	$(".cvv").focus(function(){
 
- 		$(".card").css("transform", "rotatey(180deg)");
 
- 		$(".seccode").css("color", "white");
 
- 	}).keyup(function(){
 
- 		$(".seccode").text($(this).val());
 
- 		if($(this).val().length === 0) $(".seccode").html("●●●");
 
- 	}).focusout(function() {
 
- 		$(".card").css("transform", "rotatey(0deg)");
 
- 		$(".seccode").css("color", "var(--text-color)");
 
- 	});
 
- 	//Gestion champ Date d'expiration
 
- 	var month = 0;
 
- 	$(".expire").keypress(function(event){
 
- 		if(event.charCode >= 48 && event.charCode <= 57){
 
- 			if($(this).val().length === 1){
 
- 				if(($(this).val()==1 && event.key<=2) || $(this).val()==0)
 
- 					$(this).val($(this).val() + event.key + " / ");
 
- 			} else if($(this).val().length === 0){
 
- 				if(event.key == 1 || event.key == 0){
 
- 					month = event.key;
 
- 					return event.charCode;
 
- 				} else {
 
- 					$(this).val(0 + event.key + " / ");
 
- 				}
 
- 			} else if($(this).val().length > 2 && $(this).val().length < 9){
 
- 				return event.charCode;
 
- 			}
 
- 		}
 
- 		return false;
 
- 	}).keyup(function(event){
 
- 		$(".date_value").html($(this).val());
 
- 		if(event.keyCode == 8 && $(".expire").val().length == 4) $(this).val(month);
 
- 		if($(this).val().length === 0) $(".date_value").text("MM / YYYY");
 
- 	}).keydown(function(){
 
- 		$(".date_value").html($(this).val());
 
- 	}).focus(function(){
 
- 		$(".date_value").css("color", "white");
 
- 	});
 
- }
 
 
  |