flutter - 无法取消 UPI 付款 Razorpay Flutter
问题描述
我正在使用razorpay_flutter来集成付款,我的问题是,如果我选择 UPI 作为付款选项,并且在处理付款时,如果我取消付款,它仍然会进入 PaymentSuccessResponse。根据 razorpay 的文档,如果通过用户方式取消支付,它应该进入 PaymentFailureResponse。
这是我的代码:
class CheckRazor extends StatefulWidget {
const CheckRazor({Key key}) : super(key: key);
@override
_CheckRazorState createState() => _CheckRazorState();
}
class _CheckRazorState extends State<CheckRazor> {
Razorpay _razorpay = Razorpay();
var options;
Future payData() async {
try {
_razorpay.open(options);
} catch (e) {
print(e);
}
_razorpay.on(Razorpay.EVENT_PAYMENT_SUCCESS, _handlePaymentSuccess);
_razorpay.on(Razorpay.EVENT_PAYMENT_ERROR, _handlePaymentError);
_razorpay.on(Razorpay.EVENT_EXTERNAL_WALLET, _handleExternalWallet);
}
void _handlePaymentSuccess(PaymentSuccessResponse response) async {
print(response);
var message = response.paymentId;
Navigator.pushReplacementNamed(context, Routes.PaymentSuccess,
arguments: widget.details);
_razorpay.clear();
}
void _handlePaymentError(PaymentFailureResponse response) {
var message = response.message;
Map res = json.decode(message);
Map reason = res["error"];
String finalReason = reason["reason"];
if(finalReason == "payment_cancelled") {
Navigator.of(context).pop(context);
_razorpay.clear();
}
else if(finalReason == "payment_failed") {
Navigator.pushReplacementNamed(context, Routes.PaymentFailure,
arguments: response);
_razorpay.clear();
}
}
void _handleExternalWallet(ExternalWalletResponse response) {
_razorpay.clear();
}
@override
void initState() {
super.initState();
options = {
'key':
// "rzp_test_11111111111", // Enter the Live Key ID generated from the Dashboard
"rzp_test_OCp8bDk51p2f96",
'amount': 100,
'name': 'Test',
'currency': "INR",
'description': 'Fees',
'prefill': {
'contact': 8888888888,
'email': test@email.com,
},
'external': {
'wallets': ['paytm']
}
};
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: FutureBuilder(
future: payData(),
builder: (context, snapshot) {
return Container(
child: Center(
child: Text(
"Loading...",
style: TextStyle(
fontSize: 20,
),
),
),
);
}),
);
}
}
解决方案
推荐阅读
- node.js - 为什么微软用 NodeJS 而不是 .NET 制作 Visual Studio Code?
- javascript - IE 11 不加载 JS 脚本(将其从开发者工具的脚本列表中删除)
- php - 子 pid XXXX 退出信号分段错误 (11),HTTPD_PATH 中可能的核心转储
- c# - 如何在 C# 中显示一个国家/地区的正确时区名称?
- python - 由于有效负载无效,向 Typeform 发布请求失败
- ios - NativeScript - 使用 iBeacon 重新启动应用程序,AppDelegate 必须实现窗口属性
- javascript - 使用 lodash 过滤数组 WithIn Array
- elasticsearch - ElasticSearch 可以选择不为空或不为空的包含字段之一吗?
- c# - 当在长多表查询中无法直接计数时,有什么方法可以在有子句中使用 COUNT 变量
- java - 在 maven 上运行时的 OutOfMemory Java 堆空间,即使内存已增加