一级片大奶子_色又黄又爽18禁免费视频_热久久久久久久_久久久精品一区二区_日韩av不卡在线播放_精品国内自产拍在线观看视频

商城系統(tǒng) 注冊

小程序領(lǐng)取優(yōu)惠券接入流程,小程序優(yōu)惠券源碼開發(fā)

2020-09-27|HiShop
導讀:如今許多線下商店都開通了小程序,并實現(xiàn)了優(yōu)惠券接入,來吸引人流,那么對于開發(fā)新人來說,如何接入優(yōu)惠券功能,下面為大家介紹。...

  小程序領(lǐng)取優(yōu)惠券接入流程,小程序優(yōu)惠券源碼開發(fā)

  如今許多線下商店都開通了小程序,并實現(xiàn)了優(yōu)惠券接入,來吸引人流,那么對于開發(fā)新人來說,如何接入優(yōu)惠券功能,下面為大家介紹。

  一、開發(fā)前準備

  1:申請微信公眾號 和 微信小程序,這是兩個不同的東西,都需要單獨申請、不同的帳號;

  2:微信公眾號需要開通微信卡券的功能;

  3:在微信公眾號里面去綁定小程序;

小程序領(lǐng)取優(yōu)惠券接入流程,小程序優(yōu)惠券源碼開發(fā)

  4:申請微信開放平臺,并將微信公眾號 和 微信小程序綁定到該開放平臺。(注:綁定到開發(fā)平臺下的作用只是為了獲取unionid,因為同一用戶在 公眾號 和 小程序下獲得的openid是不一樣的,如果公眾號 和 小程序都需要領(lǐng)取卡券,則最好通過unionid來跟蹤用戶;如果你只是開發(fā)微信小程序的領(lǐng)取卡券,則完全可以忽略第4點,博主本人也沒有去綁定到微信開放平臺,感覺步驟好多,特別麻煩!)

  二、開始開發(fā)

  1:獲取微信卡券

  https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1451025272

  這邊可以直接通過微信公眾號提供的接口獲取或者創(chuàng)建微信的卡券,此處不過多介紹,只是提一下這邊要獲取的access_token,網(wǎng)址如下https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183,代碼直接如下:
 

private static String grantType = "client_credential";
public static String appId = ""; //微信公眾號appid
    public static String secret = ""; //微信公眾號密鑰
public static AccessToken token = null; //微信公眾號的accessToken對象,由于請求次數(shù)有限制,這里使用全局靜態(tài)變量保存起來
public static AccessToken getToken() throws WeixinException, JsonParseException, JsonMappingException, IOException{
if(token == null || token.getExpires_in() < System.currentTimeMillis()){
//拼接參數(shù)
String param = "?grant_type=" + grantType + "&appid=" + appId + "&secret=" + secret;
//創(chuàng)建請求對象
    HttpsClient http = new HttpsClient();
    //調(diào)用獲取access_token接口
    Response res = http.get("https://api.weixin.qq.com/cgi-bin/token" + param);
    System.out.println(res.asString());
    ObjectMapper mapper = new ObjectMapper();
    token = mapper.readValue(res.asString(),AccessToken.class);
}
    return token;
}

  其中需要jackson和weixin4j的jar包,比較普遍,請自行下載;而AccessToken對象也比較簡單,就errcode、errmsg、access_token、expires_in這四個參數(shù),比較簡單,在文章結(jié)尾貼代碼

  2:升級微信卡券

  其實這個步驟也可以省略,升級微信卡券的目的是可以直接從微信卡券跳轉(zhuǎn)到對應(yīng)的小程序,博主就偷懶了,直接跳過了這個步驟;

  不過升級卡券也比較簡單,就是調(diào)用調(diào)用微信公眾號的更改微信卡券接口(URL:https://api.weixin.qq.com/card/update?access_token=TOKEN),添加幾個字段,可以參考微信官方文檔3.1,鏈接如下:https://mp.weixin.qq.com/cgi-bin/announce?action=getannouncement&key=1490190158&version=1&lang=zh_CN&platform=2

  3:領(lǐng)取卡券

  3.1:先獲取openId

  小程序端代碼,通過調(diào)用wx.login獲取code,再調(diào)用https://api.weixin.qq.com/sns/jscode2session接口獲取openid,博主看到很多例子是直接從小程序端調(diào)用這個接口,但我事實中發(fā)現(xiàn)是行不通的,因為這個域名無法添加到小程序的request合法域名中,微信給的說明是不要在前端調(diào)用這個接口,需要通過后臺
 

        wx.login({
          success: function (res) {
            var service_url = 'https://???/???/weixin/api/login?code=' + res.code;//需要將服務(wù)器域名添加到小程序的request合法域名中,而且必須是https開頭
            wx.request({
              url: l,
              data: {},
              method: 'GET',
              success: function (res) {
                console.log(res);
                if (res.data != null && res.data != undefined && res.data != '') {
                  wx.setStorageSync("openid", res.data.openid);//將獲取的openid存到緩存中
                }
              }
            });
          }
        });

  后端java代碼
 

   /**
     * 小程序后臺登錄,向微信平臺發(fā)送獲取access_token請求,并返回openId
     * @param code
     * @return 用戶憑證
     * @throws WeixinException
     * @throws IOException 
     * @throws JsonMappingException 
     * @throws JsonParseException 
     */
    @RequestMapping("login")
    @ResponseBody
    public Map<String, Object> login(String code, HttpServletRequest request) throws WeixinException, JsonParseException, JsonMappingException, IOException {
        if (code == null || code.equals("")) {
            throw new WeixinException("invalid null, code is null.");
        }
        
        Map<String, Object> ret = new HashMap<String, Object>();
        //拼接參數(shù)
        String param = "?grant_type=" + grant_type + "&appid=" + appid + "&secret=" + secret + "&js_code=" + code;
        
        System.out.println("https://api.weixin.qq.com/sns/jscode2session" + param);
        
        //創(chuàng)建請求對象
        HttpsClient http = new HttpsClient();
        //調(diào)用獲取access_token接口
        Response res = http.get("https://api.weixin.qq.com/sns/jscode2session" + param);
        //根據(jù)請求結(jié)果判定,是否驗證成功
        JSONObject jsonObj = res.asJSONObject();
        if (jsonObj != null) {
            Object errcode = jsonObj.get("errcode");
            if (errcode != null) {
                //返回異常信息
                throw new WeixinException(getCause(Integer.parseInt(errcode.toString())));
            }
            
            ObjectMapper mapper = new ObjectMapper();
            OAuthJsToken oauthJsToken = mapper.readValue(jsonObj.toJSONString(),OAuthJsToken.class);
            ret.put("openid", oauthJsToken.getOpenid());
        }
        return ret;
    }

  其中OAuthJsToken對象的字段為:openid、expires_in、session_key(會話密鑰) ,在文章結(jié)尾貼代碼;

  3.2:生成領(lǐng)取卡券的簽名,并調(diào)用wx.addCard方法領(lǐng)取卡券

  這邊寫貼java后端代碼
 

        public static ApiTicket ticket = null;//使用全局靜態(tài)變量存儲ApiTicket對象,當然如果使用緩存框架保存當然更好,這邊只是做一個簡單示例
/**
* @Description: 獲取領(lǐng)取卡券獲取簽名等參數(shù)
* @param cardId:需要領(lǐng)取的卡券的cardId
* @return
* @throws WeixinException
* @throws JsonParseException
* @throws JsonMappingException
* @throws IOException
*/
@RequestMapping("getCardSign")
@ResponseBody
public Map<String, String> getCardSign(String cardId) throws WeixinException, JsonParseException, JsonMappingException, IOException{
Map<String, String> ret = new HashMap<String, String>();
//先要獲取api_ticket,由于請求api_ticket的接口訪問有次數(shù)限制,所以最好將獲得到的api_ticket保存到緩存中,這邊做法比較簡單,直接使用的靜態(tài)變量
if(ticket == null || ticket.getExpires_in() < System.currentTimeMillis()){
//創(chuàng)建請求對象
        HttpsClient http = new HttpsClient();
       
        ObjectMapper mapper = new ObjectMapper();
       
        AccessToken token = OpenApi.getToken();//這里獲取的token就是最上方代碼保存的微信公眾號全局靜態(tài)變量token
       
        //通過access_token調(diào)用獲取api_ticket接口
    Response res = http.get("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=" + token.getAccess_token() + "&type=wx_card");
    System.out.println(res.asString());
    ticket = mapper.readValue(res.asString(), ApiTicket.class);
        }
       
        ret = sign(ticket.getTicket(), cardId);//生成領(lǐng)取卡券需要的簽名,并返回相關(guān)的參數(shù)
 
        for (Map.Entry entry : ret.entrySet()) {
            System.out.println(entry.getKey() + ", " + entry.getValue());
        }
        return ret;
}
/**
* @Description: 生成卡券需要的簽名并返回參數(shù)
* @param api_ticket:
* @param cardId:需要領(lǐng)取的卡券的cardId
* @return
*/
public static Map<String, String> sign(String api_ticket, String cardId) {
        Map<String, String> ret = new HashMap<String, String>();
        String nonce_str = create_nonce_str();
        String timestamp = create_timestamp();
        String signature = "";
        
        String param[] = new String[4];
        
        param[0] = nonce_str;
        param[1] = timestamp;
        param[2] = api_ticket;
        param[3] = cardId;
        
        Arrays.sort(param);//對參數(shù)的value值進行字符串的字典序排序
        
        StringBuilder sb = new StringBuilder();
   for(String b : param){
    sb.append(b);
   }
   System.out.println(sb);
        //對上面拼接的字符串進行sha1加密,得到signature
        try{
            MessageDigest crypt = MessageDigest.getInstance("SHA-1");
            crypt.reset();
            crypt.update(sb.toString().getBytes("UTF-8"));
            signature = byteToHex(crypt.digest());
        }catch (NoSuchAlgorithmException e){
            e.printStackTrace();
        }catch (UnsupportedEncodingException e){
            e.printStackTrace();
        }
 
   //返回領(lǐng)取卡券需要的參數(shù),其中nonceStr和timestamp必須和簽名中的保持一致
        ret.put("card_id", cardId);
        ret.put("api_ticket", api_ticket);
        ret.put("nonceStr", nonce_str);
        ret.put("timestamp", timestamp);
        ret.put("signature", signature);
 
        return ret;
    }

  其中ApiTicket對象的屬性有:errcode、errmsg、ticket、expires_in,在文章結(jié)尾貼出該代碼

  再貼小程序端代碼

  ok,如果領(lǐng)取成功,可以直接到微信卡包里面查看。下面貼出AccessToken、ApiTicket、OAuthJsToken的jav

  以上是這篇微信小程序領(lǐng)取優(yōu)惠券接入流程,希望可以幫助到大家,謝謝。

 

HiShop小程序工具提供多類型商城/門店小程序制作,可視化編輯 1秒生成5步上線。通過拖拽、拼接模塊布局小程序商城頁面,所看即所得,只需要美工就能做出精美商城。

更多小程序開發(fā)案例,盡在:http://www.gstsqh.com.cn/xiaocx/kaifa.html

 

電話咨詢 預約演示 0元開店
主站蜘蛛池模板: 美女黄视频网站|热热色影音先锋|国产精品久久久久久久久久ktv|最近免费中文字幕MV在线视频3|日本在线无|夜夜爽久久揉揉一区 | 少妇天天干|一本久道久久综合中文字幕|色哟哟国产成人精品免费|国产主播户外勾搭人xx|精品无人区无码乱码毛片国产|亚洲欧美中日精品高清一区二区 | 亚洲国产一区在线观看|免费=a级伦费影视在线观看|日本在线不卡一区二区三区|91在线免费视频观看|俄罗斯=a级毛片|丁香五月开心婷婷综合中文 | 各处沟厕大尺度偷拍女厕嘘嘘|亚洲一区二区不卡视频|亚洲淫片|又黄又爽又色成人网站|999这里只有精品|免费国产乱理伦片在线观看 | j=ap=anese熟睡侵犯|无码精品日韩中文字幕|国产黄色在线看|欧美高清g=ayxxx|日韩每日更新|777777影院 | #NAME?|国产成人亚洲欧洲在线观看|午夜私人影院网站|九九九亚洲|亚洲=aV成人无码久久精品老人|#NAME? | 国产一区二区在线精品|久久久蜜桃=av|在线观看超碰|国内成人精品|髙清视频播放在线观看|中文国产字幕在线不卡 | 久久久久高潮毛片免费全部播放|精品国产一区二区三区久久狼黑人|7878视频在线观看|国产日韩精品视频一区二区三区|#NAME?|91p九色成人 | 久久91|伊人网中文字幕|9191免费视频|黄动漫免费在线观看|女人和拘做受大片免费看|精品无线一线二线三线 | 在线免费观看成年人视频|欧美日韩一区二区三区四区高清|激情免费看片|97久久超碰|www.蜜臀=av.com|亚洲=a一级 | 国产欧美一区二区三区在线|朋友的丰满人妻中文字幕|中文字幕乱伦视频|日韩黄色三级|台湾综合色|伊人影院久久 国产麻豆另类=aV|极品久久久久|桃花色综合影院|国产夜恋视频在线观看|美女=av免费在线观看|久久久国产一区二区三区四区 | 青草国产精品久久久久久|公和我做好爽添厨房中文字幕|99re6这里有精品热视频|六月婷婷精品视频在线观看|女教师办公室被强在线播放|日韩一区二区三区不卡视频 | 超碰在线进入|一级全黄少妇免费录像片|欧美大成色WWW永久网站婷|免费看=a=a=a=a=a级淫片涩爱=av|亚洲=av成人一区二区三区在线观看|99一级片 | 扒开双腿吃奶呻吟做受视频|日本视频在线观看一区二区三区|国产欧美日韩精品在线一区|国产精品色婷婷亚洲综合看|午夜专区|亚洲人成人毛片无遮挡 | 中国女人FREEXXXXXXX|一色一伦一区二区三区的区别|亚洲αⅴ无码乱码在线观看性色|怡春院综合|精品人妻无码一区二区三区百度|国产精品wwwwww | 人人精品久久|无码=aV潮喷|国产小视频国产精品|18深夜在线观看免费视频|好久被狂躁=a片视频无码免费视频|国产一级淫片=a免费播放鬼片 | 久久久女人与动物群交毛片|草莓国产视频|一区在线播放|97视频精品|久草福利在线视频|久久久久亚洲=av成人网人人软件 | 1000部爽爽视频免费|亚欧乱色国产精品免费视频|无人在线视频观看免费|68日本xxxxxxxxx|bbbbbbbbb免费毛片视频|激情综合丁香 | HD性丰满白嫩白嫩少妇=aV|免费成人黄色大片|久久精品中文字幕|久久无码国产专区精品|欧美=a∨|91精品一久久香蕉国产线看观看软件 | 国产精品视频专区|国产在线国产|精品一区二区三区成人精品|国产不卡在线观看免费视频|蜜桃综合|欧美精品日韩一区 | 少妇天天干|一本久道久久综合中文字幕|色哟哟国产成人精品免费|国产主播户外勾搭人xx|精品无人区无码乱码毛片国产|亚洲欧美中日精品高清一区二区 | 国产乱妇乱子在线播视频播放网站|国产免费人成在线视频|精品欧洲=av无码一区二区14|精品少妇一区二区三区在线观看|播放一区二区|国产精品久久久久久久久无码日本蜜乳 | 91久久香蕉国产熟女线看|人成精品视频三区二区一区|99久久精品国产91久久久|婷婷影院91xxxss|26UUU另类亚洲欧美日本|69p=ao强力打造免费高清在线 | 激情小说亚洲色图|我要干成人网|久久国产免费看|最新国产成人|久久免费影视|黄瓜视频网址 | 羞羞涩涩网站|亚洲高清免费看|色爱天堂|国产一级无码片在线观看免费|91=av视频观看|推川悠里在线观看=av影片 | 蜜臀=aⅴ精品一区二区三区|5c5c5c5c|午夜免费|四虎影视最新免费版|色噜噜狠狠狠狠色综合久|精品服丝袜无码视频一区|国产一区日韩一区 | 四虎影视8848dd|国产99久久久国产精品|综合视频在线观看|人成在线|国产偷国产偷亚洲高清人白洁|法国一级毛片 | 97超级碰碰人妻中文字幕|女人色毛茸茸视频|久久久精品欧美一区二区免费|四虎永久在线观看|国产激情91久久精品导航|欧美午夜影院免费观看 | 精品国产乱码久久久久久绯色|免费=av入口|色综合久久夜色精品国产=aV|国产青年男男GV|添逼视频|国产vr精品专区 | 国精产品999一区二区三区有限|日韩毛片|成人免费看片又大又黄|麻豆出品视频在线|4438全国成人免费|青草视频精品 | 啦啦啦免费高清在线观看|黄色一级特级片|亚洲人成网站在线播放2019|黄色片在线观看视频|一区二区三区毛=a片特级|四虎最新网 | 狠狠色狠狠色狠狠五月|在线看片国产|午夜院线|国产一区二区三区免费观看视频|#NAME?|深夜男人你懂的六月婷婷天堂 | 亚洲=aV日韩=aV无码=aV|鲁死你=av资源站|另类中文字幕|中国68xxxxxxxxx69|永久免费=a级在线视频|久久婷婷色一区二区三区 | 国产成人=av一区|日本大片免=a费观看视频老师|在线观看高清视频|一机毛片|久久九九兔免费精品6|久久爽精品区穿丝袜 | 欧洲亚洲综合一区二区三区|99国产精品久久|免费v=a国产高清大片在线|国产成人精品一区二三区在线观看|91麻豆精品国产91|欧美日韩福利视频 | 欧美野外伦姧在线观看|人妻饥渴偷公乱中文字幕|麻豆宣传片|#NAME?|色网激情|亚洲欧美日韩视频一区 | 亚洲天天干|女人十八一级毛片|www.四虎影院在线观看|911精产国品一二三区在线观看|欧美性猛交|久久久久久久岛国免费网站 | 国产v=a无码高清|亚州=av免费|免费的网站www|国内外成人免费在线视频|日韩精品影院|一本无码=aV中文出轨人妻 | 欧美区二区三区|大美女一区二区三区|午夜国产精品影院在线观看|日本丰满人妻久久久久久久|99视频精选|丰满人妻熟妇乱又伦精品劲 | 铠甲勇士全52集免费播放|饥渴丰满少妇大力进入|免费女人高潮流视频在线观看|欧美国产国产综合|麻豆tv在线观看|男人操女人的免费视频 | www.97色.com|免费看日韩|永久黄网站色视频免费看|人妻日韩视频一区二区|亚洲黄视频|wwwwxxxx美国 |