'How to close the payment interface if the payment failed in Stripe Google pay?
Need to close the payment interface if the payment fails. Now it showing error instead of close.
paymentRequest.on('paymentmethod', function(ev) {
console.log('ev response',ev)
that.accountService.makePaymentIntent(totAmt).then((data)=>{
console.log("Promise resolved with: " + JSON.stringify(data));
let clientSecret = data.data.client_secret;
// Confirm the PaymentIntent without handling potential next actions (yet).
stripe.confirmCardPayment(
clientSecret,
{payment_method: ev.paymentMethod.id},
{handleActions: false}
).then(function(confirmResult) {
console.log('confirmResult',confirmResult);
if (confirmResult.error) {
// Report to the browser that the payment failed, prompting it to
// re-show the payment interface, or show an error message and close
// the payment interface.
ev.complete('fail');
} else {
// Report to the browser that the confirmation was successful, prompting
// it to close the browser payment method collection interface.
ev.complete('success');
// Check if the PaymentIntent requires any actions and if so let Stripe.js
// handle the flow. If using an API version older than "2019-02-11"
// instead check for: `paymentIntent.status === "requires_source_action"`.
if (confirmResult.paymentIntent.status === "requires_action") {
// Let Stripe.js handle the rest of the payment flow.
stripe.confirmCardPayment(clientSecret).then(function(result) {
console.log('confirmCardPayment result',result);
if (result.error) {
// The payment failed -- ask your customer for a new payment method.
} else {
that.orderComplete(confirmResult, ev);
}
});
} else {
// The payment has succeeded.
that.orderComplete(confirmResult, ev);
}
}
});
}).catch((error)=>{
ev.complete('success');
console.log("Promise rejected with " + JSON.stringify(error));
that.orderFailed(error);
});
});
Solution 1:[1]
It's not possible to do this — the behaviour of the PaymentRequest sheet for Google/Apple Pay is controlled by the browser. On Chrome when you let the browser know that the payment failed(by calling ev.complete('fail')
), then it shows a message and does not close the sheet. That's not something you have any way to influence I'm afraid.
Solution 2:[2]
you can use ev.complete('success') instead of ev.complete('fail')
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | Muzammil Quadri |