小程序红包配置及开发小结
发布于 4 年前 作者 panyang 827 次浏览 来自 分享

配置:

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

2、开通后在左边的<span style="font-size: 12px; color: rgb(34, 34, 34);">APPID授权管理中关联该小程序APPID</span>

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

4、回到商户平台<span style="font-size: 12px; color: rgb(34, 34, 34);">APPID授权管理中</span>确认关联

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

到此小程序红包配置完成

开发:

发送红包

			&nbsp;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”)

                                {

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

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

                                    package = HttpUtility.UrlEncode(package);

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

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

4 回复

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

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

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

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

微信的key 不是一个吗

PRODUCT_AUTHORITY_UNOPEN

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

回到顶部