当前位置: 首页 > 知识库问答 >
问题:

如何在Flutter中使用Razorpay Orders API?

慕容劲
2023-03-14

我在flutter应用程序中实现了一个支付网关。所以Razorpay建议我使用Orders API。但我没有任何方法来实现Orders API。

我参考了以下文件。它包含java、PHP等的示例,但没有找到颤振/飞镖的示例。

https://razorpay.com/docs/payment-gateway/orders/integration/#example

提前谢谢。

共有3个答案

章心水
2023-03-14

谢天谢地,Razorpay有你可以使用的颤振软件包。以下代码片段可能会有所帮助:

import 'package:razorpay_flutter/razorpay_flutter.dart';

_razorpay = Razorpay();

var options = {
      'key': '<YOUR_KEY_ID>',
      'amount': 100, //in the smallest currency sub-unit.
      'name': 'Acme Corp.',
      'order_id': 'order_EMBFqjDHEEn80l', // Generate order_id using Orders API
      'description': 'Fine T-Shirt',
      'prefill': {
        'contact': '9123456789',
        'email': 'gaurav.kumar@example.com'
      }
    };

_razorpay.open(options);

详情请浏览本页。这段YouTube视频也会有所帮助。

包子航
2023-03-14
final client = HttpClient();
  final request =
      await client.postUrl(Uri.parse('https://api.razorpay.com/v1/orders'));
  request.headers.set(
      HttpHeaders.contentTypeHeader, "application/json; charset=UTF-8");
  String basicAuth = 'Basic ' +
      base64Encode(utf8.encode(
          '${dotenv.env['RAZORPAY_KEY']!}:${dotenv.env['RAZORPAY_SECRET']!}'));
  request.headers.set(HttpHeaders.authorizationHeader, basicAuth);
  request.add(utf8.encode(json.encode(orderOptions)));
  final response = await request.close();
  response.transform(utf8.decoder).listen((contents) {
    String orderId = contents.split(',')[0].split(":")[1];
    orderId = orderId.substring(1, orderId.length - 1);
    Map<String, dynamic> checkoutOptions = {
      'key': dotenv.env['RAZORPAY_KEY']!,
      'amount': total * 100,
      "currency": "INR",
      'name': 'E Drives',
      'description': 'E Bike',
      'order_id': orderId, // Generate order_id using Orders API
      'timeout': 300,
    };
    try {
      _razorpay.open(checkoutOptions);
    } catch (e) {
      log.e(e.toString());
    }

您可以使用HttpClient并向Razorpay订单应用编程接口发送请求。希望这回答了你的问题。

澹台硕
2023-03-14
  Future<void> generate_ODID() async {
      var orderOptions = {
        'amount': 50000,  // amount in the smallest currency unit
        'currency': "INR",
        'receipt': "order_rcptid_11"
      };
      final client = HttpClient();
      final request =
          await client.postUrl(Uri.parse('https://api.razorpay.com/v1/orders'));
      request.headers.set(
          HttpHeaders.contentTypeHeader, "application/json; charset=UTF-8");
      String basicAuth = 'Basic ' +
          base64Encode(utf8.encode(
              '${'YourKEY'}:${'YourSECRET'}'));
      request.headers.set(HttpHeaders.authorizationHeader, basicAuth);
      request.add(utf8.encode(json.encode(orderOptions)));
      final response = await request.close();
      response.transform(utf8.decoder).listen((contents) {
        print('ORDERID'+contents);
        String orderId = contents.split(',')[0].split(":")[1];
        orderId = orderId.substring(1, orderId.length - 1);
        Fluttertoast.showToast(
            msg: "ORDERID: " +orderId,
            toastLength: Toast.LENGTH_SHORT);
        Map<String, dynamic> checkoutOptions = {
          'key': 'YourKEY',
          'amount': 11100,
          'name': 'Demo',
          'description': 'Fssai Registrtion Charge',
          'prefill': {'contact': '8910407549', 'email': 'xx.xx@gmail.com'},
          'external': {
            'wallets': ['paytm']
          }
        };
        try {
          _razorpay.open(checkoutOptions);
        } catch (e) {
          print(e.toString());
        }
    });
    }

我使用的是同一个代码片段,但当我尝试使用google pay进行支付时,它将失败,并出现“您的钱未借记,您的服务器正忙”错误,但当我尝试手动提供UPI Id时,交易会顺利进行,否则交易不会使用UPI完成。有什么办法解决这个问题吗?

 类似资料:
  • 问题内容: 我使用图片插件( image:^ 2.0.4 ),以便可以在图片上写一些内容,然后将其保存为新图片到设备或通过邮件发送。我尝试使用“ new File ” 加载图像,但Flutter出现错误。我询问并搜索,并得到一个提示,我可以使用rootBundle在Flutter中加载图像。我做到了,我得到以下错误。 [错误:topaz / lib / tonic / logging / dart

  • 所以我的问题是我该怎么做?这似乎是一个非常简单的需求,但我在文档中找不到任何关于如何执行的内容。 多谢了。

  • 我想在使用Firebase进行身份验证的Flutter应用程序中获取登录用户的电子邮件。 我可以通过以下方式获取当前用户 但是如果我用这个去取信 我得到以下错误: 在这种情况下,如何获取登录用户的电子邮件?

  • 我使用图像插件(图像:^2.0.4),这样我就可以在图像上写些东西,然后将新图像保存到设备或通过邮件发送。我尝试使用“新文件”加载图像,但在颤振时出错。我询问并搜索,得到一个提示,我可以使用rootBundle在flatter中加载图像。我做到了,我得到了下面的错误。 [错误:topaz/lib/tonic/logging/dart_ERROR.cc(16)]未处理的异常:无法加载资产:packa

  • 我正在开发我的第一个真正的flutter项目,我有一个关于资产的问题。我可以使用平台资产加载我的应用图标吗?如果没有,我需要创建flutter资产到我的应用程序。但是,一般图标的推荐大小是多少? 但Android和IOS的屏幕尺寸很多。使用平台资产,我根据平台规范创建所有图标。我在《扑扑》里表现如何?通用图标的规格是什么? 谢谢!

  • 我一直在努力研究如何在我正在开发的应用程序中保持屏幕打开。网上有很多关于这方面的信息,但我还没有找到任何具体的颤动。我发现了各种关于使用唤醒锁的帖子,但当我尝试我的应用程序总是在启动时崩溃。不过,我宁愿不使用唤醒锁。 我找到的信息告诉我将以下内容放入MainActivity.java。 getWindow()。addFlags(WindowManager。layout params . FLAG