gpt4 book ai didi

java - adyen HPP 集成

转载 作者:行者123 更新时间:2023-11-30 02:20:59 24 4
gpt4 key购买 nike

我正在尝试集成 adyen hpp 页面。我基本上使用与 github 上的示例相同的代码:https://github.com/Adyen/adyen-java-sample-code/blob/master/src/com/adyen/examples/hpp/CreatePaymentOnHpp_SHA_256.java

在该示例中,我只是将商户帐户、skinCode 和 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 计算。

我希望有人能告诉我如何解决这个问题

最佳答案

默认情况下,URIBuilder 已对参数进行 URL 编码。您发布的实现对您的参数进行了两次编码,导致您的merchantReference 等参数与用于计算您的商家签名的签名字符串不同。

以下代码将解决该问题并创建有效的 HPP 链接:

URIBuilder b = new URIBuilder(hppUrl);
params.entrySet().forEach(e-> b.addParameter(e.getKey(),e.getValue()));
System.out.println(b.build().toString());

关于java - adyen HPP 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46826855/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com