微信小程序领取卡券

标签(空格分隔): php


开发前需要准备的工作

1 小程序和公众号要有绑定
2 小程序和该公众号要绑定到同一个开发平台下 [https://open.weixin.qq.com/]
3 公众号开通微信卡券功能
4 卡券是在公众号上生成的
5 小程序领取公众号上的卡券

看官方文档

公众号平台卡券文档[https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432]

小程序卡券文档[https://developers.weixin.qq.com/miniprogram/dev/api/card.html]

简单说一下创建卡券:
我使用的是[创建会议门票]
接口:http请求方式: POSTURL:https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN 参数:
1 access_token 调用接口凭证
2 POST数据 JSON数据 POST数据格式:
1 card_type string(24) 会议门票类型。
2 base_info JSON结构 基本的卡券数据,见下表,所有卡券通用。
3 meeting_detail string(3072) 本次会议于2015年5月10号在广州举行,会场地点:xxxx。 会议详情。
主要就是填充base_info信息自己看文档就明白了 返回值:
{
"errcode":0,
"errmsg":"ok",
"card_id":"p1Pj9jr90_SQRaVqYI239Ka1erkI"
}
**记得把card_id保存** 小程序领取卡券: 前端发起请求:wx.addCard(OBJECT)
后端把需要的参数给前端 参数:
cardList: [
{
cardId: '',
cardExt: '{"code": "", "openid": "", "timestamp": "", "signature":""}'
}, {
cardId: '',
cardExt: '{"code": "", "openid": "", "timestamp": "", "signature":""}'
}
]
cardId : 生成卡券返回的cardId
cardExt : json字符串
code : 每一张卡券都有一个code[创建时自己生成的code,这个code有特殊符号限制,和长度限制,自己去感受下微信的坑]
openid : 用户的openid
timestamp : 时间戳/秒
signature : 签名 回调:
处理你领取成功的业务逻辑

示例代码

小程序领取卡券:

    # 领取卡券
public function receiveCard()
{
# 小程序appid
$appId = input('appid');
# openid
$openId = input('openid);
# 订单id
$orderId = input('order_id'); $list = $this->getInfo($appId, $openId, $orderId); # 返回前端json数据格式
return $list;
} public function getInfo($appId, $openId, $orderId)
{
# 业务处理[比如:是否开启卡券功能 | 是否绑定了公众号 等等等.....]
if () xxxxxxxxx; # 查询订单获取保存的 cardId 和 每张卡券的唯一标识 code
$orderInfo = Db::table('')->field('code, card_id')->where()->select(); # 获取ApiTicket 主要用于生成签名
1 [签名文档] : [https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115] 2 [获取access_token] : [https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$config['appid']."&secret=".$config['secret'];] 3 [获取api_ticket] : [https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=wx_card] 注意:appid 和 secret 是公众号的,通过小程序的appid查询对应公众号的配置。apiTicket 和 accessToken 应该缓存或者是个公共的方法,避免多个地方使用失效。 # 处理数据返回数据
foreach ($orderInfo as $key => $value) { # 生成签名的参数
# nonce_str 自己生成的随机字符串31位
$params = [
'code' => $value['code'],
'api_ticket' => $apiTicket,
'timestamp' => time(),
'nonce_str' => sp_random_string(31),
'card_id' => $value['card_id'],
'openid' => $openId
];
$signature = $this->getSignature($params);
$value['openid'] = $params['openid'];
$value['timestamp'] = $params['timestamp'];
$value['signature'] = $signature;
$data[] = $value;
}
} # 生成签名
public function getSignature($params)
{
sort($params, SORT_STRING);
return sha1(implode($params));
} # 回调
public function cardCallBack()
{
# $_POST 和 input('post.') 竟然接收不到数据 没办法只能用 $GLOBALS['HTTP_RAW_POST_DATA']
$postData = $GLOBALS['HTTP_RAW_POST_DATA'];
$postData = json_decode($postData, true);
$cardList = $postData['card_list']; # 把数据转数组
foreach ($cardList as $k => $v) {
$v['cardExt'] = json_decode($v['cardExt'], true);
$data[] = $v;
}
foreach ($data as $key => $value) {
# 业务处理
}
}

微信小程序领取卡券的更多相关文章

  1. 微信小程序添加卡券到微信卡包,使用wx.addCard()方法传参及整体流程

    一.准备: 1.经微信认证过的微信公众号. 2.经微信认证过的微信小程序号. 先来看看微信小程序官方的文档,https://developers.weixin.qq.com/miniprogram/d ...

  2. 微信小程序开发——苹果手机领取卡券出现参数错误(安卓正常)

    异常描述: 微信小程序领取卡券,调用 wx.addCard 接口,安卓手机正常调起领取卡券界面,苹果手机.微信开发者工具中均出现“参数错误”,如图: 异常解析: 安卓手机能正常调起领取界面,那就说明领 ...

  3. 微信小程序学习指南

    作者:初雪链接:https://www.zhihu.com/question/50907897/answer/128494332来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  4. Spring+微信小程序 卡券打通

    近期公司项目需要使用到微信卡券模块,主要做的是在小程序打通微信卡券,实现小程序领取卡券的功能效果. 简单说下涉及的东西: Springboot—使用springboot做后端接口,非常便捷 并且根本是 ...

  5. 美团饿了么领取外卖优惠券微信小程序的开发及上线_怎样点外卖省钱_外卖小程序的开发及上线

    都1202年了,估计没人不知道外卖了,那么就有两种人在思考两种问题: 普通人:怎么点外卖划算? 程序员:怎么通过外卖赚钱? 话不多说,为了让你们相信我有能力来讲这块内容,先给你们看一个很简单的小程序: ...

  6. 微信小程序——微信卡券的领取和查看

    这里大致介绍下微信卡券的一些常见问题,不再介绍具体技术了,相关接口详见微信卡券. 1. 会员卡跟卡券一样么? 这个是一样的,至少在前端是一样处理的,最多也就是卡券设置展示不同.对于微信卡券领取和查看的 ...

  7. 微信小程序-卡券开发(前端)

    刚完成一个微信小程序卡券开发的项目.下面记录开发前,自己困惑的几个问题. 因为我只负责了前端.所以下面主要是前端的工作. 项目概述:按照设计图开发好首页上的优惠券列表,点击某个优惠券,输入手机号,点击 ...

  8. 微信小程序推广技巧、营销方案

    小程序已经成功上线了!那么,小程序线下如何推广?线下门店如何玩转小程序呢? 1.附近的小程序,让商家曝光率更高 小 程序自带“附近的小程序”功能,利用LBS定位功能提高商家专属微信小程序的曝光度,用户 ...

  9. 微信小程序开发——点击防重的解决方案

    对于一些涉及后端接口请求的单击事件,不论后端是否做了请求限制,前端还是有必要进行点击防重处理的. 这样既能减少对服务器端的压力,也能有效防止因重复请求而造成一些不可预期的异常. 尤其是接口请求结果处理 ...

随机推荐

  1. C++ throw的实验 & 异常类继承关系

    如果定义了 throw() 表示函数不抛出异常,这时候如果还是抛出,会导致运行时错误. #include <iostream> #include <exception> #in ...

  2. Linux 0.11中write实现

    看了一下Linux 0.11版本号write的实现,首先它在标准头文件unistd.h中有定义 int write(int fildes, const char * buf, off_t count) ...

  3. STM32F407VG (四)时钟配置

    1.STM32 F407VG 的starup_stm32f40_41xxx.s的例如以下位置调用 IMPORT SystemInit,之后调用main函数,所以 进入main函数时候就已经自己主动完毕 ...

  4. jqMobi(App Framework)入门学习(一)

    jqMobi(App Framework)入门学习(一) 1. 什么是jqMobi? jqMobi是由appMobi针对HTML5浏览器和移动设备开发的javascript框架.是个极其高速的查询选择 ...

  5. UBUNTU 16.04 下安装动态链接库方法(使用ln命令可以随意映射动态库,ldd查看缺少的动态库)

    一般先使用ldd 来查看该应用程序缺少什么东西,然后,再根据sudo apt install XXX 去安装相应的动态库. 假如没有对应的库,可以使用: sudo ln -s /usr/lib/lib ...

  6. js中console强大之处体现在哪

    js中console强大之处体现在哪 一.总结 一句话总结:在我用过的浏览器当中,我是最喜欢Chrome的,因为它对于调试脚本及前端设计调试都有它比其它浏览器有过之而无不及的地方.可能大家对conso ...

  7. nyoj--747--蚂蚁的难题(三)(dp背包)

    蚂蚁的难题(三) 时间限制:2000 ms  |  内存限制:65535 KB 难度:4 描述 蚂蚁终于把尽可能多的食材都搬回家了,现在开始了大厨计划. 已知一共有 n 件食材,每件食材有一个美味度  ...

  8. ORA-01261: Parameter db_recovery_file_dest destination string cannot be translat

    查看了Oracle的初始化文件. $cat /oracle/oms/102_64/dbs/initSID.ora 如:db_recovery_file_dest='/oracle/oms/flash_ ...

  9. 在Jquery里格式化Date日期时间数据

    在Jquery里格式化Date日期时间数据: $(function(){ //当前时间格式化yyyy-MM-dd HH:mm:ss alert(timeStamp2String(new Date(). ...

  10. 51nod 1101 换零钱 完全背包的变型 动态规划

    题目: 思路: ;i < ; i++){ for(int j = a[i];j <= n; j++){ dp[j] = (dp[j] + dp[j-a[i]])%mod; } } a[i] ...