在我的应用程序中,我们使用eway支付网关。正如文档中给出的那样,我从沙盒页面获取了立即付款按钮公共API密钥,该页面以epk开头并将其设置为 -
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()返回null,encryptedResponse包含错误代码S9992,文档声明为&#39;与Rapid API的通信错误&#39;。这让我感到难过,因为我已多次浏览文档,但无法找到错误或遗漏的地方。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:0)
我相信不使用Sandbox作为端点
import urllib2
import urllib
import portalocker
import cookielib
import requests
query = 'http://google.com/search?q=wtf&num=100&tbs=cdr:1,cd_min:2000,cd_max:2015&start=0&filter=0'
headers = {'user-agent': 'Mozilla/5.0 (X11; Linux; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Midori/0.4'}
response = requests.get(query, proxies={'http': "http://username:password@104.247.XX.XX:80"}, headers=headers, timeout=30, allow_redirects=True)
print response
你应该使用
RapidAPI.RapidEndpoint="Sandbox";
答案 1 :(得分:0)
我问了eWay的支持,他们说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
deprecated
。我正在考虑重写课程,并自己重新打网络。