微信扫码关注公众号,公众号发放红包。一
2017-09-09 15:07
267 查看
需求
解决方案
步骤
这里我们选择永久二维码
代码见第二章
微信公众平台技术文档->账号管理->生成带参数的二维码
微信公众平台技术文档->消息管理->接收消息-接收事件推送->扫描带参数二维码事件
扫码
是否关注公众号
已关注,则微信会将带场景值扫描事件推送给开发者,根据场景判断当前二维码是否失效
失效,公众号推送消息:当前二维码已失效
未失效,获取当前扫码用户openid查询是否已经领取过红包
已领取,则公众号推送消息到微信用户通知今日已领取
未领取
则调用发送红包接口,发送红包,发送成功,则存储当前微信用户信息,包含唯一 openid。
设置当前扫描二维码失效
未关注,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者
根据场景值查询二维码是否失效
失效,公众号推送消息:当前二维码已失效
未失效,获取当前扫码用户openid查询是否已经领取过红包
已领取,则公众号推送消息到微信用户通知今日已领取
未领取
则调用发送红包接口,发送红包,发送成功,则存储当前微信用户信息,包含唯一 openid。
设置当前扫描二维码失效
生成带参数的二维码
目前有2种类型的二维码:
临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
用户扫描带场景值二维码时,可能推送以下两种事件:
用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。
获取带参数的二维码的过程包括两步
首先创建二维码ticket
然后凭借ticket到指定URL换取二维码
http请求方式
POST
请求地址:
https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
post 数据格式 json
{
“action_name”: “QR_LIMIT_SCENE”,
“action_info”: {“scene”: {“scene_id”: 123}}
}
创建字符串形式的二维码参数:
{
“action_name”: “QR_LIMIT_STR_SCENE”,
“action_info”: {“scene”: {“scene_str”: “test”}}
}
参数说明
请求地址的TOKEN参数
微信公众平台技术文档->开始开发->获取access_token
action_name :二维码类型
action_info :二维码详细信息
scene_str :场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
首先,获取请求地址参数 TOKEN
请求方式
GET
请求地址
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求参数说明
grant_type :填写client_credential
appid:公众号APPID
secret:公众号密钥
成功返回说明 json
{
“access_token”:”ACCESS_TOKEN”,
“expires_in”:7200
}
access_token 获取到的凭证
expires_in 过期时间
然后,将TOKEN添加到请求ticket地址,进行请求
成功返回说明
{
“ticket”:”xxx”,
“expire_seconds”:60,
“url”:”http:\/\/weixin.qq.com\/q\/xxx”
}
参数说明
ticket :二维码ticket,凭借此ticket可以在有效时间内换取二维码
expire_seconds:二维码有效时间,以秒为单位。 最大不超过2592000(即30天)
url:二维码图片解析后的地址
最后,通过ticket换取二维码
请求方式
GET
请求地址【TICKET记得进行UrlEncode】
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
返回说明
ticket正确情况下,http 返回码是200,是一张图片,可以直接展示或者下载。
用户扫描带参数的二维码
用户未关注时,进行关注后的事件推送,xml数据包
用户已关注时的事件推送
*:EventKey也就是生成二维码时的场景ID,比如生成二维码时传的场景ID为 A,那么此处EventKey 则为 A
知道了这个EventKEY值,
查询当前二维码是否失效
知道了ToUserName也就是接收人openid
查询当前微信唯一openid是否存在
如果当前二维码未失效,并且当前 openid 不存在数据库中,那么则可以调用发送红包接口进行红包发送。
发送红包【发送普通红包】
微信商户平台->现金红包->发放普通红包
发送红包金额范围1-200元
如果有企业号的话,建议使用微信商户平台->企业付款,毕竟 1块钱起步太贵了…
这里只介绍普通红包
请求方式
POST
请求地址
https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
使用证书必须
请求参数
去文档看吧
微信商户平台->现金红包->发放普通红包
红包签名算法
接口规则->安全规范
这里请求的时候要带上请求证书
证书说明地址
证书下载地址
微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>证书下载
使用证书
使用商户证书
◆ apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。
◆ 商户如果使用.NET环境开发,请确认Framework版本大于2.0,必须在操作系统上双击安装证书apiclient_cert.p12后才能被正常调用。
◆ 商户证书调用或安装都需要使用到密码,该密码的值为微信商户号(mch_id)
成功返回说明,xml
解决方案
步骤
这里我们选择永久二维码
代码见第二章
需求
用户通过微信扫码关注公众号获取红包解决方案
生成带参数二维码微信公众平台技术文档->账号管理->生成带参数的二维码
微信公众平台技术文档->消息管理->接收消息-接收事件推送->扫描带参数二维码事件
步骤
生成带参数的二维码扫码
是否关注公众号
已关注,则微信会将带场景值扫描事件推送给开发者,根据场景判断当前二维码是否失效
失效,公众号推送消息:当前二维码已失效
未失效,获取当前扫码用户openid查询是否已经领取过红包
已领取,则公众号推送消息到微信用户通知今日已领取
未领取
则调用发送红包接口,发送红包,发送成功,则存储当前微信用户信息,包含唯一 openid。
设置当前扫描二维码失效
未关注,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者
根据场景值查询二维码是否失效
失效,公众号推送消息:当前二维码已失效
未失效,获取当前扫码用户openid查询是否已经领取过红包
已领取,则公众号推送消息到微信用户通知今日已领取
未领取
则调用发送红包接口,发送红包,发送成功,则存储当前微信用户信息,包含唯一 openid。
设置当前扫描二维码失效
生成带参数的二维码
目前有2种类型的二维码:
临时二维码,是有过期时间的,最长可以设置为在二维码生成后的30天(即2592000秒)后过期,但能够生成较多数量。临时二维码主要用于帐号绑定等不要求二维码永久保存的业务场景
永久二维码,是无过期时间的,但数量较少(目前为最多10万个)。永久二维码主要用于适用于帐号绑定、用户来源统计等场景。
用户扫描带场景值二维码时,可能推送以下两种事件:
用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注事件推送给开发者。
用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描事件推送给开发者。
获取带参数的二维码的过程包括两步
首先创建二维码ticket
然后凭借ticket到指定URL换取二维码
这里我们选择永久二维码
请求获取ticket:http请求方式
POST
请求地址:
https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=TOKEN
post 数据格式 json
{
“action_name”: “QR_LIMIT_SCENE”,
“action_info”: {“scene”: {“scene_id”: 123}}
}
创建字符串形式的二维码参数:
{
“action_name”: “QR_LIMIT_STR_SCENE”,
“action_info”: {“scene”: {“scene_str”: “test”}}
}
参数说明
请求地址的TOKEN参数
微信公众平台技术文档->开始开发->获取access_token
action_name :二维码类型
action_info :二维码详细信息
scene_str :场景值ID(字符串形式的ID),字符串类型,长度限制为1到64
首先,获取请求地址参数 TOKEN
请求方式
GET
请求地址
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
请求参数说明
grant_type :填写client_credential
appid:公众号APPID
secret:公众号密钥
成功返回说明 json
{
“access_token”:”ACCESS_TOKEN”,
“expires_in”:7200
}
access_token 获取到的凭证
expires_in 过期时间
然后,将TOKEN添加到请求ticket地址,进行请求
成功返回说明
{
“ticket”:”xxx”,
“expire_seconds”:60,
“url”:”http:\/\/weixin.qq.com\/q\/xxx”
}
参数说明
ticket :二维码ticket,凭借此ticket可以在有效时间内换取二维码
expire_seconds:二维码有效时间,以秒为单位。 最大不超过2592000(即30天)
url:二维码图片解析后的地址
最后,通过ticket换取二维码
请求方式
GET
请求地址【TICKET记得进行UrlEncode】
https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=TICKET
返回说明
ticket正确情况下,http 返回码是200,是一张图片,可以直接展示或者下载。
用户扫描带参数的二维码
用户未关注时,进行关注后的事件推送,xml数据包
<xml> <ToUserName>接收人</ToUserName> <FromUserName>发送人</FromUserName> <CreateTime>创建时间,时间戳</CreateTime& 4000 gt; <MsgType>消息类型【event】</MsgType> <Event>事件类型【subscribe】</Event> <EventKey>事件KEY值,qrscene_为前缀【scan事件无此前缀,】</EventKey> <Ticket>二维码的ticket</Ticket> </xml>
用户已关注时的事件推送
<xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[event]]></MsgType> <Event><![CDATA[SCAN]]></Event> <EventKey><![CDATA[SCENE_VALUE]]></EventKey> <Ticket><![CDATA[TICKET]]></Ticket> </xml>
*:EventKey也就是生成二维码时的场景ID,比如生成二维码时传的场景ID为 A,那么此处EventKey 则为 A
知道了这个EventKEY值,
查询当前二维码是否失效
知道了ToUserName也就是接收人openid
查询当前微信唯一openid是否存在
如果当前二维码未失效,并且当前 openid 不存在数据库中,那么则可以调用发送红包接口进行红包发送。
发送红包【发送普通红包】
微信商户平台->现金红包->发放普通红包
发送红包金额范围1-200元
如果有企业号的话,建议使用微信商户平台->企业付款,毕竟 1块钱起步太贵了…
这里只介绍普通红包
请求方式
POST
请求地址
https://api.mch.weixin.qq.com/mmpaymkttransfers/sendredpack
使用证书必须
请求参数
去文档看吧
微信商户平台->现金红包->发放普通红包
<xml> <sign><![CDATA[红包签名key]]></sign> <mch_billno><![CDATA[订单号]]></mch_billno> <mch_id><![CDATA[商户号]]></mch_id> <wxappid><![CDATA[公众号APPID]]></wxappid> <send_name><![CDATA[发送方名称]]><send_name> <re_openid><![CDATA[接收人openid]]></re_openid> <total_amount><![CDATA[红包金额]]></total_amount> <total_num><![CDATA[红包数量]]></total_num> <wishing><![CDATA[恭喜发财]]></wishing> <client_ip><![CDATA[调用接口的机器Ip地址]]></client_ip> <act_name><![CDATA[活动名称]]></act_name> <remark><![CDATA[备注]]></remark> <scene_id><![CDATA[场景值,非必须]]></scene_id> <consume_mch_id><![CDATA[资金授权商户号,非必须]]></consume_mch_id> <nonce_str><![CDATA[随机字符串]]></nonce_str> <risk_info>活动信息,非必须</risk_info> </xml>
红包签名算法
接口规则->安全规范
这里请求的时候要带上请求证书
证书说明地址
证书下载地址
微信商户平台(pay.weixin.qq.com)–>账户设置–>API安全–>证书下载
使用证书
使用商户证书
◆ apiclient_cert.p12是商户证书文件,除PHP外的开发均使用此证书文件。
◆ 商户如果使用.NET环境开发,请确认Framework版本大于2.0,必须在操作系统上双击安装证书apiclient_cert.p12后才能被正常调用。
◆ 商户证书调用或安装都需要使用到密码,该密码的值为微信商户号(mch_id)
成功返回说明,xml
<xml> <return_code><![CDATA[SUCCESS]]></return_code> <return_msg><![CDATA[发放成功.]]></return_msg> <result_code><![CDATA[SUCCESS]]></result_code> <err_code><![CDATA[0]]></err_code> <err_code_des><![CDATA[发放成功.]]></err_code_des> <mch_billno><![CDATA[00100104xxx]]></mch_billno> <mch_id>10010404</mch_id> <wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid> <re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid> <total_amount>1</total_amount> </xml>
代码见第二章
相关文章推荐
- 公众号查询红包发放记录,公众平台现金红包接口开发
- 微信扫描自定义二维码关注公众号
- 公众号发红包接口开发demo,php开发微信现金红包api接口
- 微信开发-获取用户关注公众号的状态(是否关注公众号)
- 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码
- OSChina 微信官方公众账号,欢迎关注
- 微信红包发放
- php微信公众帐号发送红包
- 微信java版本之扫码关注公众号(带参数的临时二维码)
- 在微信看优质内容,还可以关注这 10 个公众号
- 微信开放平台 公众号第三方平台开发 教程四 代公众号调用接口的SDK和demo
- 微信自媒体运营之取消关注公众号跟踪
- 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码
- 在应用里添加关注微信公众账号功能
- 开通微信现金红包,申请开通公众号现金红包
- 微信企业红包发放注意事项记录
- 微信开放平台 公众号第三方平台开发 教程五 代公众号发起网页授权源码
- 微信设备公众号不用扫描相应设备二维码也可以添加关注
- C#微信开发---用户关注微信号后公众号发送欢迎关注
- 微信公众账号添加关注按钮和分享到朋友圈按钮.