android中的EWAY支付网关S9992错误

android中的EWAY支付网关S9992错误,android,payment-gateway,Android,Payment Gateway,在我的应用程序中,我们使用的是eway支付网关。正如文档中所给出的,我从以epk开头的沙箱页面中获取了Pay Now按钮公共API密钥,并将其设置为- RapidAPI.PublicAPIKey=EWAY_SANDBOX_API RapidAPI.RapidEndpoint="Sandbox"; 接下来,我设置卡号和cvc的值- ArrayList<NVPair> data=new ArrayList<NVPair>(); // data.ad

在我的应用程序中,我们使用的是eway支付网关。正如文档中所给出的,我从以epk开头的沙箱页面中获取了Pay Now按钮公共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();
ArrayList data=new ArrayList();
//添加(新的NVPair(“fname”,fname));
//添加(新的NVPair(“lname”,lname));
添加(新的NVPair(“卡”,cardnum));
//添加(新的NVPair(“expmonth”,expmonth));
//添加(新的NVPair(“expyear”,expyear));
添加(新NVN对(“cvn”,cvc));
EncryptValuesResponse encryptedResponse=RapidAPI.encryptValues(数据);
ArrayList encryptedValues=encryptedResponse.getValues();
和encryptedResponse.getValues()返回null,encryptedResponse包含错误代码S9992,文档将其声明为“与Rapid API的通信错误”。这让我感到困惑,因为我已经阅读了很多次文档,但却找不到哪里出了问题或遗漏了什么。
任何帮助都将不胜感激。提前感谢。

我相信不用沙箱作为端点

RapidAPI.RapidEndpoint="Sandbox";
你应该使用

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

我询问了Way的支持,他们说API认为手机没有连接到网络。该应用程序正在接收来自其他服务器的响应,因此这显然不是问题所在。我对此进行了进一步调试,发现实际错误是一个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.DefaultHttpClient
,这是
不推荐使用的
。我正在考虑重写该类并自己重新进行网络调用。

这没有帮助-Way代码将“Sandbox”转换为“”,因此您可以将其设置为具有相同效果的任何一个。作为更新,eWAY Android SDK现在使用
OkHttp
代替
DefaultHttpClient
,并提供同步和异步调用的方法-文档可用。