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.DefaultHttpClient
即 deprecated
。我正在考虑覆盖 class 并自己重新进行网络调用。
在我的应用程序中,我们使用的是 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.DefaultHttpClient
即 deprecated
。我正在考虑覆盖 class 并自己重新进行网络调用。