如何创建 Google Pay link 来汇款或收款?

How to create Google Pay link to send or request money?

在网上查看(谷歌搜索)一段时间后,我找不到任何可以为 Google 付款请求创建 link 的东西。

在我的 Flutter 应用程序中,我想创建一个 link 来使用我的 Phone 号码 收钱,点击它会启动 Google 已设置我的 phone 号码的支付应用程序。但是,金额将由用户从 Google 付费应用程序中输入。

像这样:

String googlePayUrl = "https://pay.google.com?phone=XXXXXXXXXX";

这 if 对于 Google 印度的付费版本

免责声明:我不住在印度,无法访问 UPI 来为自己进行验证。

考虑使用 UPI linking specification (upi://) to create UPI links for use with UPI compatible applications. You can also refer to Google Pay documentation on how to integrate with in-app payments:

String GOOGLE_PAY_PACKAGE_NAME = "com.google.android.apps.nbu.paisa.user";
int GOOGLE_PAY_REQUEST_CODE = 123;

Uri uri =
    new Uri.Builder()
        .scheme("upi")
        .authority("pay")
        .appendQueryParameter("pa", "your-merchant-vpa@xxx")
        .appendQueryParameter("pn", "your-merchant-name")
        .appendQueryParameter("mc", "your-merchant-code")
        .appendQueryParameter("tr", "your-transaction-ref-id")
        .appendQueryParameter("tn", "your-transaction-note")
        .appendQueryParameter("am", "your-order-amount")
        .appendQueryParameter("cu", "INR")
        .appendQueryParameter("url", "your-transaction-url")
        .build();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
intent.setPackage(GOOGLE_PAY_PACKAGE_NAME);
activity.startActivityForResult(intent, GOOGLE_PAY_REQUEST_CODE);

我相信您要查找的参数名称是 pa

感谢@Soc 的回答。这个 post 只是对上面@Soc Post 的解释答案。 pdf document was a huge help. My requirement was in Flutter for which I created a link and used url_launcher开link。打开 link 将在您的 phone 中显示 UPI 兼容应用程序列表。

link 示例:

String upi_url = 'upi://pay?pa=address@okhdfcbank&pn=Payee Name&tn=Payment Message&cu=INR';

// pa : Payee address, usually found in GooglePay app profile page
// pn : Payee name
// tn : Txn note, basically your message for the payee
// cu : Currency

注意:为了成功付款,所有提到的字段都是必需的。

以上答案都可以,下面是一个例子

  void sendPayment() async {
   String upiurl = 'upi://pay?pa=user@hdfgbank&pn=SenderName&tn=TestingGpay&am=100&cu=INR';    
   await launchurl(upiurl);
  }

pa=user@hdfgbank //每个人的gpay用户资料页都有,这里需要给 收件人 ID 不是发件人 ID:

上午=100 // 您要发送的金额

cu=INR // 货币印度卢比

如果你正在使用 flutter,这就是可以做到的。 您需要将一个名为 url_launcher 的包添加到 pubspec 中以完成这项工作。

查看此处的文档以查看 URL 中使用的参数的详细信息。 https://developers.google.com/pay/india/api/web/create-payment-method#create-payment-method 所有参数都是必需的。

pa: UPI id of the requesting person
pn: Name of the requesting person
am: Amount
cu: Currency. I read somewhere that only INR is supported now.

此方法的一个主要问题是它不会返回任何回调来检查支付是成功还是失败。

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Google Pay',
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  initiateTransaction() async {
    String upi_url =
'upi://pay?pa=aneesshameed@oksbi&pn=Anees Hameed&am=1.27&cu=INR;
    await launch(upi_url).then((value) {
      print(value);
    }).catchError((err) => print(err));
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Google Pay'),
      ),
      body: Center(
        child: Column(
          children: [
            RaisedButton(
              child: Text(
                'Pay',
                style: TextStyle(
                  color: Colors.black,
                  fontWeight: FontWeight.bold,
                ),
              ),
              onPressed: () {
                initiateTransaction();
              },
            ),
          ],
        ),
      ),
    );
  }
}

如果您使用的是企业 UPI ID,则 upi_url 中需要的参数很少。例如:我有一个 rpy.payto000006621197825@icici UPI 用于接受商业付款。然后需要再添加几个参数

pa: UPI id of the requesting business account
pn: Name of the requesting business account
am: Amount
cu: Currency. I read somewhere that only INR is supported now.
mc: Merchant category code. 

您可以从创建 UPI 业务 ID 的位置获取此商家类别代码。例如:我通过 razorpay 创建了 upi id 'rpy.payto000006621197825@icici',我从他们的 window 的某个地方收到了这个代码。但是这段代码对于所有支付服务都是相似的,比如 paypal、stripe、Citibank 等:下面是几个链接: https://docs.checkout.com/resources/codes/merchant-category-codes https://www.citibank.com/tts/solutions/commercial-cards/assets/docs/govt/Merchant-Category-Codes.pdf tr:交易编号。 我找不到任何用处,此交易 ID 既未显示在 Google 支付交易详细信息中,也未显示在 Razorpay 交易 window 中。但是 Google pay 在不使用时不起作用。 URL:显示交易详情的URL。当您转到 Google 付款并打开交易明细时,然后在底部的同一页面上您会看到一个按钮 'More details'。 URL 参数的值定义了更多详细信息按钮的目标。您可以使用此 URL 以便客户可以找到有关已完成交易的更多信息。

UPI 字符串示例:

String upi_url =
        'upi://pay?pa=rpy.payto000006621197825@icici&pn=Elifent&mc=4900&tr=1234ABCD&url=https://elifent.tech/tr/1234&am=1.27&cu=INR';

如果您进行测试付款,那么付款将记入我的 google 支付帐户。前进!!! :D