RazorPay Android: зависает в представлении RazorPay при использовании callback_url

Я использую RazorPay Android Standard SDK для заказов и оплаты.

Ниже приведен код для оплаты:

private fun startPayment(razorPayId: String, paymentOrderId: String, totalPrice: String) {
    val co = Checkout()
    co.setKeyID(razorPayId)

    try {
        val options = JSONObject()
        options.put("name", "Payment")
        options.put("description", "")
        options.put("order_id", paymentOrderId)
        options.put("currency", "INR")
        options.put("amount", totalPrice)
        options.put("callback_url", "${ApiConstant.BASE_URL}orders/payment")

        val preFill = JSONObject()
        preFill.put("email", getEmail())
        preFill.put("contact", getPhoneNumber())

        options.put("prefill", preFill)

        val theme = JSONObject()
        theme.put("hide_topbar", false)

        options.put("theme", theme)
        co.open(this, options)
    } catch (e: Exception) {
        Toast.makeText(this, "Error in payment: " + e.message, Toast.LENGTH_LONG).show()
        e.printStackTrace()
    }
}

Я использовал callback_url для защиты своего платежа. Проблема в том, что когда я использовал это в тестовом режиме, я застревал на странице «Успех» RazorPay, и у меня не было возможности выполнить обратный вызов успеха в моем приложении.

На данном снимке экрана сообщение {"payment": "success"} - это ответ от моего callback_url. Если я снова вернусь на эту страницу, на снимке экрана отобразятся два варианта.

введите здесь описание изображения

Я делаю что-то неправильно? Кто-нибудь может мне с этим помочь?

Заранее спасибо.


person Aanal Mehta    schedule 09.06.2020    source источник


Ответы (1)


Итак, наконец, я получил ответ от службы поддержки RazorPay, что для Android Standard SDK не существует такой вещи, как callback_url.

person Aanal Mehta    schedule 10.06.2020
comment
Я столкнулся с той же проблемой, спасибо, но как вы проверяете подпись платежа? - person Prakhar Shukla; 19.06.2020
comment
Вам необходимо использовать API заказов и указать сгенерированный идентификатор заказа в параметрах оформления заказа. Если все прошло хорошо, то с помощью метода PaymentResultWithDataListener вы должны получить все три параметра: razorPayPaymentId, заказанный, подпись. - person Aanal Mehta; 19.06.2020
comment
Это все правильно, но документы также включают проверку подписи на нашем собственном сервере. Здесь в инфографике из официальных документов razorpay.com/docs/assets/images/ orders_workflow.png - person Prakhar Shukla; 19.06.2020
comment
да. Вы можете передать данные из внешнего интерфейса и проверить их с помощью секретного ключа на сервере. - person Aanal Mehta; 20.06.2020