Attempt to get OAuth access token from Neteller produces error: "Server returned HTTP response code: 401 for URL"
Attempt to get OAuth access token from Neteller produces error: "Server returned HTTP response code: 401 for URL"
我想向 Neteller 设置一个成功的请求,我正在尝试使用 Neteller 文档中的代码获取访问令牌。但是,它始终失败并出现以下异常:
java.io.IOException: Server returned HTTP response code: 401 for URL: https://test.api.neteller.com/v1/oauth2/token?grant_type=client_credentials
这是代码(同样来自 Neteller 文档):
String testUrl = " https://test.api.neteller.com";
String secureUrl = "https://api.neteller.com";
String url = testUrl;
if("live".equals(configBean.get("environment"))){
url = secureUrl;
}
url += "/v1/oauth2/token?grant_type=client_credentials";
String xml = "grant_type=client_credentials?grant_type=client_credentials";
xml = "";
String test = Base64.encodeBytes((accountID + ":" + secureID).getBytes());
try {
URL urls = new URL ("https://test.api.neteller.com/v1/oauth2/token?grant_type=client_credentials");
HttpURLConnection connection = (HttpURLConnection) urls.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty ("Authorization", "Bearer " + test);
connection.setRequestProperty ("Content-Type", "application/json");
connection.setRequestProperty ("Cache-Control", "no-cache");
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.flush();
wr.close();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
String accessToken = "";
} catch(Exception e) {
e.printStackTrace();
}
为什么我的实现在这里失败了?
您的代码没有任何问题。问题是您正在尝试使用 普通会员 帐户进行 API 集成,而您需要使用 商家帐户为了那个原因。以下是您需要完成的步骤才能使其正常工作:
- 您需要获得一个测试商家帐户 (http://www.neteller.com/business/contact-sales/)。在 www.neteller.com 上注册会创建一个普通会员帐户,该帐户无法通过 API 接收付款。
- 拥有测试商家帐户后,您将需要 white-list 您将向 API 发出请求的 IP 地址。 (手册第 31 页)。
- 然后,您需要向其中添加一个应用程序(手册第 32 页)。
- 添加应用程序后,在授权中使用 "client ID" 和 "client secret" header - 就像现在一样,base64 编码值,用冒号 (:) 分隔.
我想向 Neteller 设置一个成功的请求,我正在尝试使用 Neteller 文档中的代码获取访问令牌。但是,它始终失败并出现以下异常:
java.io.IOException: Server returned HTTP response code: 401 for URL: https://test.api.neteller.com/v1/oauth2/token?grant_type=client_credentials
这是代码(同样来自 Neteller 文档):
String testUrl = " https://test.api.neteller.com";
String secureUrl = "https://api.neteller.com";
String url = testUrl;
if("live".equals(configBean.get("environment"))){
url = secureUrl;
}
url += "/v1/oauth2/token?grant_type=client_credentials";
String xml = "grant_type=client_credentials?grant_type=client_credentials";
xml = "";
String test = Base64.encodeBytes((accountID + ":" + secureID).getBytes());
try {
URL urls = new URL ("https://test.api.neteller.com/v1/oauth2/token?grant_type=client_credentials");
HttpURLConnection connection = (HttpURLConnection) urls.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setRequestProperty ("Authorization", "Bearer " + test);
connection.setRequestProperty ("Content-Type", "application/json");
connection.setRequestProperty ("Cache-Control", "no-cache");
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.flush();
wr.close();
BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
String accessToken = "";
} catch(Exception e) {
e.printStackTrace();
}
为什么我的实现在这里失败了?
您的代码没有任何问题。问题是您正在尝试使用 普通会员 帐户进行 API 集成,而您需要使用 商家帐户为了那个原因。以下是您需要完成的步骤才能使其正常工作:
- 您需要获得一个测试商家帐户 (http://www.neteller.com/business/contact-sales/)。在 www.neteller.com 上注册会创建一个普通会员帐户,该帐户无法通过 API 接收付款。
- 拥有测试商家帐户后,您将需要 white-list 您将向 API 发出请求的 IP 地址。 (手册第 31 页)。
- 然后,您需要向其中添加一个应用程序(手册第 32 页)。
- 添加应用程序后,在授权中使用 "client ID" 和 "client secret" header - 就像现在一样,base64 编码值,用冒号 (:) 分隔.