一.使用范围

用于微信V3版商家券小程序发券插件签名的生成。

https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter9_3_1.shtml

二.注意事项

1.虽然是V3版本的微信支付,但是发券的插件签名用的还是V2的接口规则。

接口规则: 本接口使用V2版本接口规则。详见https://pay.weixin.qq.com/wiki/doc/api/wxpay_v2/jiekouguize/chapter1_1.shtml

2.注意,生成sgin必须全部参数都参与才行,不然签名就是错误的,如果是指定CODE,注意时间字段customize_send_time也要参与签名,带上0

3.重中之重

1)这个商户号,一定是商户号,不是子商户号

发券商户号 send_coupon_merchant string[8,15] 发券商户号
示例值:10016226

2)key一定是V2版本的key,不要用V3的

V2key位置:

V3key位置:

3)签名方式一定要用 HMAC-SHA256

4)签名源串请按照示例参数格式进行拼接,参数顺序按照字典序排列

5)参数名严格区分大小写

4.签名校验工具

https://pay.weixin.qq.com/wiki/doc/api/wxpay_v2/jiekouguize/tool.shtml

三.代码

1.主方法

/*** 微信商户号(注意是商户号,不是子商户号)*/public static String WECHAT_MCHID;/*** 微信api密钥V2*/
public static String WECHAT_APIV2KEY;public static String getSginForWeixinCoupon(List<SendCouponParam> sendCouponParams) throws Exception {Map<String, String> params = new HashMap<String, String>();for (int i = 0; i < sendCouponParams.size(); i++) {SendCouponParam sendCouponParam =  sendCouponParams.get(i);params.put("coupon_code"+i,sendCouponParam.getCoupon_code());params.put("out_request_no"+i,sendCouponParam.getOut_request_no());params.put("stock_id"+i,sendCouponParam.getStock_id());params.put("customize_send_time"+i,sendCouponParam.getCustomize_send_time());}params.put("send_coupon_merchant",WECHAT_MCHID);String key = WECHAT_APIV2KEY; //这里是微信V2api密钥String string = createSign(params);String stringSignTemp = string + "key=" + key;Mac sha256_HMAC = Mac.getInstance("HmacSHA256");SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(), "HmacSHA256");sha256_HMAC.init(secret_key);//  utf-8 : 解决中文加密不一致问题,必须指定编码格式String sgin = byteArrayToHexString(sha256_HMAC.doFinal(stringSignTemp.getBytes("utf-8"))).toUpperCase();System.out.println("sing:"+s);// 返回签名return sgin;
}

2.对参数排序,并拼接成字符串

    public static String createSign(Map<String, String> params){List<Map.Entry<String, String>> infoIds = new ArrayList<Map.Entry<String, String>>(params.entrySet());// 对所有传入参数按照字段名的 ASCII 码从小到大排序(字典序)Collections.sort(infoIds, new Comparator<Map.Entry<String, String>>() {@Overridepublic int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {return (o1.getKey()).toString().compareTo(o2.getKey());}});// 构造签名键值对的格式StringBuilder sb = new StringBuilder();for (Map.Entry<String, String> item : infoIds) {if (item.getKey() != null || item.getKey() != "") {String key = item.getKey();String val = item.getValue();if (!(val == "" || val == null)) {sb.append(key + "=" + val + "&");}}}return sb.toString();}

3.将加密后的字节数组转换成字符串

    private static String byteArrayToHexString(byte[] b) {StringBuilder hs = new StringBuilder();String stmp;for (int n = 0; b!=null && n < b.length; n++) {stmp = Integer.toHexString(b[n] & 0XFF);if (stmp.length() == 1) {hs.append('0');}hs.append(stmp);}return hs.toString().toLowerCase();}

4.小程序领取卡券微信小程序发券插件参数模板

@Data
public class SendCouponParams {@ApiModelProperty("微信卡券id即商家券批次号stock_id")private String stock_id;@ApiModelProperty("微信商家券发券凭证")private String     out_request_no;@ApiModelProperty("卡券核销码即券code coupon_code")private String coupon_code;@ApiModelProperty("自定义领取时间即customize_send_time")private String customize_send_time;}

微信V3版商家券小程序发券插件签名生成-JAVA相关推荐

  1. webstorm下载微信小程序插件_微信电脑版可以打开小程序喽 前提你得下载测试版...

    据微信开发者团队消息最新推出的小程序开发套件已经支持开发者面向电脑版微信测试微信小程序相关功能. 开发者下载新版本开发套件即可针对电脑版微信进行小程序调试,不过似乎也没有什么需要特别调试的地方. 既然 ...

  2. 如何使用计算机微信看小程序,新版微信pc版怎么打开小程序 pc版打开小程序方法...

    央视影音手机版6.7.3 安卓版 类型:影音播放大小:53.8M语言:中文 评分:9.8 标签: 立即下载 以前的电脑版微信是不支持小程序的,不能够搜到也不能够打开好友分享的小程序,不过在新版微信更新 ...

  3. html5pc转微信小程序,微信电脑版终于支持小程序 新版PC版微信实测

    PC版的微信终于要更新了,这次给用户带来了一个新的实用功能--支持小程序!一起来看看吧.此次PC版微信的升级版本为2.7.0,目前仍处于测试版阶段.PC版微信2.7.0测试版的安装包大小为85.3 M ...

  4. 如何使用计算机微信看小程序,微信电脑版怎么用小程序 在哪里打开

    现在有用户在玩微信中的小程序,不过在电脑端中部分用户却打不开小程序,那么到底是什么原因导致的呢?应该如何打开PC端中的微信小程序?先就通过这篇文章给大家介绍一下. 类别:聊天工具   大小:107.6 ...

  5. 微信美化版qu水印小程序源码分享 附接口

    介绍: 这次给大家带来一个免费接口,知道很多朋友都是没有接口所有导致小程序无法使用. 具体小程序安装方法,这里就不给大家列出来了,大家自己去其它地方找一下安装教程. 接口地址:http://qsy.n ...

  6. uniapp-小程序发券插件-领券进入微信卡包

    这两天有个需求,在小程序领券,然后该优惠券进入微信卡包. 官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter5_3_1.sht ...

  7. 微信上线刷掌支付小程序;扎克伯格谈自家万元 VR 头显:成本价,不学苹果;Fleet推公共预览版|极客头条

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  8. 微信推出“腾讯QQ”小程序;马化腾又要发红包;GitLab 12.5 稳定版发布| 极客头条...

    整理 | 屠敏 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注 ...

  9. 微信小程序:2022强大的修复版趣味心理测试小程序源码,趣味测试引流裂变神器,流量主激励广告实现管道收益

    大家还记得以前有一款趣味测嚒? 那款趣味测试可以说在当时是只要当时做小程序的基本是人手一款 不过后来自从腾讯更新小程序登录接口以后,那款小程序也就和接口一起挂了 那么呢现在小编就给大家发布修复过的,修 ...

最新文章

  1. Hexo集成Valine实现评论留言
  2. zippo油和zorro油的区别_干式和油侵式变压器的概念和区别
  3. mysql压缩表语句_MYSQL静态表、动态表、压缩表总结
  4. 洛谷P1467 循环数 Runaround Numbers
  5. node更新到最新版本_云顶之弈10.24版本临时更新永恩、劫大砍,最新上分阵容推荐...
  6. SpringBoot+Swagger2常用注解
  7. SAP C4C一个典型的客户Organization和employee的同步需求
  8. 1.JasperReports学习笔记1-了解JasperReports
  9. Spring Boot项目实战:BBT版西蒙购物网
  10. wiki迁移方法操作步骤
  11. Vue 动画的封装
  12. rs485如何使用_气体检测仪rs485和4-20ma接线方式有什么区别,该如何选择最优的接线方式...
  13. 感恩节福利:掘金携手异步社区 掘金小册新品发布2017异步社区优秀图书和作译者评选启动...
  14. 网页在线客服代码-侧边悬浮在线客服/QQ/微信/电话代码
  15. DWG转PDF在线转换怎么转?这个方法线上线下都能用
  16. 太宰治小说《人间失格》读后感及txt、epub、mobil电子图书下载
  17. cad修改快捷键_【扮家家云渲染】CAD快捷键修改干货教程
  18. 获取星期--蔡勒公式
  19. 通达OA远程代码执行漏洞通告
  20. 额温枪为什么老是测不准 额温枪调节方法

热门文章

  1. 银行面试中的着装要求(男生篇)
  2. 鑫路在线竞价订单管理系统-免费的在线竞价订单管理系统
  3. 微信重要更新,再也不怕被海王骗了..
  4. MYSQL数据库学习(二):结构化查询语言
  5. 浏览器自动填充数据,Cookie清除不了?,这是因为某些浏览器设置了,自动填充账户名密码,造成cookie没有删除的假像。
  6. 电动车质量排名前十名有哪些?看完这篇文章你就知道啦
  7. 测试SGMII Timing记录
  8. postfix main.cf配置参数
  9. GoTo Group上市首日市值达315亿美元;星巴克推出“明日的拿铁”创意饮食;华住出台“专项融资扶持计划” | 美通企业日报...
  10. 云计算机对环境有哪些要求吗,云计算对服务器有哪些要求