首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >adyen HPP集成

adyen HPP集成
EN

Stack Overflow用户
提问于 2017-10-19 09:33:00
回答 1查看 668关注 0票数 2

我正在尝试整合adyen hpp页面。我基本上使用了与他们在github:256.java上的示例中相同的代码

在这个例子中,我只是将merchantAccount、skinCode和hmac秘密代码设置到我的数据中。

此外,我还添加了一些代码来为hmac计算创建一个测试url:

代码语言:javascript
复制
        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。看起来是这样的:

代码语言:javascript
复制
        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计算。

我希望有人能给我一个如何修复它的提示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-20 14:14:31

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

以下代码将修复此问题并创建一个有效的HPP链接:

代码语言:javascript
复制
URIBuilder b = new URIBuilder(hppUrl);
params.entrySet().forEach(e-> b.addParameter(e.getKey(),e.getValue()));
System.out.println(b.build().toString());
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46826855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档