微信付款码核销微信公众号的卡券流程以及接口参数等
浏览 901 | 评论 3
黄文勇
2019年10月30日

在美宜佳消费的时候,觉得美宜佳的优惠卷直接在我出示付款码的时候可以帮我核销并进行相应的减免金额很神奇,之后在网上查询了2天基本没有人有说到这个事情,或者不了解这整个的业务逻辑,所以今天笔者耗费了3天时间(2天在查资料)将这整个流程打通。详情见下面:(如果有什么不合理的地方可以联系笔者进行修改)

流程扫码微信支付码->获取微信 支付授权码->将微信授权码通过接口发送至微信->查询结果:返回的openid(最重要)->根据openid查询相应公众账号下的卡券列表->根据code查询卡券状态->根据card_id查询卡券详情->根据详情计算最终支付金额->发起微信支付->返回支付成功后根据code核销卡券

备注:通过授权码查询公众号Openid,调用查询后,该授权码只能由此商户号发起扣款,直至授权码更新

接口列表:

取付款码openid

接口https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9

参数

字段名 变量名 类型 必填 描述
公众账号ID appid String(32) 微信分配的公众账号ID
商户号 mch_id String(32) 微信支付分配的商户号
授权码 auth_code String(128) 扫码支付授权码,设备读取用户微信中的条码或者二维码信息
随机字符串 nonce_str String(32) 随机字符串,不长于32位
签名 sign String(32) 签名

具体文档地址https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=9_13&index=9

根据openid查询卡券

接口:https://api.weixin.qq.com/card/user/getcardlist?access_token=TOKE

参数:

参数名 必填 类型 示例值 描述
openid string(64) 1231231 需要查询的用户openid
card_id string(32) pFS7Fjg8kV1IdDz01xxxxx 卡券ID。不填写时默认查询当前appid下的卡券。

具体文档地址https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/

Managing_Coupons_Vouchers_and_Cards.html#1

card_id查询卡券详情

接口: https://api.weixin.qq.com/card/get?access_token=TOKE

参数:

参数名 必填 类型 示例值 描述
card_id string(32) pFS7Fjg8kV1IdDz01r4SQwMkuCKc 卡券ID。

具体文档地址https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/

Managing_Coupons_Vouchers_and_Cards.html#2

根据code查询卡券状态

接口:https://api.weixin.qq.com/card/code/get?access_token=TOKE

参数:

参数名 必填 类型 示例值 描述
code string(20) 110201201245 单张卡券的唯一标准。
card_id string(32) pFS7Fjg8kV1I dDz01r4SQwMkuCKc 卡券ID代表一类卡券。自定义code卡券必填。
check_consume bool true 是否校验code核销状态,填入true和false时的code异常状态返回数据不同。

具体文档地址https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/

Managing_Coupons_Vouchers_and_Cards.html#1

根据code核销卡券

接口:https://api.weixin.qq.com/card/code/consume?access_token=TOKEN

参数:

参数名 必填 类型 示例值 描述
card_id string(32) pFS7Fjg8kV1Id Dz01r4SQwMkuCKc 卡券ID。创建卡券时use_custom_code填写true时必填。非自定义Code不必填写。
code string(20) 1231231 需核销的Code码。

具体文档地址:https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/

Managing_Coupons_Vouchers_and_Cards.html#1

具体步骤:

1.下载微信商户平台中开发文档的demo 这里笔者下载的是Java版的
地址:https://pay.weixin.qq.com/wiki/doc/api/micropay.php?chapter=11_1

2.下载之后,导入eclipse中:

3.导入eclipse之后,需要将WXPayConfig类实例化,先将WXPayConfig类里面的抽象方法加上public 再实例化

MyConfig.java

WXPayConfig.java

4.将wxPay.java文件中的fillRequestData中的
// reqData.put("sign_type", WXPayConstants.MD5);
// if (SignType.MD5.equals(this.signType)) {
// reqData.put("sign_type", WXPayConstants.MD5);
// } else if (SignType.HMACSHA256.equals(this.signType)) {
// reqData.put("sign_type", WXPayConstants.HMACSHA256);
// }注释掉

OK 微信SDK修改完毕,可以进行扫码,请求获取openid

获取到的openid之后,根据openid查询卡券获取当前公众号下领取的优惠卷或者会员卡等

OK,至此通过付款码获取微信公众号卡卷,并核销已完成,如果需要在这个过程中加上微信支付的话,可以在获取卡券详情的之后,将微信支付的金额进行计算之后发起微信支付,微信支付成功之后,再核销卡券;

卡券核销,创建等都可以再微信公众号开发文档中找到;

最后附上笔者修改之后的SDK,希望可以帮上你;

java_sdk_v3.0.9.zip

未经授权,不得转载本篇文章

本文作者:黄文勇
本文链接:https://www.3dcw.cn/index.php/archives/373/
最后修改时间:2020-05-29 17:46:10
本站未注明转载的文章均为原创,并采用 CC BY-NC-SA 4.0 授权协议,转载请注明来源,谢谢!
评论
与本文无关评论请发留言板。请不要水评论,谢谢。
textsms
支持 Markdown 语法
email
link
评论列表
已有 3 条评论
2019-11-28 00:53
@王树成 如果单纯核销卡券的话直接使用微信提供的核销方式进行核销即可,不用单独开发小程序,可以参考https://developers.weixin.qq.com/doc/offiaccount/Cards_and_Offer/Redeeming_a_coupon_voucher_or_card.html#0
核销后:
{
"errcode":0,
"errmsg":"ok",
"card":{
"card_id":"pFS7Fjg8kV1IdDz01r4SQwMkuCKc"
},
"openid":"oFS7Fjl0WsZ9AMZqrI80nbIq8xrA"
}
可以收到以上信息
王树成
2019-11-28 00:32
hello,请教下大佬
1.如果没有和收银系统打通,核销端是扫码枪还是要再开发一个核销小程序?
2.核销后可以获得哪些字段信息呀,对账的表单是否可以满足?
2019-10-30 15:42
不够详细,有什么意见或建议可在评论区留言