在 Flutter Web 中使用 http post 进行 Razorpay API 调用时出现 XMLHttpRequest 错误

问题描述 投票:0回答:1

我在 Flutter Web 中使用过去 4 天的 http 帖子进行 Razorpay API 调用时遇到

XMLHttpRequest
错误,我在整个互联网上进行了搜索,但没有解决方案适用于我的情况。

下面是我使用 http: ^0.13.4 包的 Post 请求代码:

Future<String> postRequest(String amount) async {
    var url = Uri.parse('https://api.razorpay.com/v1/orders');
    var key = 'rzp_test_Xx7Zw7hLfzozf6';
    var secret = '7PgbvLaODVzRbb9oRcaqCZMi';
    var auth = 'Basic ' + base64Encode(utf8.encode('$key:$secret'));
    print(auth);

    var body = json
        .encode({"amount": 50000, "currency": "INR", "receipt": "rcptid_11"});

    var id = DateTime.now().millisecondsSinceEpoch.remainder(100000).toString();

    var client = http.Client();
    var response = await client.post(
      url,
      headers: {
        'Content-Type': 'application/json',
        'Authorization': auth,
      },
      body: body,
    );

    print(json.decode(response.body));
    return json.decode(response.body);
  }

卷曲命令:

curl  -X POST https://api.razorpay.com/v1/orders-u <YOUR_KEY_ID>:<YOUR_SECRET>-H 'content-type:application/json'-d '{    "amount": 50000,    "currency": "INR",    "receipt": "rcptid_11"}'

完整错误:

    Error: XMLHttpRequest error.
    C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 906:28                get current
packages/http/src/browser_client.dart 69:22                                                                                    <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/zone.dart 1687:54                                              runUnary
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 160:18                                        handleValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 767:44                                        handleValueCallback
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 796:13                                        _propagateToListeners       
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/future_impl.dart 593:7                                         [_complete]
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/stream_pipe.dart 61:11                                         _cancelAndValue
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/async/stream.dart 1288:7                                             <fn>
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 334:14  _checkAndCall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 339:39  dcall
C:/b/s/w/ir/cache/builder/src/out/host_debug/dart-sdk/lib/html/dart2js/html_dart2js.dart 37254:58                              <fn>


    at Object.createErrorWithStack (http://localhost:62444/dart_sdk.js:5076:12)
    at Object._rethrow (http://localhost:62444/dart_sdk.js:40477:16)
    at async._AsyncCallbackEntry.new.callback (http://localhost:62444/dart_sdk.js:40473:13)
    at Object._microtaskLoop (http://localhost:62444/dart_sdk.js:40330:13)
    at _startMicrotaskLoop (http://localhost:62444/dart_sdk.js:40336:13)
    at http://localhost:62444/dart_sdk.js:35811:9

我已经尝试了互联网上的所有解决方案,但没有任何效果。

flutter post razorpay
1个回答
2
投票

这有点像 CORS 错误,所以我只是将代码粘贴到 Dartpad 中,打开 Chrome 控制台并点击运行。不出所料,这是一个 CORS 错误。

下一步是搜索

api razorpay cors
,这会产生一堆结果,所有结果都抱怨相同的错误(都没有解决方案 - 这不是一个好兆头 - 通常意味着没有解决方案)。

下一步是要注意,没有像样的支付 API 可以让您将凭据包含到客户端应用程序中,尤其是浏览器应用程序中。对 Chrome 控制台中的标头进行简单检查即可显示您的用户名/密码凭据。这意味着您错误地使用了 API。

通过查看 Razorpay 网站 可以快速确认这一点,该网站确认

order
api 是服务器-服务器 api。另一个线索是,该 api 的所有示例代码均采用 PHP、Java、Node.js 等语言 - 即用于后端。

回答:您不能从Flutter应用程序中调用此API。它必须从您的后端调用。

© www.soinside.com 2019 - 2024. All rights reserved.