Android Не удается получить идентификатор заряда Stripe после подтверждения PaymentIntent [3DS2] - PullRequest
1 голос
/ 06 января 2020

Я реализую new version of Stripe (SCA-READY), version 12.8.2.
Все также работает.
Но мне нужно получить charge ID после подтверждения PaymentIntent.
ID, который я получаю от моего server (который пересылает stripe response) после подтверждения PaymentIntent.
Однако я не получаю это ID, когда процессу нужны 3ds2 (или 3ds).

(следующие фрагменты Представьте только часть обвинений, если вам нужна полная JSON, спросите меня в комментарии)

Вот фрагмент ответа без аутентификации 3ds2

Тогда есть Фрагмент ответа, когда требуется аутентификация 3ds2:

"charges": {
    "object": "list",
    "data": [],
    "has_more": false,
    "total_count": 0,
    "url": "/v1/charges?payment_intent=pi_1FxfoiHk0bG3YRQo1hU4c6f1"
  },  

Я не могу получить заряд без идентификатора этого, соответствующего полосе документации

Тогда я также нет атрибутов, которые соответствуют заряду в PaymentIntent с stripe sdk после обработки 3ds2, который я могу получить в callback в activityResult (срабатывает после аутентификации 3ds2 для обработки результата ):

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == PaymentMethodsActivityStarter.REQUEST_CODE && data != null) {
            val result = PaymentMethodsActivityStarter.Result.fromIntent(data)
            val paymentMethod = result?.paymentMethod
            adapter.renderCard(paymentMethod)
        }
        val isPaymentIntentResult = paymentServiceProvider.stripe.onPaymentResult(
                requestCode, data,
                object : ApiResultCallback<PaymentIntentResult> {
                    override fun onSuccess(result: PaymentIntentResult) {
                        adapter.processStripeIntent(result.intent)//The intent accessed here hasn't any charges (stuff like amount paymentMethod, but nothing about charges)
                    }

                    override fun onError(e: Exception) {
                        Toast.makeText(this@ClientMainActivity, e.message, Toast.LENGTH_LONG).show()
                    }
                })
    }

РЕДАКТИРОВАТЬ : Есть тело ответа с состоянием успешно:

{
  "id": "pi_1FxzypHk0bG3YRQop47ZATBv",
  "object": "payment_intent",
  "amount": 500,
  "canceled_at": null,
  "cancellation_reason": null,
  "capture_method": "automatic",
  "client_secret": "secret",
  "confirmation_method": "automatic",
  "created": 1578334027,
  "currency": "eur",
  "description": null,
  "last_payment_error": null,
  "livemode": false,
  "next_action": null,
  "payment_method": "pm_1Fv1nxHk0bG3YRQoqldFvopb",
  "payment_method_types": [
    "card"
  ],
  "receipt_email": null,
  "setup_future_usage": null,
  "shipping": null,
  "source": null,
  "status": "succeeded"
}

1 Ответ

0 голосов
/ 06 января 2020

Плата не создается до тех пор, пока вы не закончите аутентификацию пользователя как часть 3D Secure и пока Платежное намерение находится в состоянии succeeded или requires_payment_method: https://stripe.com/docs/payments/intents

Как в этот момент выглядит Платежное намерение на вашей информационной панели Stripe?

...