首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在颤振中实现Razorpay的集成

如何在颤振中实现Razorpay的集成
EN

Stack Overflow用户
提问于 2022-10-02 17:50:23
回答 1查看 96关注 0票数 0

我能够部署支付事务,但服务器部分非常困难。我如何创建一个订单,如何才能发现付款是由特定用户完成的?

EN

Stack Overflow用户

发布于 2022-11-30 08:49:05

希望你能安排好一切必要的事情。

步骤1:使用Razorpay官方订单Api:创建订单

代码语言:javascript
运行
复制
     void createOrder() async {
    String username = 'xxxxxxxxxx';// razorpay pay key
    String password = "xxxxxxxxxxxxxxxx";// razoepay secret key
    String basicAuth =
        'Basic ${base64Encode(utf8.encode('$username:$password'))}';

    Map<String, dynamic> body = {
      "amount": 1 * 100, 
      "currency": "INR",
      "receipt": "rcptid_11"
    };
    var res = await http.post(
      Uri.https(
          "api.razorpay.com", "v1/orders"), //https://api.razorpay.com/v1/orders // Api provided by Razorpay Official 
      headers: <String, String>{
        "Content-Type": "application/json",
        'authorization': basicAuth,
      },
      body: jsonEncode(body),
    );

    if (res.statusCode == 200) {
      openCheckout(jsonDecode(res.body)['id']); // 
    }
    print(res.body);
  }
  //*#################################################################

步骤2:打开Razorpay签出接口.

从Razorpay官方Api获得openCheckout(jsonDecode(res.body)['id']);后,在调用orderId函数时传递id

代码语言:javascript
运行
复制
     void openCheckout(String orderId) async {
    var options = {
      'key': 'xxxxxxxxxxxxxxxx',
      "amount": 1 * 100,
      'order_id': orderId,
      'name': 'main.co.in',
      // 'prefill': {'contact': '', 'email': 'test@razorpay.com'},
      'external': {
        'wallets': ['paytm']
      }
    };

    try {
      razorpay.open(options);
    } catch (e) {
      debugPrint('Error: e');
    }
  }

第三步:签名验证.

这一点很重要,如果你想自动转移你的金额到你的银行帐户。

有关Hmac SHA密钥,请安装以下软件包:crypto

代码语言:javascript
运行
复制
  handlerPaymentSuccess(PaymentSuccessResponse response) {
    final key = utf8.encode('NgDLPyiDRPuQpcXy1E3GKTDv');
    final bytes = utf8.encode('${response.orderId}|${response.paymentId}');
    final hmacSha256 = Hmac(sha256, key);
    final  generatedSignature = hmacSha256.convert(bytes);
    if (generatedSignature.toString() == response.signature) {
      log("Payment was successful!");
      //Handle what to do after a successful payment.
      showDialog(
      context: context,
      builder: (BuildContext context) {
        return AlertDialog(
          title: const Text("Success : payment successful"),
          // content: const Text("Are you sure you wish to delete this item?"),
          actions: <Widget>[
            ElevatedButton(
                onPressed: () {
                  Navigator.of(context).pop(true);
                  // PlaceOrderPrepaid();
                },
                child: Text("OK"))
            // ),
          ],
        );
      },
    );
    } else {
      log("The payment was unauthentic!");
    }
    

  }

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73928085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档