评论

小程序红包配置及开发小结

小程序红包开发小结

配置:

1、进入商户平台 在产品中心找到小程序红包 开通小程序红包功能

2、开通后在左边的APPID授权管理中关联该小程序APPID

3、进入小程序后台 在功能==》微信支付中确认关联并授权

4、回到商户平台APPID授权管理中确认关联

5、这是最容易忽略的一点 在商户平台 产品中心 小程序红包的产品设置中 拉到最下面 小程序红包权限中开通该小程序的红包功能

到此小程序红包配置完成


开发:

发送红包

 var mdhbhe = Convert.ToInt32(fee * 100);

                                string mch_billno = mdminihb.Mch_id + DateTime.Now.ToString("yyyyMMdd") + GenerateNonceStr();

                                WxPayData hb = new WxPayData();

                                hb.SetValue("act_name", mdminihb.Act_name);//活动名称

                                hb.SetValue("mch_billno", mch_billno);//单号

                                hb.SetValue("mch_id", mdminihb.Mch_id);//发送红包的商户号

                                hb.SetValue("nonce_str", GenerateNonceStr());

                                hb.SetValue("notify_way", "MINI_PROGRAM_JSAPI");

                                hb.SetValue("re_openid", openid);

                                hb.SetValue("remark", mdminihb.Remark);

                                hb.SetValue("send_name", mdminihb.Send_name);//商户名称

                                hb.SetValue("total_amount", mdhbhe);//红包金额 单位分

                                hb.SetValue("total_num", 1);//红包数量

                                hb.SetValue("wishing", mdminihb.Wishing);//祝福语

                                hb.SetValue("wxappid", mdminihb.Wxappid);//绑定在商户的小程序的appid 不是公众号的 

                                hb.SetValue("scene_id", mdminihb.Scene_id);


                                var sign = hb.MakeSign2(mdminihb.Mch_key);//商户秘钥

                                hb.SetValue("sign", sign);

                                string xml = hb.ToXml();

                                string response = HttpService.HbPost(xml, url, true, 6, mdminihb.Mch_path, mdminihb.Mch_certkey);


                                WxPayData result = new WxPayData();

                                result.FromXml(response);//将xml格式的结果转换为对象以返回


                                var package = "";

                                if (result.GetValue("return_code").ToString() == "SUCCESS" && result.GetValue("result_code").ToString() == "SUCCESS")

                                {

//这边是成功后返回的代码 具体逻辑判断自己处理

 package = result.GetValue("package").ToString();//成功后返回的

                                    package = HttpUtility.UrlEncode(package);

//这是用于领取红包的代码


  WxPayData inputObj = new WxPayData();


                                    inputObj.SetValue("appId", mdminihb.Wxappid);//这边是小程序的appId   这个appId 一定要记住 I要大写

                                    inputObj.SetValue("timeStamp", timeStamp);

                                    inputObj.SetValue("nonceStr", nonceStr);

                                    inputObj.SetValue("package", package);

                                    var paySign = inputObj.HBMakeSign(mdminihb.Mch_key);//商户秘钥

}



签名方法: public string MakeSign2(string key)

        {

            //转url格式

            string str = ToUrl();

            //在string后加入API KEY

            str += "&key=" + key + "";


            var rd = Md5.md5(str, 32);


                // 所有字符转为大写

            return rd.ToUpper();

        }


还有记得带证书


写的比较笼统 有不清楚的再补充


补充说明1:目前小程序红包仅支持用户微信扫码打开小程序,进行红包领取。(场景值1011,1025,1047,1124,小程序场景值详情参见文档 这个条件一定要注意 所以特别注意一定要通过wx.getLaunchOptionsSync()先看下场景值对不对 特别说明 体验版的二维码是无法领取红包的(第三方的要注意)

补充说明2:第二次领取红包的签名不需要大写

最后一次编辑于  2020-01-02  
点赞 2
收藏
评论

7 个评论

  • 彭彭
    彭彭
    2021-01-19

    小程序给用户发红包的两种方式,第一种调用小程序红包接口和领取红包接口这种场景为扫码打开小程序,适合线下推广;第二种调用关联微信支付的微信付款到零钱接口,现金可直接打到微信用户的零钱帐户。具体可参考这篇博文《用微信小程序发红包的两种方法》https://www.big4ever.com/article/7

    2021-01-19
    赞同
    回复
  • 西瓜
    西瓜
    2020-10-12

    大佬求教 total_num 这个人数的作用是什么,如果写2会怎么样

    2020-10-12
    赞同
    回复
  • 欢乐马
    欢乐马
    2020-03-08

    请教作者appid 跟spid的问题,解决了吗?跟这个有关系吗?

    2020-03-08
    赞同
    回复 2
    • 欢乐马
      欢乐马
      2020-03-08
      解决了,擦。自己前端领取接口调用的参数名写错了。真醉醉的了
      2020-03-08
      回复
    • 逐风
      逐风
      2021-06-30回复欢乐马
      请问是哪个参数写错了,我也出现spid的问题了
      2021-06-30
      回复
  • 。
    2020-01-02

    微信的key 不是一个吗

    2020-01-02
    赞同
    回复
  • Kevin
    Kevin
    2020-01-02

    解决了,是配置的问题,多谢

    2020-01-02
    赞同
    回复
  • 。
    2020-01-02

                var paySign = inputObj.HBMakeSign(mdminihb.Mch_key);//商户秘钥这里

    和 public string MakeSign2(string key)这里能详细些吗

    签名方法不是不用转大写的吗?

    2020-01-02
    赞同
    回复 8
    • 阿达
      阿达
      2020-01-02
      你调试的时候红包发放成功没有?还有小程序打印出来的错误提示是什么
      2020-01-02
      回复
    • 。
      2020-01-02回复阿达
      发红包成功了,小程序调领取红包的时候提示请求不成功
      2020-01-02
      回复
    • 。
      2020-01-02
      帮我看看大神
      2020-01-02
      回复
    • 阿达
      阿达
      2020-01-02回复
      Fail 打印出来的信息是什么?
      2020-01-02
      回复
    • 。
      2020-01-02回复阿达
      2020-01-02
      回复
    查看更多(3)
  • Kevin
    Kevin
    2020-01-01

    PRODUCT_AUTHORITY_UNOPEN

    现在提示这个,我就想不明白了,按你说的也都一一排查了,都没问题,给官方发邮件也没人回,请问有遇到过这错误提示吗

    2020-01-01
    赞同
    回复 4
    • 阿达
      阿达
      2020-01-02
      这个问题应该是配置的问题啊
      2020-01-02
      回复
    • 。
      2020-01-02
      2020-01-02
      回复
    • Kevin
      Kevin
      2020-01-02回复阿达
      解决了,是appkey和apikey写错了。。。谢谢
      2020-01-02
      回复
    • 阿达
      阿达
      2020-01-02
      哈哈 那就好 这种小问题最操蛋了
      2020-01-02
      回复
登录 后发表内容