微信公众平台发的红包 是否可以设定为用户不需要2017关注公众号领红包就可以接受红包信息,领取红包?

6696人阅读
微信小程序(2)
红包功能简单介绍:
1、商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景
2、领取到红包后,用户的资金直接进入微信零钱,避免繁复的领奖流程,带给用户微信支付原生的流畅体验
现金红包官网文档地址:https://pay./wiki/doc/api/tools/cash_coupon.php?chapter=13_1
调用现金红包接口需要使用到证书,请前往商户平台下载证书
官网有关详细证书的介绍:https://pay./wiki/doc/api/tools/cash_coupon.php?chapter=4_3
因为发送现金红包是从商户平台余额扣款,所以商户平台的账户余额必须有充足的余额
下面是调用红包接口详细代码:1、签名的MD5加密类:
/// &summary&
/// MD5UtilHelper 的摘要说明。
/// &/summary&
public class MD5UtilHelper
public MD5UtilHelper()
// TODO: 在此处添加构造函数逻辑
/// &summary&
/// 获取大写的MD5签名结果
/// &/summary&
/// &param name=&encypStr&&&/param&
/// &param name=&charset&&&/param&
/// &returns&&/returns&
public static string GetMD5(string encypStr, string charset)
string retS
MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider();
//创建md5对象
byte[] inputB
byte[] outputB
//使用GB2312编码方式把字符串转化为字节数组.
inputBye = Encoding.GetEncoding(charset).GetBytes(encypStr);
catch (Exception ex)
inputBye = Encoding.GetEncoding(&GB2312&).GetBytes(encypStr);
outputBye = m5.ComputeHash(inputBye);
retStr = System.BitConverter.ToString(outputBye);
retStr = retStr.Replace(&-&, &&).ToUpper();
return retS
2、处理参数的类:
public class RequestHandler
public RequestHandler(HttpContext httpContext)
Parameters = new Hashtable();
this.HttpContext = httpContext ?? HttpContext.C
/// &summary&
/// &/summary&
private string K
protected HttpContext HttpC
/// &summary&
/// 请求的参数
/// &/summary&
protected Hashtable P
/// &summary&
/// debug信息
/// &/summary&
private string DebugI
/// &summary&
/// 初始化函数
/// &/summary&
public virtual void Init()
/// &summary&
/// 获取debug信息
/// &/summary&
/// &returns&&/returns&
public String GetDebugInfo()
return DebugI
/// &summary&
/// 获取密钥
/// &/summary&
/// &returns&&/returns&
public string GetKey()
/// &summary&
/// 设置密钥
/// &/summary&
/// &param name=&key&&&/param&
public void SetKey(string key)
this.Key =
/// &summary&
/// 设置参数值
/// &/summary&
/// &param name=&parameter&&&/param&
/// &param name=&parameterValue&&&/param&
public void SetParameter(string parameter, string parameterValue)
if (parameter != null && parameter != &&)
if (Parameters.Contains(parameter))
Parameters.Remove(parameter);
Parameters.Add(parameter, parameterValue);
/// &summary&
/// 创建md5摘要,规则是:按参数名称a-z排序,遇到空值的参数不参加签名
/// &/summary&
/// &param name=&key&&参数名&/param&
/// &param name=&value&&参数值&/param&
/// key和value通常用于填充最后一组参数
/// &returns&&/returns&
public virtual string CreateMd5Sign(string key, string value)
StringBuilder sb = new StringBuilder();
ArrayList akeys = new ArrayList(Parameters.Keys);
akeys.Sort();
foreach (string k in akeys)
string v = (string)Parameters[k];
if (null != v && &&.CompareTo(v) != 0
&& &sign&.CompareTo(k) != 0 && &key&.CompareTo(k) != 0)
sb.Append(k + &=& + v + &&&);
sb.Append(key + &=& + value);
string sign = MD5UtilHelper.GetMD5(sb.ToString(), GetCharset()).ToUpper();
/// &summary&
/// 输出XML
/// &/summary&
/// &returns&&/returns&
public string ParseXML()
StringBuilder sb = new StringBuilder();
sb.Append(&&xml&&);
foreach (string k in Parameters.Keys)
string v = (string)Parameters[k];
if (Regex.IsMatch(v, @&^[0-9.]$&))
sb.Append(&&& + k + &&& + v + &&/& + k + &&&);
sb.Append(&&& + k + &&&![CDATA[& + v + &]]&&/& + k + &&&);
sb.Append(&&/xml&&);
return sb.ToString();
/// &summary&
/// 设置debug信息
/// &/summary&
/// &param name=&debugInfo&&&/param&
public void SetDebugInfo(String debugInfo)
this.DebugInfo = debugI
public Hashtable GetAllParameters()
return this.P
protected virtual string GetCharset()
return this.HttpContext.Request.ContentEncoding.BodyN
3、调用现金红包处理类:
/// &summary&
/// 企业号微信支付接口
/// &/summary&
public static class TenPay
#region 企业向用户发红包
/// &summary&
/// 用于企业向微信用户个人发红包
/// 目前支持向指定微信用户的openid个人发红包
/// &/summary&
/// &param name=&certPassword&&apiclient_cert.p12证书密码即商户号&/param&
/// &param name=&data&&微信支付需要post的xml数据&/param&
/// &param name=&certPath&&apiclient_cert.p12的证书物理位置(例如:E:\projects\文档\微信商户平台证书\商户平台API证书&/param&
/// &param name=&timeOut&&&/param&
/// &returns&&/returns&
public static string Sendredpack(string data, string certPassword,string certPath, int timeOut = Config.TIME_OUT)
var urlFormat = &https://api.mch./mmpaymkttransfers/sendredpack&;
string cert = certP
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
X509Certificate2 cer = new X509Certificate2(cert, certPassword, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
var formDataBytes = data == null ? new byte[0] : Encoding.UTF8.GetBytes(data);
MemoryStream ms = new MemoryStream();
ms.Write(formDataBytes, 0, formDataBytes.Length);
ms.Seek(0, SeekOrigin.Begin);//设置指针读取位置
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlFormat);
request.ClientCertificates.Add(cer);
request.Method = &POST&;
request.Timeout = timeO
request.UserAgent = &Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36&;
#region 输入二进制流
if (ms != null)
ms.Position = 0;
//直接写入流
Stream requestStream = request.GetRequestStream();
byte[] buffer = new byte[1024];
int bytesRead = 0;
while ((bytesRead = ms.Read(buffer, 0, buffer.Length)) != 0)
requestStream.Write(buffer, 0, bytesRead);
ms.Close();//关闭文件访问
#endregion
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
using (Stream responseStream = response.GetResponseStream())
using (StreamReader myStreamReader = new StreamReader(responseStream, Encoding.GetEncoding(&utf-8&)))
string retString = myStreamReader.ReadToEnd();
return retS
private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
if (errors == SslPolicyErrors.None)
return true;
return false;
#endregion
4、调用现金红包接口
#region 发送红包
bool fals = false;
//记录发送红包是否成功
string xmlResult = null;
//现金红包接口返回的xml
string certPath = null;
//证书在服务器的物理位置
string data = null;
//调用现金红包接口需要的数据
//创建支付应答对象
RequestHandler packageReqHandler = new RequestHandler(null);
packageReqHandler.Init();
string nonceStr = TenPayV3Util.GetNoncestr();
//设置package订单参数
packageReqHandler.SetParameter(&nonce_str&, nonceStr);
//随机字符串,不长于32位
packageReqHandler.SetParameter(&mch_billno&, System.Configuration.ConfigurationManager.AppSettings[&TenPayV3_MchId&] + model.JournalNumber);//商户订单号(每个订单号必须唯一)组成:mch_id+yyyymmdd+10位一天内不能重复的数字。接口根据商户订单号支持重入,如出现超时可再调用。
packageReqHandler.SetParameter(&mch_id&, System.Configuration.ConfigurationManager.AppSettings[&TenPayV3_MchId&]);
//微信支付分配的商户号
packageReqHandler.SetParameter(&wxappid&, System.Configuration.ConfigurationManager.AppSettings[&TenPayV3_AppId&]);//微信分配的公众账号ID(企业号corpid即为此appId)。接口传入的所有appid应该为公众号的appid(在mp.申请的),不能为APP的appid(在open.申请的)。
packageReqHandler.SetParameter(&send_name&, &测试&);//商户名称
packageReqHandler.SetParameter(&re_openid&, model.BankCard);
//用户openid
接受红包的用户用户在wxappid下的openid
packageReqHandler.SetParameter(&total_amount&, Convert.ToInt32((decimal)(model.Amount * 100M)).ToString(CultureInfo.InvariantCulture));
//付款金额 单位分
packageReqHandler.SetParameter(&total_num&, &1&);
//红包发放总人数
packageReqHandler.SetParameter(&wishing&, &测试红包&);
//红包祝福语
packageReqHandler.SetParameter(&client_ip&, HttpContext.Current.Request.UserHostAddress);//Ip地址
packageReqHandler.SetParameter(&act_name&, &测试红包&);//活动名称
packageReqHandler.SetParameter(&remark&, &测试红包&);
string sign = packageReqHandler.CreateMd5Sign(&key&, System.Configuration.ConfigurationManager.AppSettings[&TenPayV3_Key&]);
packageReqHandler.SetParameter(&sign&, sign);
data = packageReqHandler.ParseXML();
certPath = Server.MapPath(&~/&) + System.Configuration.ConfigurationManager.AppSettings[&certPath&];
xmlResult = Sendredpack(data, System.Configuration.ConfigurationManager.AppSettings[&TenPayV3_MchId&],certPath);
var res = XDocument.Parse(xmlResult);
string return_code = res.Element(&xml&).Element(&return_code&).V
if (&SUCCESS&.Equals(return_code))
string result_code = res.Element(&xml&).Element(&result_code&).V
if (&SUCCESS&.Equals(result_code))
fals = true;
catch (Exception exception)
#endregion
注意:证书所在文件夹权限,IIS必须有权限对该文件夹操作的权限。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:286782次
积分:3275
积分:3275
排名:第8797名
原创:45篇
转载:20篇
谁都有脾气,但要学会收敛,在沉默中观察,在冷静中思考,别让冲动的魔鬼,酿成无可挽回的错;谁都有梦想,但要立足现实,在拼搏中靠近,在忍耐中坚持,别挂在嘴边,常立志者无志;谁都有底线,但要懂得把握,大事重原则,小事有分寸,不讲情面难得别人支持,过分虚伪亦让人避而远之。忍一时风平浪静,退一步海阔天空。
文章:10篇
阅读:9150
阅读:43028微信公众号可以发放现金红包了
[摘要]公众号开发者可以通过现金红包接口,向用户发放微信支付现金红包。
腾讯科技讯(相欣)2月9日,微信公众平台发布公告称微信支付现金红包接口正式开放,只需开通微信支付,即可接入现金红包。公告称,通过现金红包接口,公众号开发者可以策划相关运营活动,向用户发放微信支付现金红包,更好的达到品牌推广及回馈用户的效果。具体能力如下:1、商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景。2、领取到红包后,用户的资金直接进入微信零钱,避免繁复的领奖流程,带给用户微信支付原生的流畅体验。
[责任编辑:haroldli]
您认为这篇文章与"新一网(08008.HK)"相关度高吗?
Copyright & 1998 - 2017 Tencent. All Rights Reserved
还能输入140字微信公众号可通过现金红包接口发放微信支付现金红包(附开发教程)
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了微信公众号可通过现金红包接口发放微信支付现金红包的相关资料,需要的朋友可以参考下
农历新年将至,支付宝红包打了一仗,微信在朋友圈屏蔽了它的分享,但单防守还不行,进攻才是最好的防守。昨日,微信支付现金红包接口正式开放,只需开通微信支付,即可接入现金红包。微信公众号也可以发放现金红包了!
  通过现金红包接口,公众号开发者可以策划相关运营活动,向用户发放微信支付现金红包,更好的达到品牌推广及回馈用户的效果。
  1、商户调用接口时,通过指定发送对象以及发送金额的方式发放红包,这样的方式,允许商户灵活的应用于各种各样丰富的活动场景
  2、领取到红包后,用户的资金直接进入微信零钱,避免繁复的领奖流程,带给用户微信支付原生的流畅体验
  春节期间,微信红包以其独特的魅力,优秀的用户体验和安全的支付环境,一经推出即受到了广大用户的热烈欢迎,现微信支付现金红包向微信支付商户开放
  微信红包发送规则
  1. 发送频率规则
  ◆ 每分钟发送红包数量不得超过1800个;
  ◆ 北京时间0:00-8:00不触发红包赠送;(如果以上规则不满足您的需求,请发邮件至获取升级指引)
  2. 红包规则
  ◆ 单个红包金额介于[1.00元,200.00元]之间;
  ◆ 同一个红包只能发送给一个用户;(如果以上规则不满足您的需求,请发邮件至获取升级指引)
  商户侧调用红包接口流程
  1. 登录微信支付商户平台下载证书以及充值
  在调用接口前,请商户使用微信支付商户号登录微信支付商户平台完成下述工作:
  备注:
  微信支付商户平台地址为pay.。微信支付商户号会在商户申请微信支付成功后,通过开户邮件发送给您。请不要使用微信公众平台账号或者appid登录。如果您登录时遇到问题,请联系微信支付小助手
   ◆ 下载证书
  商户调用微信红包接口时,服务器会进行证书验证,请在商户平台下载证书
   ◆ 充值
  发放现金红包将扣除商户的可用余额,请注意,可用余额并不是微信支付交易额,需要预先充值,确保可用余额充足。查看可用余额、充值、提现请登录微信支付商户平台,进入“资金管理”菜单,进行操作
  2. 微信红包接口调用流程
   ◆ 后台API调用:待进入联调过程时与开发进行详细沟通;
   ◆ 告知服务器:告知服务器接收微信红包的用户openID,告知服务器该用户获得的金额;
   ◆ 从商务号扣款:服务器获取信息后从对应的商务号扣取对应的金额;
   ◆ 调用失败:因不符合发送规则,商务号余额不足等原因造成调用失败,反馈至调用方;
   ◆ 发送成功:以微信红包公众账号发送对应红包至对应用户;
  用户交互流程
  调用现金红包接口,发放成功后,用户领取红包流程如下:
  步骤(一):收到领取红包消息,根据用户微信版本不同,分为:
  微信版本在6.1及以上的用户收到企业自身微信号(调用接口时传入appid对应的商户号)下发领取消息;如果用户未关注微信号,那么会收到由“服务通知”下发的消息
  微信版本在6.1以下的用户仍按原流程收取消息:由微信红包公众号下发领取消息
  步骤(二):点击领取消息,拆红包
  接口详细说明
  1.红包发放说明
  用于企业向微信用户个人发现金红包
  目前支持向指定微信用户的openid发放指定金额红包。(获取openid参见微信公众平台开发者文档: 网页授权获取用户基本信息)
  接口参数与用户领用实际效果对应关系如下:
  如需操作请登录
  2.接口调用请求说明
  请求Url:     
  是否需要证书:  是(证书及使用说明详见商户证书)
  请求方式:    POST
  3.请求参数
随机字符串
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
String(32)
随机字符串,不长于32位
C380BEC2BFD727A4BF3AD6
String(32)
商户订单号
mch_billno
String(28)
商户订单号(每个订单号必须唯一)
组成:&mch_id+yyyymmdd+10位一天内不能重复的数字。
接口根据商户订单号支持重入,&如出现超时可再调用。
String(32)
微信支付分配的商户号
sub_mch_id
String(32)
微信支付分配的子商户号,受理模式下必填
公众账号appid
String(32)
提供方名称
String(32)
提供方名称
String(32)
红包发送者名称
用户openid
oxTWIuGaIt6gTKsQRLau2M0yL16E
String(32)
接受收红包的用户
用户在wxappid下的openid
total_amount
付款金额,单位分
最小红包金额
最小红包金额,单位分
最大红包金额
最大红包金额,单位分
(&最小金额等于最大金额:&min_value=max_value&=total_amount)
红包发放总人数
红包发放总人数
total_num=1
红包祝福语
感谢您参加猜灯谜活动,祝您元宵节快乐!
String(128)
红包祝福语
192.168.0.1
String(15)
调用接口的机器Ip地址
猜灯谜抢红包活动
String(32)
猜越多得越多,快来抢!
String(256)
商户logo的url
logo_imgurl
/mch/img/ico-logo.png
String(128)
商户logo的url
share_content
快来参加猜灯谜活动
String(256)
String(128)
分享的图片
share_imgurl
/mch/img/ico-logo.png
String(128)
分享的图片url
更多请参考http://pay./wiki/doc/api/cash_coupon.php?chapter=13_5
以上就是关于微信公众号通过现金红包发放微信支付现金红包的资料整理,后续继续补充,谢谢大家对本站的支持!
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具&&|&&责编:刘菲菲
  在昨天正式向支付商户平台开放了红包发放的接口,支付商户平台将可以调用此接口向自己的用户发放红包来作为促销活动。那么支付商户平台要怎样开通这个功能呢?又有那些需要注意的呢?希望这篇文章对大家有些用处。  首先,商户调用微信红包接口时,服务器会进行证书验证,所以要在商户平台证书。在管理后台的“账户信息”里找到“安全设置”就可以下载了证书了。  接着就是向帐号中充值,因为发放现金红包将扣除商户的可用余额,所以需要预先充值,确保可用余额充足。进入“资金管理”菜单找到“现金管理”,在此进行充值,保证帐号有余额可以进行红包发放。  下面就是微信红包接口调用的流程了:  1、调用后台API接口,进入联调过程;  2、告知服务器接收微信红包的用户openID,以及该用户获得的金额;  3、服务器获取信息后从对应的商务号扣取对应的金额;  4、如果发送成功,微信红包公众账号就能发送对应红包到对应用户中,并完成扣款;  5、如果不符合发送规则,或商务号余额不足等原因造成调用失败,信息则将返回。  最后我们顺便再说说用户领取红包的情况,如果用户的微信版本在6.1及以上且关注了该公众号,则能看到如下的提醒。但如果用户没有关注该公众号,那么会收到“服务通知”并包含红包。  用户收到红包后,只需要点击“拆红包”就能顺利领取红包了,红包中的金额将自动进入零钱包。用户也可以选择将零钱包中的金额提现。  新年红包大战支付宝和微信各有套路,支付宝是砸出6亿发福利,微信是号召公众号一起上。公众号的拥有者们也可以借着这次机会拉拉人气,希望对大家有帮助。
4¥14505¥48996¥12607¥6488¥28009¥160010¥498

我要回帖

更多关于 微信投票不需要关注了 的文章

 

随机推荐