接续昨天未完成的作业
依据规格书,HASH ID 是由给定的4组hash值算出
我先以写死的值来测试
结果无误
接下来就建了一个QpayHelper.java
拿来放跟丰收款相关的方法
public class QpayHelper {
}
首先将取得nonce的方法移进来
private String getNonce(){
HttpUtil util = new HttpUtil();
String shopNo= SystemConfigUtil.systemConfMap.get("ShopNo");
String nonceUrl= SystemConfigUtil.systemConfMap.get("Qpay_API_Url_Nonce");
Map<String,String> map = new HashMap<String,String>();
map.put("ShopNo", shopNo);
String json;
String nonce="";
try {
json = new ObjectMapper().writeValueAsString(map);
nonce=util.post(nonceUrl, json);
} catch (IOException e) {
e.printStackTrace();
}
return nonce;
}
再来是取得HASH ID,一样从前面的测试直接COPY过来,参数
改成从systemConfigMap取
private String getHashID(){
BigInteger hashA1 = new BigInteger(
SystemConfigUtil.systemConfMap.get("HASH_ID_A1"), 16);
BigInteger hashA2 = new BigInteger(
SystemConfigUtil.systemConfMap.get("HASH_ID_A2"), 16);
BigInteger hashB1 = new BigInteger(
SystemConfigUtil.systemConfMap.get("HASH_ID_B1"), 16);
BigInteger hashB2 = new BigInteger(
SystemConfigUtil.systemConfMap.get("HASH_ID_B2"), 16);
BigInteger hashA = hashA1.xor(hashA2);
BigInteger hashB = hashB1.xor(hashB2);
String hashID =hashA.toString(16)+hashB.toString(16);
return hashID.toUpperCase();
}
依据规格书,取得Nonce之後还要将Nonce转为sha256,IV即是SHA256後的末16位
这边我直接使用apache的codec了,加到pom:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.10</version>
</dependency>
nonce传入後直接使用DigestUtils的方法转sha256,很方便
private String getIV(String nonce){
String sha256hex = DigestUtils.sha256Hex(nonce);
String iv = sha256hex.substring(sha256hex.length()-16, sha256hex.length()).toUpperCase();
return iv;
}
取得sha256的值後取後16位并转大写就完成了
可以到永丰提供的验证页面看看自己的程序算出来的值是否正确
这边不得不说,JAVA真的是资源很丰富的语言,要什麽功能都有函式库可以call,
不过很多功能的底层是如何实现的,有时间的话我觉得还是可以看看source code
才不会只知道程序跑得动、不知道自己在做什麽
不过今天也快没时间了,先用再说
明天来开始实作sign签章的部分!
<<: 第 14 天 不断尝试直到成功( leetcode 017 )
本篇重点 Credit Enquires Short Stock Source Pandas Dat...
Virtual Judge ZeroJudge 题意 真.排序题 输入数字,按照要求输出排序後的结...
前言 在开赛前,先来做个小小的自我介绍好了!目前是火箭队的网页设计组,加入火箭队前有上过六角学院的U...
PHP array 相关函数 <?php /* array_reverse(array $ar...
前言 上一回我们使用 Pod 将应用程序部属到 Kubernetes 环境里,今天会介绍如何透过 S...