Как сделать интеграцию Razorpay во Flutter

Я могу развернуть платежную транзакцию, но серверная часть очень сложна. Как я могу создать orderid и как мы можем найти платеж, сделанный конкретным пользователем?

1 ответ

Надеюсь, вы установили все необходимые вещи.

Шаг 1: создание заказа с использованием официального API заказа Razorpay:

           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.

Получив orderId от официального API Razorpay, передайте идентификатор при звонке openCheckout(jsonDecode(res.body)['id']);функция

           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');
    }
  }

3-й шаг: проверка подписи.

Это важно, если вы хотите автоматически перевести сумму на свой банковский счет.

для ключа Hmac SHA установите этот пакет: crypto:

        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!");
    }
    

  }

Другие вопросы по тегам