印度UPI支付之二维码生成规则
与泰国的标准EMVCo QR二维码结构不同,印度UPI支付二维码技术采用NPCI(National Payments Corporation of India) 制定的 UPI 规范。UPI QR 码的格式通常是一个简单的 upi://pay URI,而不是严格的 TLV(Tag-Length-Value)格式。
1. UPI 二维码格式
UPI 二维码的内容一般是一个 upi://pay 形式的 URL,例如:
upi://pay?pa=merchant@icici&pn=Merchant Name&mc=5311&tid=123456789012345&tr=987654321&tn=Payment for order 1234&am=100.00&cu=INR&url=https://merchant.com/order1234
2. 关键参数说明
参数 | 说明 | 示例 |
---|---|---|
pa | 收款方 VPA(Virtual Payment Address) | merchant@icici |
pn | 收款人姓名 | Merchant Name |
mc | 商户类别代码(MCC,可选) | 5311 |
tid | 终端 ID(可选) | 123456789012345 |
tr | 交易 ID(可选) | 987654321 |
tn | 交易备注 | Payment for order 1234 |
am | 交易金额(可选) | 100.00 |
cu | 货币代码 | INR |
url | 订单 URL(可选) | https://merchant.com/order1234 |
3. UPI 二维码示例
upi://pay?pa=user@upi&pn=John%20Doe&am=500.00&cu=INR&tn=Test%20Payment
4. 使用 .NET 生成 UPI 二维码
using QRCoder;
string upiUri = "upi://pay?pa=user@upi&pn=John%20Doe&am=500.00&cu=INR&tn=Test%20Payment";
QRCodeGenerator qrGenerator = new QRCodeGenerator();
QRCodeData qrCodeData = qrGenerator.CreateQrCode(upiUri, QRCodeGenerator.ECCLevel.Q);
QRCode qrCode = new QRCode(qrCodeData);
Bitmap qrCodeImage = qrCode.GetGraphic(20);
// 保存二维码
qrCodeImage.Save("upi_qr.png", ImageFormat.Png);
5. 备注
1:UPI 二维码本质上是一个 upi://pay URI,不需要像 EMVCo/Bharat QR 那样的 TLV 结构。
2:关键参数包括收款 VPA(pa)、收款人姓名(pn)、金额(am)、交易备注(tn)等。
3:可以使用 QRCoder 生成 UPI 二维码,也可以使用 ZXing.NET 解析。
评论
发表评论