Update from official release.
This commit is contained in:
91
js/uc_stripe_process_payment.js
Normal file
91
js/uc_stripe_process_payment.js
Normal file
@ -0,0 +1,91 @@
|
||||
/**
|
||||
* @file
|
||||
* uc_stripe.js
|
||||
*
|
||||
* Handles all interactions with Stripe on the client side for PCI-DSS compliance
|
||||
*/
|
||||
(function ($) {
|
||||
|
||||
Drupal.behaviors.uc_stripe_process_payment = {
|
||||
attach: function (context) {
|
||||
|
||||
$('#uc-cart-checkout-review-form, #uc-stripe-authenticate-payment-form', context).once('uc_stripe', function(){
|
||||
|
||||
if (Drupal.settings && Drupal.settings.uc_stripe ) {
|
||||
var apikey = Drupal.settings.uc_stripe.apikey;
|
||||
var methodId = Drupal.settings.uc_stripe.methodId;
|
||||
var orderId = Drupal.settings.uc_stripe.orderId
|
||||
var stripe = Stripe(apikey);
|
||||
}
|
||||
|
||||
var submitButton = $('#edit-submit');
|
||||
var processed = false;
|
||||
|
||||
submitButton.click(function (e) {
|
||||
if(!processed){
|
||||
e.preventDefault();
|
||||
|
||||
$.ajax({
|
||||
url: '/uc_stripe/ajax/confirm_payment',
|
||||
type: "POST",
|
||||
data: JSON.stringify({ payment_method_id: methodId, order_id: orderId }),
|
||||
contentType: 'application/json;',
|
||||
dataType: 'json',
|
||||
success: function(result){
|
||||
handleServerResponse(result);
|
||||
},
|
||||
error: function(result){
|
||||
handleServerResponse(result);
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
function handleServerResponse(response) {
|
||||
if (response.error) {
|
||||
processed = true;
|
||||
submitButton.click();
|
||||
// Show error from server on payment form
|
||||
} else if (response.requires_action) {
|
||||
// Use Stripe.js to handle required card action
|
||||
stripe.handleCardAction(
|
||||
response.payment_intent_client_secret
|
||||
).then(function(result) {
|
||||
if (result.error) {
|
||||
// Show error in payment form
|
||||
processed = true;
|
||||
submitButton.click();
|
||||
} else {
|
||||
// The card action has been handled
|
||||
// The PaymentIntent can be confirmed again on the server
|
||||
$.ajax({
|
||||
url: '/uc_stripe/ajax/confirm_payment',
|
||||
type: 'POST',
|
||||
data: JSON.stringify({ payment_intent_id: result.paymentIntent.id, order_id: orderId }),
|
||||
contentType: 'application/json;',
|
||||
dataType: 'json',
|
||||
success: function(confirmResult){
|
||||
return handleServerResponse(confirmResult);
|
||||
},
|
||||
error: function(confirmResult){
|
||||
return handleServerResponse(confirmResult);
|
||||
},
|
||||
})
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// Show success message
|
||||
processed = true;
|
||||
submitButton.click();
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
}(jQuery));
|
Reference in New Issue
Block a user