添加卡券是随便就可以加吗?还是需要什么东西?
测试添加卡券,显示"system error"
js代码如下:
function addCard() {
wx.addCard({
cardList: [{
cardId: '100001',
cardExt:'{"code":"","openid":"","nonceStr":"${api_nonceStr}", "timestamp": ${timestamp}, "signature":"${signature}"}'
}],
success: function (res) {
alert('已添加卡券:' + JSON.stringify(res.cardList));
}
});
}
生成签名的后台代码如下:
public static String makeApiSignature(String api_ticket, String timestamp, String nonce_str) {
String card_id = "100001";
String[] values = {api_ticket, timestamp, card_id, nonce_str};
Arrays.sort(values);
String sourceStr = "";
for (int i = 0; i < values.length; i++) {
sourceStr += values[i];
}
LOGGER.info("source:" + sourceStr);
String signature = "";
try {
MessageDigest md = MessageDigest.getInstance("SHA-1");
md.reset();
md.update(sourceStr.getBytes("UTF-8"));
signature = byteToHex(md.digest());
} catch (Exception e) {
e.printStackTrace();
}
return signature.toUpperCase();
}
private static String byteToHex(final byte[] hash) {
Formatter formatter = new Formatter();
for (byte b : hash) {
formatter.format("%02x", b);
}
String result = formatter.toString();
formatter.close();
return result;
}
其中nonce_str用的是randomUUID截取前16位
请问是啥原因啊
1
defia 2015-06-24 11:22:22 +08:00
我看了一下我这里生产环境下用的代码,CardExt里首先code openid压根都没写,其次压根没有nonceStr
|
2
defia 2015-06-24 11:23:21 +08:00
也就是说,CardExt里只有timestamp和signature
|
6
crs0910 2015-06-24 11:56:59 +08:00
@defia 请问下 signature 这个是怎么算出来的,微信的文档里面写的是把几个参数的值按照字典序排序然后加密,但是官方下面给的例子又不是按照字典序排序来的。
|
7
crs0910 2015-06-24 12:05:55 +08:00
lz 是江大神么?
|
8
delavior OP @defia 字段名确实写错了,不过改了还是同样的错;至于卡,我没有啊,我就是想问,要测试添加卡券需要什么前提条件。。。
|
10
defia 2015-06-24 13:34:53 +08:00 1
|
12
LuckyHJH 2015-06-24 21:21:34 +08:00
搞腾讯的东西真的蛋疼得要死,想当初搞微信卡券的时候,最后变成直接弃用,然后自己生成兑换码,再做了个网页来验证 - -
|
13
daylight890307 2015-07-25 10:20:53 +08:00
我也是遇到了这个问题 请问楼主解决了吗
|