欢迎使用CSDN-markdown编辑器

来源:互联网 发布:linux安装tgz文件 编辑:程序博客网 时间:2024/06/06 18:03

微信卡券调研

微信卡券现阶段主要分3个方向,商户卡券,公众号卡券,小程序卡券,经调研发现,其实小程序卡券处于刚开展阶段,且所用卡券接口均为公众号卡券,即小程序卡券只是调用了公众号的卡券资源。但因为对于开发者来说,小程序卡券需要调用的接口及方法和公众号卡券还是有一定区别,故分开叙述调研结果。

小程序卡券

先放结论: 小程序卡券现阶段适合有具体门店的企业使用,而不适合直接在小程序建立内部的卡券系统。原因主要是小程序卡券接口调用到的卡券为公众号创建的卡券,而公众号的卡券系统本身更偏向于线下(门店)使用。

提示:开发人员请先看公众号卡券,不然会导致后续开发部分进展极慢

功能:目前小程序官方给出API有两个,一个是领取卡券,一个是显示卡券列表。两个API跳转的都是微信卡包的相关页面,小程序只是起到引导跳转的作用。下面说说具体开发流程

领取卡券

wx.addCard(Object)

参数Object

参数Object

参数cardList

cardid: 公众号平台创建卡券后的ID

这里写图片描述
cardExt: 见下图

cardExt说明

关于其中的参数,需要注意的是,code 和 openid 虽然在‘是否参与前面’处值为‘是’ ,但只对需要自定义code的卡券有效,普通卡券这两个字段不需参与签名。即cardExt的最关键字段为timestamp和signature

signature

详细文档见微信JS-SDK说明文档中的附录4-卡券扩展字段及签名生成算法

这里过一遍签名流程

1.获取access_token(api测试地址: 微信公众平台接口调试工具):
用get方法 获取https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=xxx&secret=xxx
其中的appid和secret 为创建卡券的公众号AppID和secret

2.通过access_token用GET方法获取api_ticket
https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card
其中替换掉‘ACCESS_TOKEN’即可

3.将需要的数据进行签名
官方强烈建议开发者使用卡券资料包中的签名工具SDK进行签名或使用官方提供的debug工具进行校验

签名说明
1.将 api_ticket、timestamp、card_id、code、openid、nonce_str的value值进行字符串的字典序排序。
注:这里必填值有api_ticket、timestamp、card_id,另外3个值看申请的卡券和调用的频繁程度考虑是否加入签名。
2.将所有参数字符串拼接成一个字符串进行sha1加密,得到signature。
3.signature中的timestamp,nonce字段和card_ext中的timestamp,nonce_str字段必须保持一致(如果有nonce_str字段的话)。注:timestamp字段是一定要有的
得到signature后,就可以调用wx.addCard了

wx.addCard({    cardList: [        {            cardId: 'xxx',            cardExt: '{"timestamp": "1506478843", "signature":"xxx"}'        }    ],    success: function(res) {        console.log(res) // 卡券添加成功后返回小程序时的回调    },    fail: function (res) {        console.log(res) // 卡券添加失败后返回小程序时的回调    }})

调用后根据卡券创建时定义的字段,显示一个卡券页面,中有按钮,成功的话按钮为‘可领取’之类的字样,失败则有几种可能,具体见卡券签名错误排查方法
领取后,返回的值中有个code值,应该存储在后台,
用POST方法通过https://api.weixin.qq.com/card/code/decrypt?access_token=TOKEN接口解密,参数填写获取的code即可

{ "encrypt_code":"XXIzTtMqCxwOaawoE91+VJdsFmv7b8g0VZIZkqf4GWA60Fzpc8ksZ/5ZZ0DVkXdE"}

返回的值为一串数字,这个数字便是后面核销卡券时的真实code值
解密接口文档中的 2.2解码接口

卡券列表

wx.openCard(Object)

前面addCard成功的话,这步就能很快过了,直接上代码

wx.openCard({    cardList: [        {            cardId: 'xxx',            code: 'xxx'        },        {            cardId: 'xxx',            code: 'xxx'        }    ],    success: function(res) {        console.log(res) // 卡券添加成功后返回小程序时的回调    },    fail: function (res) {        console.log(res) // 卡券添加失败后返回小程序时的回调    }})

cardId为公众号卡券的ID,code为我们解密后得到的数字,这里的code其实还能通过别的途径获得,如用户直接在微信卡包中点该卡券看到的数字便是,这里是方便线下核销用。
调用成功后,只填一个card会直接显示该卡券的具体内容,超过一个则会显示一个基本卡券信息的列表。

注:openCard这个API不会在微信开发者工具中显示,而addCard可以显示

公众号卡券

结论:
公众号卡券更适合拥有线下门店的商户企业使用,最能体现的一点就是,跟商户号不同,公众号卡券只有在设置快速使用的时候才能再支付中与卡券有交互,但快速使用的支付金额为客户手动填写,即需要线下与服务员交流后,才方便填写具体金额及进行商品交付。其余的扫码核销及报号码核销更是必须到线下直接与服务员交涉才能进行。试想下,如果在线上某个H5页面客户点了使用优惠券的交互,但是账单上却没有丝毫体现,难免会影响到客户的体验。优点:卡券样式可塑性较强,可保存日期较长。

创建卡券的前提

  • 基本的营业资质及相关文件
  • 门店的基本资料
  • 配置好开发基本配置
    以上三条缺一不可,当然这次调研填写的门店的是一个假的门店信息,真实的用户不建议,因为会导致后续部分功能无法实现,如绑定小程序时,一个地图对应的门店只能绑定一个公众号下的小程序。
    基本配置见下图
    这里写图片描述
    以上3条基本资料完善后,就可以创建卡券了,这里有两种创建方式

  • 在公众号上创建(客户)

  • 通过调用API创建(开发人员)

公众号创建的卡券,如果需要在H5或小程序中涉及到卡券的话,需要注意将卡券ID及相关信息提供给开发人员;

API创建的开发文档,其中的微信卡券基本包含公众号卡券开发的所有信息,此处不赘述

商户号卡券

结论:商户号较为合适短期优惠(3个月),能直接把优惠方式显示在微信支付的界面。
支付界面见下图

这里写图片描述
点击绿色字样可选择优惠方式(商家创建的优惠)
这里写图片描述

开通卡券前准备

两种方式二选一
- 预充值金额(预充值减免额度,如一天100张订单,每单优惠10元,则当天需预存100*10=1000元。会造成商家部分现金流卡在微信内。)
- 接口升级(不需预存金额, 但需要开发人员升级接口通过官方验收,证明开发人员有能力处理相关数据信息)

升级接口文档
升级接口完成后,便可创建免充值代金券,折扣减免劵等。

总结下来3中不同的渠道,定位最清晰的就是公众号卡券。跟H5相关的,门店活动相关的,公众号相关的都应该毫不犹豫的选择公众号卡券,其余两种渠道,小程序卡券由于API尚未完善,暂时只提供了添加和查看具体卡券的功能,离小程序自身做到增删改查卡券尚有一段距离,建议把卡券作辅助使用,可作为引流到公众号的方式之一。商户卡券适合短期活动,可以随时停止。用户在支付前无法计算相关折扣信息,支付后商户能在订单中查询到使用的卡券相关信息。且开发人员无法查询用户获得的商户卡券信息。

原创粉丝点击