微信小程序发红包的两种方法
发布于 4 年前 作者 sungang 1488 次浏览 来自 分享

本篇主要介绍微信小程序给用户发现金红包的两种方式,大家可根据自己的实际情况酌情使用。

1,小程序开通了小程序红包的接口,但是目前该接口的的使用场景有限,仅限于场景值1011,1025,1047,1124时,基本为用户扫码打开小程序领取红包,这种方式的优势是有红包封面,有点击拆红包的按钮体验比较好,比较适合线下推广二维码时使用。开发时先后端调用发放红包接口,然后再传参给小程序端,调用领取红包接口wx.sendBizRedPacket方法即可。

打开微信支付官方文档中的小程序红包,公众号appid和用户openid参数描述模糊不清,说得就是微信公众号的appid和用户openid,压根没有提到小程序。


经过多次调试,终于测试通过,小程序红包开通条件和开发过程中需要注意以下几点:

  • 小程序需要绑定微信支付,且绑定的微信支付商户号需开通现金红包,如果小程序是用公众号认证的,可以很方便的绑定认证微信公众号时开通的微信支付商户号。
  • 文档里公众号appid即小程序的appid用户openid为用户对小程序的openid,该用户openid需在小程序里调用 wx.login() 获取临时登录凭证code,并回传到开发者服务器。调用auth.code2Session接口,换取用户唯一标识OpenID和会话密钥session_key。
  • 调用发放红包接口,https://api.mch.weixin.qq.com/mmpaymkttransfers/sendminiprogramhb 如果不填写'notify_way' => 'MINI_PROGRAM_JSAPI',不返回package,可以直接发现金红包,通知形式为服务通知,用户打开即可领取成功;如果填写notify_way则返回有package,只是package里的参数没有官方给的appid,但是有spid,但是不影响小程序正常领红包,用户依然可能通过领取红包接口成功领取现金红包。下面为带notify_way时请求参数和接口返回结果。

$redpackData = [

                'mch_billno' => $mch_billno,

                'send_name' => '今日头彩查询',

                're_openid' => $miniopenid,

                'total_num' => 1,  //固定为1,可不传

                'total_amount' => $total_amount,  //单位为分,不小于100

                'wishing' => '天天中头彩',

                'scene_id' => 'PRODUCT_1',

                'notify_way' => 'MINI_PROGRAM_JSAPI',

                'act_name' => '打开有礼',

                'remark' => '今日头彩,天天好彩头'];

$result = [

           "return_code" => "SUCCESS",

            "return_msg" => "发放成功",

            "result_code" => "SUCCESS",

            "err_code" => "SUCCESS",

            "err_code_des" => "发放成功",

            "mch_billno" => "1508784931202012171608188656",

            "mch_id" => "150878XXX",

            "wxappid" => "wxdccaff246b9f9b5c",

            "re_openid" => "ogn1H45HCRxVRiEMLbLLuABbXXX",

            "total_amount" => "100",

            "send_listid" => "1000041701202012173014299105358",

            "package" => "sendid=41469f3063dfc421bf3377897711d6f040e096a74ec6cb2a6c138178f67d681f&ver=8&sign=b3ff1X1fa2ba0aeeb6b9006dec2bc75b872ef7ee11d5e8bbb22e8836eaa2e76f090c307ba12452010f57dcaebbdec45a3196bff2d850eb9e9a49eedf483aa061&mchid=100846xxX&spid=150878xxx"];

  • 调用小程序领取红包接口成功领取红包,传给前端的参数中特别注意 'timeStamp' => time() . "",//时间戳,必须为字符串,增加.""转为字符串。
  • 小程序红包目前仅支持场景值1011,1025,1047,1124,包括扫描二维码,扫描小程序码和扫描一物一码等,具体可参与小程序红包文档。


2,调用微信支付的企业付款到零钱接口,微信支付的文档里是没有专门提到这种方式的,相信很多的开发者都已经在生产环境中大量使用了,这里不再赘述,实际是用小程序的appid和用户之于小程序的openid来调用企业付款到零钱接口,这种方式的优势是现金直接划到用户零钱帐户,很多小程序做红包相关的活动时都是采用此种变通方式实现的。

【今日头彩查询】是一款供彩民订阅和查询福利彩票和体育彩票开奖信息的小程序,里面已经集成了以上两种的发送红包的方式,用户扫码(注意是扫码不是长按识别)打开程序即可体验第一种方式;第二种方式隐藏在转发里,打开小程序后,点击右上角转发按钮转发到微信群或者微信好友,如果你的微信号是经过实名认证并且近期没有违规操作的,会在微信支付收到商家转帐入帐通知。

回到顶部