配置:
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:第二次领取红包的签名不需要大写
小程序给用户发红包的两种方式,第一种调用小程序红包接口和领取红包接口这种场景为扫码打开小程序,适合线下推广;第二种调用关联微信支付的微信付款到零钱接口,现金可直接打到微信用户的零钱帐户。具体可参考这篇博文《用微信小程序发红包的两种方法》https://www.big4ever.com/article/7
大佬求教 total_num 这个人数的作用是什么,如果写2会怎么样
请教作者appid 跟spid的问题,解决了吗?跟这个有关系吗?
微信的key 不是一个吗
解决了,是配置的问题,多谢
var paySign = inputObj.HBMakeSign(mdminihb.Mch_key);//商户秘钥这里
和 public string MakeSign2(string key)这里能详细些吗
签名方法不是不用转大写的吗?
PRODUCT_AUTHORITY_UNOPEN
现在提示这个,我就想不明白了,按你说的也都一一排查了,都没问题,给官方发邮件也没人回,请问有遇到过这错误提示吗