#Chirag-nopCommerce
1 messages · Page 1 of 1 (latest)
heya @glass bolt, if you're integrating with Stripe through nopCommerce, you would want to reach out to nopCommerce regarding your questions, since they built the plugin
Yes I am a nopCommerce developer.
But the problem is I can not find any sample or document how stripe apply 3Ds in wallet Google pay and apple pay
you got my point?
Hello @low wagon
I need to apply 3D secure in digital wallet of stripe.
This is possible or not?
If it is possible then what is the process to do it?
3DS usually isn't requested for Google pay and Apple pay because the cards are already "authenticated" when added to these two wallets
Means we can not do 3DS in wallet integration?
But There is problem when I am trying to pay through 3DS card.
When I will try to pay 3DS card, Payment intent will create it gives me Action_Required status.
So I am stuck with the flow.
can you share the PaymentIntent for the above test?
Sure
{ "id": "pi_3KJtctCIUXaelLSh19npiRMu", "object": "payment_intent", "amount": 4800, "amount_capturable": 0, "amount_received": 0, "application": null, "application_fee_amount": null, "canceled_at": null, "cancellation_reason": null, "capture_method": "manual", "charges": { "object": "list", "data": [], "has_more": false, "url": "/v1/charges?payment_intent=pi_3KJtctCIUXaelLSh19npiRMu" }, "client_secret": "pi_3KJtctCIUXaelLSh19npiRMu_secret_IKCUWQ3oqzMMJ7uePWRL7X8i6", "confirmation_method": "automatic", "created": 1642658163, "currency": "usd", "customer": null, "description": "nop order 440", "invoice": null, "last_payment_error": null, "livemode": false, "metadata": {}, "next_action": { "alipay_handle_redirect": null, "oxxo_display_details": null, "redirect_to_url": null, "type": "use_stripe_sdk" }, "on_behalf_of": null, "payment_method": "pm_1KJtcaCIUXaelLShKUDM2v6L", "payment_method_options": { "alipay": null, "bancontact": null, "card": { "installments": null, "network": null, "request_three_d_secure": "automatic" }, "oxxo": null, "p24": null, "sepa_debit": null, "sofort": null }, "payment_method_types": [ "card" ], "receipt_email": null, "review": null, "setup_future_usage": null, "shipping": null, "source": null, "statement_descriptor": null, "statement_descriptor_suffix": null, "status": "requires_action", "transfer_data": null, "transfer_group": null}
Hello @low wagon
see above response when I create payment intent with 3DS card
See the status is requires_action
okay, but this isn't using googlepay or applepay
let me rephrase your question - you're testing with a 3DS card, and are wondering how to handle the situation when authentication is required
yes, if something like OTP or any other screen for 3Ds auth
I also integrate Stripe card.
On stripe card payment, if I added 3Ds card then stripe show me one popup for auth if I click ok then my auth is complete and move to the next process.
it is possible something like this in wallet?
how does your payment flow work?
Are you creating a PaymentIntent and then using Elements to collect the card details?
or are you using Elements to collect the card details, and then attempting to charge the card later?
how are you collecting the card detail?
looking at the API calls your Stripe account is making, you're using Stripe Elements
if (typeof stripe == 'undefined') {
stripe = Stripe('@Model.PublishableKey');
}
var elements = stripe.elements();
paymentRequest = stripe.paymentRequest({
country: '@Model.AccountCountryCode',
currency: '@Model.Currency',
total: {
label: '@Model.Description',
amount: @(Model.Amount)
},
requestShipping:false,
requestPayerName: true,
requestPayerEmail: true
});
// Check the availability of the Payment Request API first.
paymentRequest.canMakePayment().then(function (result) {
if (result) {
$("#stripe-digitalwallets-pay-button").show();
}
});
paymentRequest.on('paymentmethod', function (ev) {
if (ev.error) {
// Show error in payment form
stripeDigitalWalletsError(ev.error);
} else {
//change the order amount, add Tax and shipping fee
// The payment has succeeded.
var postData = $('#shopping-cart-form').serializeArray();
postData.push({ name: "stripedigitalwallet.payerName", value: ev.payerName });
postData.push({ name: "stripedigitalwallet.payerEmail", value: ev.payerEmail });
postData.push({ name: "stripedigitalwallet.payerPhone", value: ev.payerPhone });
postData.push({ name: "stripedigitalwallet.billingaddress.city", value: ev.paymentMethod.billing_details.address.city });
postData.push({ name: "stripedigitalwallet.billingaddress.country", value: ev.paymentMethod.billing_details.address.country });
postData.push({ name: "stripedigitalwallet.billingaddress.line1", value: ev.paymentMethod.billing_details.address.line1 });
postData.push({ name: "stripedigitalwallet.billingaddress.line2", value: ev.paymentMethod.billing_details.address.line2 });
postData.push({ name: "stripedigitalwallet.billingaddress.postal_code", value: ev.paymentMethod.billing_details.address.postal_code });
postData.push({ name: "stripedigitalwallet.billingaddress.state", value: ev.paymentMethod.billing_details.address.state });
postData.push({ name: "stripedigitalwallet.billingaddress.email", value: ev.paymentMethod.billing_details.email });
postData.push({ name: "stripedigitalwallet.billingaddress.phone", value: ev.paymentMethod.billing_details.phone });
postData.push({ name: "stripedigitalwallet.billingaddress.name", value: ev.paymentMethod.billing_details.name });
stripeDigitalWalletsCreatePayment(ev.paymentMethod.id, @(Model.Amount));
}
});
@low wagon
give me a while to look into this
ok
I am waiting for your response.
This may take me a while to look into so if you need to head off, you may want to write in to Stripe Support and we'll get back to you async.
Sure you can take your time.
I will wait for your response.
Thanks you
@glass bolt you're missing the stripe.confirmCardPayment method in your code, can you refer to this section : https://stripe.com/docs/stripe-js/elements/payment-request-button#html-js-complete-payment and adjust your logic accordingly, then try again