我正在尝试集成 adyen hpp 页面。我基本上使用与 github 上的示例相同的代码:https ://github.com/Adyen/adyen-java-sample-code/blob/master/src/com/adyen/examples/hpp/CreatePaymentOnHpp_SHA_256.java
在那个例子中,我只是将商人帐户、皮肤代码和 hmac 密码设置到我的数据中。
此外,我添加了一些代码来为 hmac 计算创建一个测试 url:
String queryString = params.keySet().stream()
.map(key -> {
try {
return key + "=" + URLEncoder.encode(params.get(key), "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return "Error: could not URL-encode value";
}).collect(Collectors.joining("&"));
String testUrl = "https://ca-test.adyen.com/ca/ca/skin/checkhmac.shtml" + "?" + queryString;
System.out.println(testUrl);
我还创建了一些代码来为 hpp 创建一个 url。它看起来像这样:
URIBuilder b = new URIBuilder(hppUrl);
for (Map.Entry<String, String> entry : params.entrySet()) {
b.addParameter(entry.getKey(), URLEncoder.encode(entry.getValue(), "UTF-8"));
}
return b.build().toString();
所以HMAC的计算似乎是正确的,因为testUrl总是正确的。但是,如果我单击生成的 hpp 链接,那么我总是会收到一个错误,我应该检查 HMAC 计算。
我希望有人能给我提示如何解决它