我的编程空间,编程开发者的网络收藏夹
学习永远不晚

小程序优惠券源码开发的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

小程序优惠券源码开发的方法

这篇“小程序优惠券源码开发的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“小程序优惠券源码开发的方法”文章吧。

  小程序优惠券源码开发的方法

  如今许多线下商店都开通了小程序,并实现了优惠券接入,来吸引人流,那么对于开发新人来说,如何接入优惠券功能,下面为大家介绍。

  一、开发前准备

  1:申请微信公众号 和 微信小程序,这是两个不同的东西,都需要单独申请、不同的帐号;

  2:微信公众号需要开通微信卡券的功能;

  3:在微信公众号里面去绑定小程序;

  4:申请微信开放平台,并将微信公众号 和 微信小程序绑定到该开放平台。(注:绑定到开发平台下的作用只是为了获取unionid,因为同一用户在 公众号 和 小程序下获得的openid是不一样的,如果公众号 和 小程序都需要领取卡券,则最好通过unionid来跟踪用户;如果你只是开发微信小程序的领取卡券,则完全可以忽略第4点,博主本人也没有去绑定到微信开放平台,感觉步骤好多,特别麻烦!)

  二、开始开发

  1:获取微信卡券

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

  这边可以直接通过微信公众号提供的接口获取或者创建微信的卡券,此处不过多介绍,只是提一下这边要获取的access_token,网址如下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对象,由于请求次数有限制,这里使用全局静态变量保存起来

public static AccessToken getToken() throws WeixinException, JsonParseException, JsonMappingException, IOException{

if(token == null || token.getExpires_in() < System.currentTimeMillis()){

//拼接参数

String param = "?grant_type=" + grantType + "&appid=" + appId + "&secret=" + secret;

//创建请求对象

    HttpsClient http = new HttpsClient();

    //调用获取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这四个参数,比较简单,在文章结尾贴代码

  2:升级微信卡券

  其实这个步骤也可以省略,升级微信卡券的目的是可以直接从微信卡券跳转到对应的小程序,博主就偷懒了,直接跳过了这个步骤;

  不过升级卡券也比较简单,就是调用调用微信公众号的更改微信卡券接口(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:领取卡券

  3.1:先获取openId

  小程序端代码,通过调用wx.login获取code,再调用https://api.weixin.qq.com/sns/jscode2session接口获取openid,博主看到很多例子是直接从小程序端调用这个接口,但我事实中发现是行不通的,因为这个域名无法添加到小程序的request合法域名中,微信给的说明是不要在前端调用这个接口,需要通过后台
 

        wx.login({

          success: function (res) {

            var service_url = 'https://???/???/weixin/api/login?code=' + res.code;//需要将服务器域名添加到小程序的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代码
 

   

    @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>();

        //拼接参数

        String param = "?grant_type=" + grant_type + "&appid=" + appid + "&secret=" + secret + "&js_code=" + code;

        System.out.println("https://api.weixin.qq.com/sns/jscode2session" + param);

        //创建请求对象

        HttpsClient http = new HttpsClient();

        //调用获取access_token接口

        Response res = http.get("https://api.weixin.qq.com/sns/jscode2session" + param);

        //根据请求结果判定,是否验证成功

        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(会话密钥) ,在文章结尾贴代码;

  3.2:生成领取卡券的签名,并调用wx.addCard方法领取卡券

  这边写贴java后端代码
 

        public static ApiTicket ticket = null;//使用全局静态变量存储ApiTicket对象,当然如果使用缓存框架保存当然更好,这边只是做一个简单示例

@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的接口访问有次数限制,所以最好将获得到的api_ticket保存到缓存中,这边做法比较简单,直接使用的静态变量

if(ticket == null || ticket.getExpires_in() < System.currentTimeMillis()){

//创建请求对象

        HttpsClient http = new HttpsClient();

        ObjectMapper mapper = new ObjectMapper();

        AccessToken token = OpenApi.getToken();//这里获取的token就是最上方代码保存的微信公众号全局静态变量token

       

        //通过access_token调用获取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);//生成领取卡券需要的签名,并返回相关的参数

        for (Map.Entry entry : ret.entrySet()) {

            System.out.println(entry.getKey() + ", " + entry.getValue());

        }

        return ret;

}

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);//对参数的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();

        }

   //返回领取卡券需要的参数,其中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

以上就是关于“小程序优惠券源码开发的方法”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

小程序优惠券源码开发的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

小程序优惠券源码开发的方法

这篇“小程序优惠券源码开发的方法”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“小程序优惠券源码开发的方法”文章吧。    如
2023-06-26

npm小程序开发的方法

今天小编给大家分享一下npm小程序开发的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。  npm 支持  从小程序基础库
2023-06-26

如何使用PHP实现微信小程序的优惠券领取功能?

如何使用PHP实现微信小程序的优惠券领取功能?随着微信小程序的流行,优惠券已成为吸引用户的一种常见营销手段。在小程序中实现优惠券的领取功能,可以提高用户粘性和转化率。本文将介绍如何使用PHP来实现微信小程序的优惠券领取功能,并提供具体的代码
2023-10-27

Go语言开发点餐系统中的优惠券管理功能实现方法

Go语言开发点餐系统中的优惠券管理功能实现方法随着互联网和移动支付的快速发展,点餐系统已成为餐饮行业的重要工具。为了吸引更多用户和提高消费者的购买意愿,很多餐饮企业将优惠券作为一种常见的营销手段。本文将介绍如何使用Go语言开发一个优惠券管理
Go语言开发点餐系统中的优惠券管理功能实现方法
2023-11-01

微信小程序的开发方法

本篇内容主要讲解“微信小程序的开发方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“微信小程序的开发方法”吧!1、准备工作用没有注册过微信公众平台的邮箱注册一个微信公众号, 申请帐号 , 根据指
2023-06-29

原生小程序开发优化方案

本文提供了原生小程序开发优化方案的详细指南。优化方案包括架构优化(数据传输优化、分包加载、云函数)、代码优化(页面代码优化、组件代码简化、网络请求优化)、体验优化(首屏加载优化、页面渲染优化、用户输入优化)、性能监测和分析(开发者工具监控、第三方监测工具、性能报告分析),以及持续优化(版本管理、定期性能测试)。通过遵循这些方案,开发者可以提升小程序的加载速度、用户体验和稳定性。
原生小程序开发优化方案
2024-04-02

微信小程序代码包大小的优化方法

这篇文章主要讲解了“微信小程序代码包大小的优化方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序代码包大小的优化方法”吧!setDatasetData是小程序开发中使用最频繁的接口
2023-06-26

PHP开发点餐系统的优惠券使用规则设置功能实现方法是什么?

PHP开发点餐系统的优惠券使用规则设置功能实现方法随着电子商务的兴起,线上点餐已经成为人们日常生活中的一部分。为了吸引用户并提升用户体验,许多点餐系统都会提供优惠券的使用功能。在开发点餐系统时,优惠券使用规则设置是一个重要的功能。本文将介绍
PHP开发点餐系统的优惠券使用规则设置功能实现方法是什么?
2023-11-01

微信小程序开发模板与源码怎么选择

这篇文章主要介绍“微信小程序开发模板与源码怎么选择”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序开发模板与源码怎么选择”文章能帮助大家解决问题。  微信小程序开发模板与源码哪个更适合新手商
2023-06-26

微信小程序开发中源码分析生命周期

这篇文章主要介绍了微信小程序开发中源码分析生命周期的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序开发中源码分析生命周期文章都会有所收获,下面我们一起来看看吧。生命周期的概念在讲微信小程序生命周期之前,
2023-07-05

提高微信小程序开发效率的方法

小编给大家分享一下提高微信小程序开发效率的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信小程序小结  在接触的微信小程序开发过程中,不难发现微信小程序为了
2023-06-14

微信小程序打包插件开发的方法

今天小编给大家分享一下微信小程序打包插件开发的方法的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。如果你看过文档,相信你一定知
2023-06-26

美团外卖小程序创建界面开发的源码是什么

这篇文章主要讲解了“美团外卖小程序创建界面开发的源码是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“美团外卖小程序创建界面开发的源码是什么”吧!  美团外卖的小程序是比较典型的外卖的小程
2023-06-26

开发小程序的方式有哪些

本篇内容介绍了“开发小程序的方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、小程序开发难不难?许多企业希望了解小程序开发的难易度
2023-06-27

开发微信小程序的优势是什么

这篇文章将为大家详细讲解有关开发微信小程序的优势是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。小程序的真正优势:不是开发成本低,而是使用成本低。流量庞大流量永远是商业的本质。微信拥有大量的用户群体,
2023-06-27

开发搬家小程序的优势有哪些

这篇文章将为大家详细讲解有关开发搬家小程序的优势有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.微信裂变,好友推荐基本具有搬家需求的用户,往往会更偏向亲朋好友直接的好友推荐,而微信中可以与小程序具
2023-06-27

如何优化PHP开发的微信小程序?

如何优化PHP开发的微信小程序?随着微信小程序的普及,越来越多的开发者开始关注如何优化微信小程序的开发。在开发中,PHP是一种常用的后端语言,它提供了丰富的功能和严密的安全性。下面将介绍一些优化的方法和具体代码示例,以帮助开发者更好地使用P
2023-10-27

【开源】多多客小程序-微信小程序SaaS平台源码-微信第三方服务商必备

多多客小程序作为青否原班人马打造的微信小程序第三方SaaS平台,结合5年商城系统、3年小程序SaaS平台研发及运营经验,重点发力小程序个性化和各类营销玩法。多多客小程序开源版,基于doodoo.js,vue.js,Koa+Vue+Taro最
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录