finspay
This commit is contained in:
@@ -129,6 +129,12 @@ div#cover{
|
||||
display:block;
|
||||
font-weight: bold;
|
||||
}
|
||||
label.nobold {
|
||||
margin:8px 0;
|
||||
font-weight: normal;
|
||||
font-size:1.1em;
|
||||
}
|
||||
|
||||
.form-style-1 input[type=text],
|
||||
.form-style-1 input[type=date],
|
||||
.form-style-1 input[type=datetime],
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/* some format to numbers */
|
||||
var it=1;
|
||||
var pl = 0; //instalment plan index
|
||||
var students = new Array(10);
|
||||
|
||||
/* price format (comas) */
|
||||
@@ -22,6 +23,38 @@ var cform = document.getElementById('cform');
|
||||
var ccard = document.getElementById('ccard');
|
||||
/* ====================== */
|
||||
|
||||
/* save form to array=== */
|
||||
function ftoa(){
|
||||
var rad;
|
||||
if (document.getElementById('r2').checked) { rad = document.getElementById('r2').value; }
|
||||
else if(document.getElementById('r1').checked) { rad = document.getElementById('r1').value; }
|
||||
else { rad = document.getElementById('r3').value; }
|
||||
|
||||
var x= [
|
||||
document.forms["cform"]["mname"].value,
|
||||
document.forms["cform"]["mmail"].value,
|
||||
document.getElementById('obs').value,
|
||||
rad
|
||||
]
|
||||
var tmp=mq.value;
|
||||
document.getElementById("cform").reset();
|
||||
mq.value=tmp;
|
||||
|
||||
return x;
|
||||
}
|
||||
/* ====================== */
|
||||
|
||||
/* load form from array=== */
|
||||
function atof(){
|
||||
document.forms["cform"]["mname"].value = students[it-1][0];
|
||||
document.forms["cform"]["mmail"].value = students[it-1][1];
|
||||
document.getElementById('obs').value = students[it-1][2];
|
||||
if(document.getElementById('r2').value == students[it-1][3]){ document.getElementById('r2').checked=true;}
|
||||
if(document.getElementById('r1').value == students[it-1][3]){ document.getElementById('r1').checked=true;}
|
||||
if(document.getElementById('r3').value == students[it-1][3]){ document.getElementById('r3').checked=true;}
|
||||
}
|
||||
/* ====================== */
|
||||
|
||||
/* back button ========== */
|
||||
cinfob.addEventListener('click', function(ev){
|
||||
it --;
|
||||
@@ -51,13 +84,17 @@ cinfo.addEventListener('click', function(ev){
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ students:students, req:"precheck", mq:mq.value})
|
||||
|
||||
})
|
||||
.then((response) => response.json())
|
||||
.then((data) => {
|
||||
if(data.userst == "0"){
|
||||
cform.hidden = true;
|
||||
ccard.hidden = false;
|
||||
if(meses==0){ ccard.hidden = false;}
|
||||
else{
|
||||
cplan.hidden = false;
|
||||
var multcc = calc_price();
|
||||
document.getElementById('gtc').innerHTML=multcc.toLocaleString();
|
||||
}
|
||||
}
|
||||
else{ alert("hay un error en los datos de alumnos"); }
|
||||
})
|
||||
@@ -70,43 +107,41 @@ cinfo.addEventListener('click', function(ev){
|
||||
}
|
||||
});
|
||||
|
||||
/* ====================== */
|
||||
var pl = document.forms["plform"]["pl"];
|
||||
document.getElementById("timebutton").addEventListener('click', function(ev){
|
||||
cplan.hidden = true;
|
||||
ccard.hidden = false;
|
||||
});
|
||||
|
||||
/* save form to array=== */
|
||||
function ftoa(){
|
||||
var rad;
|
||||
if (document.getElementById('r2').checked) { rad = document.getElementById('r2').value; }
|
||||
else if(document.getElementById('r1').checked) { rad = document.getElementById('r1').value; }
|
||||
else { rad = document.getElementById('r3').value; }
|
||||
function calc_price(){
|
||||
if(desc_estado == 1 && descuento > 0) {
|
||||
return (mq.value*cu*(1 - (descuento/100) ) );
|
||||
}
|
||||
else{ return cu*mq.value;}
|
||||
};
|
||||
|
||||
var x= [
|
||||
document.forms["cform"]["mname"].value,
|
||||
document.forms["cform"]["mmail"].value,
|
||||
document.getElementById('obs').value,
|
||||
rad
|
||||
]
|
||||
var tmp=mq.value;
|
||||
document.getElementById("cform").reset();
|
||||
mq.value=tmp;
|
||||
|
||||
return x;
|
||||
}
|
||||
/* ====================== */
|
||||
var multc;
|
||||
for (var i = 0; i < pl.length; i++) {
|
||||
pl[i].addEventListener('change', function() {
|
||||
if (this.value == 0 ) {
|
||||
multc = calc_price();
|
||||
document.getElementById('gtc').innerHTML=multc.toLocaleString();
|
||||
}
|
||||
else {
|
||||
multc = cu*mq.value;
|
||||
document.getElementById('gtc').innerHTML=multc.toLocaleString();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* load form from array=== */
|
||||
function atof(){
|
||||
document.forms["cform"]["mname"].value = students[it-1][0];
|
||||
document.forms["cform"]["mmail"].value = students[it-1][1];
|
||||
document.getElementById('obs').value = students[it-1][2];
|
||||
if(document.getElementById('r2').value == students[it-1][3]){ document.getElementById('r2').checked=true;}
|
||||
if(document.getElementById('r1').value == students[it-1][3]){ document.getElementById('r1').checked=true;}
|
||||
if(document.getElementById('r3').value == students[it-1][3]){ document.getElementById('r3').checked=true;}
|
||||
}
|
||||
/* ====================== */
|
||||
|
||||
/* stripe magic begins here */
|
||||
/* ====================================================== */
|
||||
var stripe = Stripe('pk_test_wxFt0GhsUK2YsprkLXa2iFrQ00nfjAeucu');
|
||||
let availablePlans = [0,3,6,9];
|
||||
|
||||
//var stripe = Stripe('publc_key');
|
||||
var elements = stripe.elements();
|
||||
var cardElement = elements.create('card', {
|
||||
style: {
|
||||
@@ -148,95 +183,61 @@ cardButton.addEventListener('click', function(ev) {
|
||||
.then(function(result) {
|
||||
// Show error in payment form
|
||||
if (result.error) {
|
||||
document.getElementById("cover").style.opacity = "0";
|
||||
setTimeout(function(){ document.getElementById('cover').hidden = true;},500);
|
||||
console.log("network error");
|
||||
errorh("connection to stripe failed");
|
||||
}
|
||||
// Otherwise send paymentMethod.id to your server (see Step 2)
|
||||
else {
|
||||
fetch('/spay/intentCreate', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ payment_method_id: result.paymentMethod.id, req:"precheck", mq:mq.value, tid:tid})
|
||||
body: JSON.stringify({
|
||||
payment_method_id: result.paymentMethod.id,
|
||||
req:"precheck",
|
||||
mq:mq.value,
|
||||
tid:tid,
|
||||
students:students,
|
||||
pl:pl.value
|
||||
})
|
||||
})
|
||||
.then(function(result) {
|
||||
// Handle server response (see Step 3)
|
||||
result.json().then(function(json) { handleInstallmentPlans(json); })
|
||||
result.json().then(function(json) { end_message(json); })
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
///*presenta los planes de pago */
|
||||
const selectPlanForm = document.getElementById('installment-plan-form');
|
||||
let availablePlans = [];
|
||||
|
||||
const handleInstallmentPlans = async (response) => {
|
||||
if (response.error) { // Show error from server on payment form
|
||||
console.log("preauth response error");
|
||||
}
|
||||
else {
|
||||
// si avaliable plans es indefinido, se queda alli con el cover
|
||||
// Store the payment intent ID.
|
||||
document.getElementById('payment-intent-id').value = response.intent_id;
|
||||
availablePlans = response.available_plans;
|
||||
// Show available installment options
|
||||
availablePlans.forEach((plan, idx) => {
|
||||
const newInput = document.getElementById('immediate-plan').cloneNode();
|
||||
newInput.setAttribute('value', idx);
|
||||
newInput.setAttribute('id', '');
|
||||
const label = document.createElement('label');
|
||||
label.appendChild(newInput);
|
||||
label.appendChild(
|
||||
document.createTextNode(`${plan.count} meses`),
|
||||
);
|
||||
selectPlanForm.appendChild(label);
|
||||
});
|
||||
document.getElementById('ccard').hidden = true;
|
||||
document.getElementById('cplan').hidden = false;
|
||||
}
|
||||
document.getElementById("cover").style.opacity = "0";
|
||||
setTimeout(function(){ document.getElementById('cover').hidden = true;},500);
|
||||
};
|
||||
|
||||
// termina la transacción
|
||||
const confirmButton = document.getElementById('confirm-button');
|
||||
confirmButton.addEventListener('click', async (ev) => {
|
||||
document.getElementById('cover').hidden = false;
|
||||
document.getElementById("cover").style.opacity = "0.8";
|
||||
const selectedPlanIdx = selectPlanForm.installment_plan.value;
|
||||
const selectedPlan = availablePlans[selectedPlanIdx];
|
||||
const intentId = document.getElementById('payment-intent-id').value;
|
||||
const response = await fetch('/spay/intentConfirm', {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({
|
||||
payment_intent_id: intentId,
|
||||
selected_plan: selectedPlan,
|
||||
req:"check",
|
||||
students:students,
|
||||
mq:mq.value,
|
||||
tid:tid
|
||||
}),
|
||||
});
|
||||
const responseJson = await response.json();
|
||||
// Show success / error response.
|
||||
const end_message = async (response) => {
|
||||
document.getElementById("cover").style.opacity = "0";
|
||||
setTimeout(function(){ document.getElementById('cover').hidden = true;},500);
|
||||
document.getElementById('cmsg').hidden = false;
|
||||
document.getElementById('cplan').hidden = true;
|
||||
document.getElementById('ccard').hidden = true;
|
||||
var message;
|
||||
if (responseJson.status === "succeeded" && selectedPlan !== undefined) {
|
||||
message = `¡Tu compra a ${
|
||||
selectedPlan.count
|
||||
if (response.status === "succeeded" && response.pl !== null ) {
|
||||
message = `¡Tu compra a ${
|
||||
response.pl.count
|
||||
} meses sin intereses se ha realizado con éxito! `;
|
||||
} else if (responseJson.status === "succeeded") {
|
||||
message = "¡Tu compra se ha realizado con éxito!";
|
||||
} else {
|
||||
message = `Tenemos un problema para verificar tus datos.
|
||||
Por favor intenta de nuevo o comunícate con nosotros`;
|
||||
Por favor intenta de nuevo o comunícate con nosotros`;
|
||||
}
|
||||
|
||||
document.getElementById("status-message").innerText = message;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
function errorh(msg){
|
||||
document.getElementById("cover").style.opacity = "0";
|
||||
setTimeout(function(){ document.getElementById('cover').hidden = true;},500);
|
||||
cform.hidden = true;
|
||||
cplan.hidden = true;
|
||||
cform.hidden = true;
|
||||
document.getElementById('cmsg').hidden = false;
|
||||
console.log(msg);
|
||||
var message = `Tenemos un problema para verificar tus datos.
|
||||
Por favor intenta de nuevo o comunícate con nosotros`;
|
||||
document.getElementById("status-message").innerText = message;
|
||||
tid=0;
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user