android 中的 EWAY 支付网关 S9992 错误

EWAY payment gateway S9992 error in android

在我的应用程序中,我们使用的是 eway 支付网关。正如文档中所给出的,我已经从以 epk 开头的沙盒页面中获取了立即付款按钮 Public API 键并将其设置为 -

RapidAPI.PublicAPIKey=EWAY_SANDBOX_API
RapidAPI.RapidEndpoint="Sandbox";

接下来我设置卡号和cvc的值-

ArrayList<NVPair> data=new ArrayList<NVPair>();
//              data.add(new NVPair("fname", fname));
//              data.add(new NVPair("lname", lname));
                data.add(new NVPair("card", cardnum));
//              data.add(new NVPair("expmonth", expMonth));
//              data.add(new NVPair("expyear", expYear));
                data.add(new NVPair("cvn", cvc));
                EncryptValuesResponse encryptedResponse = RapidAPI.encryptValues(data);
                ArrayList<NVPair> encryptedValues = encryptedResponse.getValues();

并且 encryptedResponse.getValues() returns 为 null 并且 encryptedResponse 包含错误代码 S9992,文档中指出为 'Communication error with Rapid API'。这让我很困惑,因为我已经多次浏览文档但找不到我哪里出错或遗漏了什么。

任何帮助将不胜感激。提前致谢。

我相信不要使用 Sandbox 作为端点

RapidAPI.RapidEndpoint="Sandbox";

你应该使用

RapidAPI.RapidEndpoint="https://api.sandbox.ewaypayments.com/";

我询问了 eWay 支持,他们说 API 认为 phone 没有连接到网络。该应用程序正在接收来自其他服务器的响应,因此这显然不是问题所在。我对此进行了进一步调试,发现实际错误是 android.os.NetworkOnMainThreadException.

我将对 RapidApi.encryptValues() 的调用放在一个单独的线程中,你看它现在可以工作了。

Thread thread = new Thread(new Runnable(){
    @Override
    public void run(){
        EncryptValuesResponse encryptedResponse = RapidAPI.encryptValues(data);
    }
});
thread.start();

API 没有进行异步网络调用,它还在使用 org.apache.http.impl.client.DefaultHttpClientdeprecated。我正在考虑覆盖 class 并自己重新进行网络调用。