JAVA调用微信投放卡券——HTML5线上发券(JS-SDK接口)
来源:互联网 发布:tcp监听端口阻塞 编辑:程序博客网 时间:2024/05/17 01:17
第一:需要一张微信公众平台创建好了的卡券(注意:卡券有效期和库存)
第二:获取微信 “api_ticket” 获取的接口是url=”https://api.weixin.qq.com/cgi- bin/ticket/getticket?access_token=TOKEN&type=wx_card”
第三:js调用接口 引入下面两个JS文件。
wx.addCard({ cardList: [{ cardId: '', cardExt: '' }], // 需要添加的卡券列表 success: function (res) { var cardList = res.cardList; // 添加的卡券列表信息 }});
获取api_ticket就是请求https://api.weixin.qq.com/cgi- bin/ticket/getticket?access_token=“这里放的是access_token”&type=wx_card 前面的文章有讲如何获取access_token。获取api_ticket方式和获取access_token差不多。就不说怎么获取了
例(假如这是我们获取到的api_ticket ):
api_ticket = “123456789”
/** * 获取投放的微信卡券签名 */ @SuppressWarnings("deprecation") public static String getWxSingature(String timestamp, String nonceStr, String url, String cardid, String openid) { String singature = null; if (ticket.isAvailable()) { String ticketStr = api_ticket ;//这里的api_ticket就是上面举例的 ArrayList<String> list = new ArrayList<String>(); list.add(ticketStr); list.add(timestamp); list.add(nonceStr); list.add(cardid); list.add(openid); Collections.sort(list); String aa = timestamp + ticketStr + nonceStr + openid + cardid; MessageDigest md = null; try { md = MessageDigest.getInstance("SHA-1"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } // SHA1签名生成 md.reset(); md.update(aa.getBytes()); singature = DigestUtils.shaHex(list.get(0) + list.get(1) + list.get(2) + list.get(3) + list.get(4));// byteToHex(digest); } return singature; }
页面AJAX请求,进入当前方法
/** 发卡券 */ public void index() throws Exception { String openid = getOpenId();//获取OPENID。 Map<String, String> map = new HashMap<String, String>(); // 随机字符串 String nonceStr = create_nonce_str(); //卡券ID String cardId = "********************"; //时间戳 long time = System.currentTimeMillis() / 1000; String timestamp = Long.toString(time); String signType = "SHA1";//加密方式 //在此处就是调用了文章上面的那个方法 String signature= JsApi.getWxSingature(timestamp, nonceStr,url,cardId,openid); System.out.println("签名串"+signature); map.put("cardId", cardId); map.put("timestamp", timestamp); map.put("nonceStr", nonceStr); map.put("signType", signType); map.put("signature", signature); map.put("openid", openid); map.put("appId", "*************"); renderJson(map); } /** * 产生随机串--由程序自己随机产生 * @return */ private static String create_nonce_str() { return UUID.randomUUID().toString(); }
这里是页面的AJAX请求
$("#lingqu").click(function(){ $.ajax({ type: "GET", url: "/*****/front/card/index", async: true, dataType: "json", data: "", success: function(data){ wx.addCard({ cardList: [{ cardId: data.cardId, cardExt: '{"code":"", "openid": "'+data.openid+'", "nonce_str":"'+data.nonceStr+'","timestamp": "'+data.timestamp+'", "signature":"'+data.signature+'"}' }], // 需要添加的卡券列表 success: function (res) { var cardList = res.cardList; // 添加的卡券列表信息 } }); } })})
就完了,这里就是调起让客户领取卡券的页面,客户领取或者不领取会返回参数。
下面是导入的所有jar
import java.util.HashMap;import java.util.Map;import java.util.UUID;import java.security.MessageDigest;import java.util.ArrayList;import java.util.Collections;import java.util.List;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import org.apache.commons.codec.digest.DigestUtils;import com.jfinal.kit.HttpKit;
有什么不明白的QQ“767604112”
特别备注:微信卡券调起成功后,领取至卡包,返回领取状态,alert();打印不出来。这种情况,其实你的alert执行了,领取至卡包时候就执行了,建议使用跳转来链接验证是否执行。判断状态
wx.addCard({ cardList: [{ cardId: data.cardId, cardExt: '{"code":"","openid": "'+data.openid+'", "nonce_str":"'+data.nonceStr+'","timestamp": "'+data.timestamp+'", "signature":"'+data.signature+'"}' }], // 需要添加的卡券列表 success: function (res){ if(res.isSuccess=true){ location.hre="http://www.baidu.com"; var code=res.cardList[0].code; $("#wowow").html(code+"===="+card); } }, cancel:function(res){ alert("未领取"); }, fail:function(res){ alert("网络错误"); } });
阅读全文
3 0
- JAVA调用微信投放卡券——HTML5线上发券(JS-SDK接口)
- JAVA版 微信js-sdk接口调用demo
- 微信JS-SDK调用微信接口方法说明
- 调用微信JS-SDK接口上传图片
- 调用微信JS-SDK自定义分享以及其他接口
- 微信JS-SDK接口
- 微信js-sdk接口
- 微信JS-SDK 接口
- 调用微信JS-SDK
- 利用JS-SDK微信分享接口调用(后端.NET)
- 微信js接口调用
- 微信js-sdk 图片接口
- 微信JS-SDK接口操作
- 微信js-sdk 地理位置接口实例
- 微信开发(2):微信js sdk分享朋友圈,朋友,获取config接口注入权限验证(java)
- 微信分享接口调用-java和js 版本
- 关于微信 调用js-sdk接口报错的问题
- PHP调用微信JS-SDK接口上传头像保存到服务器
- 中国计算机学会CCF推荐国际学术会议和期刊目录-数据库/数据挖掘/内容检索
- 网络框架抽取(RxJava+Retrofit)
- 自定义View方法总结
- scrollview自动滑动到底部的问题
- 在ubuntu 14.04 64bit上安装rails遇到的一些gem问题
- JAVA调用微信投放卡券——HTML5线上发券(JS-SDK接口)
- js 对象的深复制和浅复制
- 电路设计_阅读英文数据手册并没有想象的那么难
- 函数嵌套,内置函数,闭包函数,迭代器,生成器,装饰器
- 语义分割-2:segnet网络
- android 设计模式 单例(Singleton)模式
- JAVA中List与Array之间互换
- git的分支管理功能
- DOS批处理中,处理字符串