Home > front end >  create stripe paiement intent with a manual confirmation_method result in a succed status instead of
create stripe paiement intent with a manual confirmation_method result in a succed status instead of

Time:10-19

I've followed this doc : https://stripe.com/docs/payments/accept-a-payment-synchronously Which is very clear but surprise, when launching on server side:

const intent = await stripe.paymentIntents.create({
        payment_method: paymentMethodId,
        amount: 5999,
        currency: 'eur',
        confirmation_method: 'manual',
        confirm: true
      });

I get :

{
  id: 'pi_3LuNKVDLnKFDevPq2OpR1nMX',
  object: 'payment_intent',
  amount: 5999,
  amount_capturable: 0,
  amount_details: { tip: {} },
  amount_received: 5999,
  application: null,
  application_fee_amount: null,
  automatic_payment_methods: null,
  canceled_at: null,
  cancellation_reason: null,
  capture_method: 'automatic',
  charges: {
    object: 'list',
    data: [ [Object] ],
    has_more: false,
    total_count: 1,
    url: '/v1/charges?payment_intent=pi_3LuNKVDLnKFDevPq2OpR1nMX'
  },
  client_secret: 'pi_3LuNKVDLnKFDevPq2OpR1nMX_secret_jpNtP1aYILlixGML8gSd3CvNk',
  confirmation_method: 'manual',
  created: 1666128487,
  currency: 'eur',
  customer: null,
  description: null,
  invoice: null,
  last_payment_error: null,
  livemode: false,
  metadata: {},
  next_action: null,
  on_behalf_of: null,
  payment_method: 'pm_1LuNKUDLnKFDevPqUMLAxk9k',
  payment_method_options: {
    card: {
      installments: null,
      mandate_options: null,
      network: null,
      request_three_d_secure: 'automatic'
    }
  },
  payment_method_types: [ 'card' ],
  processing: null,
  receipt_email: null,
  review: null,
  setup_future_usage: null,
  shipping: null,
  source: null,
  statement_descriptor: null,
  statement_descriptor_suffix: null,
  status: 'succeeded',
  transfer_data: null,
  transfer_group: null
}

Basically, it's like the final confirmation in my mind without making further steps (I just need to make the transfert on server side) but is that behavior normal ?

CodePudding user response:

A likely reason as to why your Payment Intent’s status is not set to requires_action is due to using a Test card that does not require a 3DS authentication. The cards that you’d want to use to test 3DS flow are listed here. If the card does not require further action, then it is normal that the Payment Intent status shows succeeded.

  • Related