· 6 years ago · Jun 14, 2019, 01:48 AM
1function encodeURL(str){
2 return str.replace(/+/g, '-').replace(///g, '_').replace(/=+$/, '');
3}
4
5function decodeUrl(str){
6 str = (str + '===').slice(0, str.length + (str.length % 4));
7 return str.replace(/-/g, '+').replace(/_/g, '/');
8}
9
10//var key = "a30e84b7ccfa267570213cd3e1873eb23e3839811260102f5e159c35f47ff5f7";
11var obj = JSON.parse(request.data);
12var key = obj.transactionId;
13var time = Math.round(new Date().getTime());
14// var time = 1525518371264
15var appId = request.headers["app-id"];
16var authorization = request.headers["authorization"];
17var method = request.method.toUpperCase();
18var url = request.url;
19
20var urlParam = method + " /wallet/purchase/qr";
21var base64url = encodeURL(btoa(request.data));
22var seed = appId+authorization+time+urlParam+base64url;
23var hashedHmac = CryptoJS.enc.Hex.stringify(CryptoJS.HmacSHA256(seed, key));
24
25console.log(request.data);
26console.log(request);
27console.log(time)
28console.log(hashedHmac)
29console.log("base64url=>" + base64url)
30console.log("seed=>" + seed)
31postman.setEnvironmentVariable("timeqr", time);
32postman.setEnvironmentVariable("appid", appId);
33postman.setEnvironmentVariable("hmacqr", hashedHmac);
34
35import org.apache.jmeter.config.Argument;
36import org.apache.jmeter.config.Arguments;
37import org.apache.commons.codec.binary.Base64;
38import org.apache.commons.codec.digest.HmacUtils;
39import org.apache.commons.codec.digest.DigestUtils;
40
41String appId = "ovo-apps";
42String time = String.valueOf(System.currentTimeMillis());
43
44vars.put("time", time);
45vars.put("app-id", appId);
46
47String authorization = "${__property(user_token)}";
48vars.put("authorization-qr", authorization );
49
50String urlParam = sampler.getMethod() + " "+ sampler.getUrl().getPath();
51String bodyString = sampler.getArguments().getArgument(0).getValue();
52String bodyBase64 = Base64.encodeBase64URLSafeString(bodyString.getBytes());
53String baseMessage = appId + authorization + time + urlParam + bodyBase64;
54
55String secret = "${trxId}";
56String secretKey = DigestUtils.sha256Hex(secret);
57String signature = HmacUtils.hmacSha256Hex(secretKey, baseMessage);
58
59vars.put("signature", signature);