JAVA调用微信投放卡券——HTML5线上发券(JS-SDK接口)
2017-05-26 09:57
691 查看
第一:需要一张微信公众平台创建好了的卡券(注意:卡券有效期和库存)
第二:获取微信 “api_ticket” 获取的接口是url=”https://api.weixin.qq.com/cgi- bin/ticket/getticket?access_token=TOKEN&type=wx_card”
第三:js调用接口 引入下面两个JS文件。
获取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”
页面AJAX请求,进入当前方法
这里是页面的AJAX请求
就完了,这里就是调起让客户领取卡券的页面,客户领取或者不领取会返回参数。
下面是导入的所有jar
有什么不明白的QQ“767604112”
特别备注:微信卡券调起成功后,领取至卡包,返回领取状态,alert();打印不出来。这种情况,其实你的alert执行了,领取至卡包时候就执行了,建议使用跳转来链接验证是否执行。判断状态
第二:获取微信 “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("网络错误"); } });
相关文章推荐
- JAVA版 微信js-sdk接口调用demo
- 微信开发(2):微信js sdk分享朋友圈,朋友,获取config接口注入权限验证(java)
- PHP调用微信JS-SDK接口上传头像保存到服务器
- 微信JS-SDK接口调用及填坑攻略
- 微信公众号开发 从前台到Java后台 调用微信JS接口分享朋友圈
- 微信分享接口调用-java和js 版本
- 调用微信JS-SDK接口上传图片
- 关于微信网页调用js-sdk相关接口注意事项目(一级域名与二级域名互相干扰!!!)
- 利用JS-SDK微信分享接口调用(后端.NET)
- 调用微信JS-SDK自定义分享以及其他接口
- 微信JS-SDK调用微信接口方法说明
- 关于微信 调用js-sdk接口报错的问题
- java 生成js接口签名 页面调用JS-SDK
- 微信开发之JSSDK接口开发(Java)
- 关于微信网页调用js-sdk相关接口注意事项目(一级域名与二级域名互相干扰!!!)
- 使用微信JS-SDK调用微信浏览器的接口
- 微信JS-SDK 接口调用与 php 遇到的坑
- java微信js SDK页面签名
- java如何快速接入微信JS-SDK
- java 微信开发,各种接口调用,精心收集