Files
ms1inscription-v5/paypaladv_donsprod.php
2026-05-13 09:43:32 -04:00

352 lines
12 KiB
PHP

// MSIN-3855 dons Create the Card Fields Component and define callbacks
//<script>
const cardField = paypal.CardFields({
inputEvents: {
onChange: function(data) {
console.log("on change");
console.log(data.cards[0].type);
// the variable is defined
if (data.cards[0].type=="visa" || data.cards[0].type=="mastercard" || data.cards[0].type=="unknown") {
console.log("on change ok");
cardcheck=true;
}else{
console.log("on change bad");
cardcheck=false;
let translatedErrorMessage = translateErrorMessage('OnlyVisaandMastercard');
resultMessage(`${translatedErrorMessage}`);
}
}
,
onFocus: function(data){
// Do something when a field gets focus
},
onBlur: function(data){
// Do something when a field loses focus
}
},
createOrder: function (data) {
setProcessing(true);
const form = document.getElementById('frm_dons');
const formData = new FormData(form);
// Ajouter des variables supplémentaires
const request_type = 'ExtraValue1';
const payment_source = 'ExtraValue2';
formData.append('request_type', 'create_order');
formData.append('payment_source', data.paymentSource);
console.log("create_order don");
var postData = {request_type: 'create_order', payment_source: data.paymentSource };
return fetch("/paypal_advanced/paypal_checkout_init.php", {
method: "POST",
headers: {'Accept': 'application/json'},
body: formData
})
.then((res) => {
console.log("STEPHAN1");
return res.json();
})
.then((result) => {
console.log("STEPHAN");
resultMessage("<?php afficheTexte('preloader_wait',1,0,1);?> ");
setProcessing(false);
if(result.status == 1){
return result.data.id;
}else{
console.log("create_order");
let errorMessage = result.msg;
let translatedErrorMessage = translateErrorMessage(errorMessage);
resultMessage(`${translatedErrorMessage}`);
return false;
}
});
},
onApprove: function (data) {
setProcessing(true);
console.log("onApprove");
const { orderID } = data;
var postData = {request_type: 'capture_order', order_id: orderID};
return fetch('/paypal_advanced/paypal_checkout_init.php', {
method: "POST",
headers: {'Accept': 'application/json'},
body: encodeFormData(postData)
})
.then((res) => {
return res.json();
})
.then((result) => {
// Redirect to success page
if(result.status == 1){
window.location.href = "/paiement_update.php?checkout_ref_id="+result.ref_id;
}else{
console.log("capture_order");
let errorMessage = result.msg;
let translatedErrorMessage = translateErrorMessage(errorMessage);
resultMessage(`${translatedErrorMessage}`);
resultMessage(result.msg);
}
setProcessing(false);
});
},
onError: function (error) {
// Do something with the error from the SDK
},
});
// Render the PayPal Button for PayPal account payments MSIN-3856
paypal.Buttons({ style: {
shape: 'rect',
color: 'gold',
layout: 'vertical',
label: 'paypal',
height: 40, // Hauteur du bouton
size: 'responsive' // Option pour rendre le bouton responsive
}, createOrder: function (data) {
const form = document.getElementById('frm_dons');
const formData = new FormData(form);
// Ajouter des variables supplémentaires
const request_type = 'ExtraValue1';
const payment_source = 'ExtraValue2';
formData.append('request_type', 'create_order');
formData.append('payment_source', data.paymentSource);
var postData = {request_type: 'create_order', payment_source: 'paypal' };
return fetch("/paypal_advanced/paypal_checkout_init.php", {
method: "POST",
headers: {'Accept': 'application/json'},
body: formData
})
.then((res) => {
console.log(res);
return res.json();
})
.then((result) => {
resultMessage("<?php afficheTexte('preloader_wait',1,0,1);?> ");
setProcessing(false);
if(result.status == 1){
return result.data.id;
}else{
console.log("create_order");
let errorMessage = result.msg;
let translatedErrorMessage = translateErrorMessage(errorMessage);
resultMessage(`${translatedErrorMessage}`);
return false;
}
});
}
,
onApprove: function(data,actions) {
const orderID = data.orderID;
console.log("onApprove paypal");
return actions.order.capture().then(function(details) {
// Retrieve the transaction ID
const transactionID = details.purchase_units[0].payments.captures[0].id;
// finalise la transaction
var postData = {payeremail : details.payer.email_address,payername : details.payer.name.surname+details.payer.name.given_name, request_type: 'fin_paypal', payment_source: 'paypal',order_id: orderID ,transaction_id: transactionID ,order_status : details.status };
return fetch("/paypal_advanced/paypal_checkout_init.php", {
method: "POST",
headers: {'Accept': 'application/json'},
body: encodeFormData(postData)
})
.then((res) => {
return res.json();
})
.then((result) => {
resultMessage("<?php afficheTexte('preloader_wait',1,0,1);?> ");
setProcessing(false);
if(result.status == 1){
console.log("result.ref_id");
console.log(result.ref_id);
window.location.href = "/paiement_update.php?checkout_ref_id="+result.ref_id;
// return result.data.id;
}else{
console.log("create_order");
let errorMessage = result.msg;
let translatedErrorMessage = translateErrorMessage(errorMessage);
resultMessage(`${translatedErrorMessage}`);
return false;
}
});
});
},
onError: function(err) {
console.error('An error occurred during the transaction', err);
}
}).render('#paypal-button-container');
// Render each field after checking for eligibility
if (cardField.isEligible()) {
const nameField = cardField.NameField({
placeholder: "<?php echo afficheTexte('checkout_nomsurlacarte', 0)?>" // Translate placeholder
});
nameField.render("#card-name-field-container");
const numberField = cardField.NumberField({
placeholder: "<?php echo afficheTexte('checkout_ccnumber', 0)?>" // Translate placeholder
});
numberField.render("#card-number-field-container");
const cvvField = cardField.CVVField({
placeholder: "<?php echo afficheTexte('checkout_cvv', 0)?>" // Translate placeholder
});
cvvField.render("#card-cvv-field-container");
const expiryField = cardField.ExpiryField({
placeholder: "<?php echo afficheTexte('checkout_cexpiryField', 0)?>" // Translate placeholder
});
expiryField.render("#card-expiry-field-container");
// Add click listener to submit button and call the submit function on the card-number-field-container component
// dons
document
.getElementById("card-field-submit-button")
.addEventListener("click", () => {
let isValid = true;
if ($form.valid()) {
// Form is valid, proceed with the submission or other logic
isValid = true;
// You can also programmatically submit the form if needed
// $form.submit();
} else {
// Form is not valid, show errors or handle accordingly
isValid = false;
}
//verifie si cheques
console.log("type paiement");
var element = document.getElementById('chk_pai_6');
if (element){
if (document.getElementById('chk_pai_6').checked) {
grecaptcha.ready(function () {
grecaptcha.execute('<?php echo RECAPTCHA_SITE_KEY; ?>', {action: 'achat'}).then(function (token) {
document.getElementById('g-recaptcha-response').value = token;
console.log("checkboxValue == 6 payadv");
$("#frm_dons").submit();
$('body').css('cursor', 'wait');
});
});
}
}
if (!isValid) {
return; // Stop further execution if validation fails
}else{
cardField.submit().then(() => {
})
.catch((error) => {
console.log("erreur avant start");
let str = error.message;
console.log(str.length );
if(str.length >200){
let result = str.substring(str.indexOf('.') + 1);
let resultObject = JSON.parse(result);
let description = resultObject.details[0].description;
console.log(description);
let errorMessage = description;
let translatedErrorMessage = translateErrorMessage(errorMessage);
resultMessage(`${translatedErrorMessage}`);
}else{
let translatedErrorMessage = translateErrorMessage(str);
resultMessage(`${translatedErrorMessage}`);
}
});
}
});
} else {
// Hides card fields if the merchant isn't eligible
document.querySelector("#checkout-form").style = "display: none";
}
const encodeFormData = (data) => {
var form_data = new FormData();
for ( var key in data ) {
form_data.append(key, data[key]);
}
return form_data;
}
// Show a loader on payment form processing
const setProcessing = (isProcessing) => {
if (isProcessing) {
document.querySelector(".overlay").classList.remove("hidden");
} else {
document.querySelector(".overlay").classList.add("hidden");
}
}
// Display status message
const resultMessage = (msg_txt) => {
const messageContainer = document.querySelector("#paymentResponse");
messageContainer.classList.remove("hidden");
messageContainer.textContent = msg_txt;
setTimeout(function () {
messageContainer.classList.add("hidden");
messageContainer.textContent = "";
}, 5000);
}
// fin paypal adv