【问题标题】:UPI integration in android: How to use onActivityResult?android中的UPI集成:如何使用onActivityResult?
【发布时间】:2018-06-13 01:57:12
【问题描述】:

UPI(统一支付接口)是印度银行的支付接口。 在 UPI 中,交易是链接。就像比特币交易是消息一样 这些链接被传递到 UPI 支付应用程序,付款人必须登录应用程序并点击支付按钮。

我们的应用程序必须启动一个意图并将链接传递给 UPI 支付应用程序,并且在付款人单击支付按钮后,我们需要调用 onActivityResult。 我对java中的android开发一无所知。 我使用 python kivy 进行 android 开发。我想知道我的onActivityResult 应该怎么做。

示例代码: UPI App Deep linking using Intent - inconsistent and buggy behavior

我可以使用 pyjnius 在 python 中使用 java 代码。

一些参考链接: https://blog.deazzle.in/enable-upi-payments-in-your-app-without-the-need-to-integrate-with-a-bank-c911019f3b2d

【问题讨论】:

  • 也许看看documentation
  • 我是否应该假设只有当付款人点击付款按钮时才会返回 RESULT_OK(关于使用 java 开发 Android 的零知识)如果付款人不点击付款按钮或只是关闭应用程序然后 RESULT_CANCELED 将被返回? ?

标签: java android python kivy upi


【解决方案1】:

您无需手动操作。我已经为它开发了一个库。 只需要做一个简单的过程。

        final EasyUpiPayment easyUpiPayment = new EasyUpiPayment.Builder()
                .with(this)
                .setPayeeVpa("EXAMPLE@VPA")
                .setPayeeName("PAYEE_NAME")
                .setTransactionId("UNIQUE_TRANSACTION_ID")
                .setTransactionRefId("UNIQUE_TRANSACTION_REF_ID")
                .setDescription("DESCRIPTION_OR_SMALL_NOT")
                .setAmount("AMOUNT_IN_DECIMAL_XX.XX")
                .build();

        easyUpiPayment.startPayment();

有关更多信息,您可以访问以下网站。 https://github.com/PatilShreyas/EasyUpiPayment-Android

【讨论】:

  • 我们不能在 upi 付款上信任第三方库。
  • 好的。然后你可以参考源代码。如果你按照自己的方式实现它会是一样的。
  • 这个库有问题,很多用户都没有发现 UPI 错误
  • 它会出现错误,例如您的应用程序越过最大横断限制.. 为什么会这样??什么是解决方案??
【解决方案2】:

活动 A:

Intent start = new Intent(MainActivity.this, PurchaseActivity.class);
startActivityForResult(start, 1);

并添加这个结果监听器:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {
            //payment was successful
        }else if (resultCode == RESULT_CANCELED) {
            //payment was canceled
        }
    }
}

活动 B: 如果支付成功:

setResult(RESULT_OK, new Intent());
finish();

或者如果它被取消:

setResult(RESULT_CANCELED, new Intent());
finish();

【讨论】:

  • 其实Activity B不是我的Activity,是用户喜欢的支付授权APP。所以,我对活动 B 代码没有任何控制权.... 那么,我是否应该假设活动 B 仅在付款完成后才返回 RESULT_OK ?如果由于某种原因未完成付款,则活动 B 将返回 RESULT_CANCELED??
  • @PrashantSingh 它基于活动。尝试查找它的来源或类似的东西,并检查它是否返回 RESULT_OK 或 RESULT_CANCELED。但如果是支付活动,它可能已经建立了一些结果。
猜你喜欢
  • 1970-01-01
  • 2020-06-28
  • 2021-05-20
  • 2021-06-08
  • 2018-02-21
  • 1970-01-01
  • 2020-03-23
  • 2017-10-18
  • 2017-01-09
相关资源
最近更新 更多