在美宜佳消费的时候,觉得美宜佳的优惠卷直接在我出示付款码的时候可以帮我核销并进行相应的减免金额很神奇,之后在网上查询了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

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


我们的征途是星辰大海