评论

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

小程序红包开发小结

配置:

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:第二次领取红包的签名不需要大写

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

4 个评论

  • 。
    01-02

    微信的key 不是一个吗

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

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

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

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

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

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

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

    PRODUCT_AUTHORITY_UNOPEN

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

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