微信商户红包频率限制号怎么开通现金红包的sphb

微信公众平台开发(111) 现金红包、裂变红包、企业付款
在这篇微信公众平台开发教程中,我们将介绍如何在实现现金红包、裂变红包、企业付款以及红包交易查询(含现金红包和裂变红包)和企业付款查询的功能。
本文分为以下二个部分:
微信支付接口SDK定义现金红包、裂变红包、企业付款的调用方法
一、微信红包SDK
现金红包、裂变红包、企业付款本质均为商户和用户之间的转账,微信官方定义其接口时,操作方法类似。
1. 请求URL
https://api.mch./mmpaymkttransfers/sendredpack
https://api.mch./mmpaymkttransfers/sendgroupredpack
https://api.mch./mmpaymkttransfers/promotion/transfers
2. 参数说明
随机字符串
5K8264ILTKCH16CQ2502SI8ZNMTM67VS
String(32)
随机字符串,不长于32位
C380BEC2BFD727A4BF3AD6
String(32)
商户订单号
mch_billno
String(28)
商户订单号(每个订单号必须唯一)
String(32)
微信支付分配的商户号
公众账号appid
String(32)
微信分配的公众账号ID(企业号corpid即为此appId)。
String(32)
红包发送者名称
用户openid
oxTWIuGaIt6gTKsQRLau2M0yL16E
String(32)
接受红包的用户用户在wxappid下的openid
total_amount
付款金额,单位分
红包发放总人数
红包发放总人数
红包祝福语
感谢您参加猜灯谜活动,祝您元宵节快乐!
String(128)
红包祝福语
192.168.0.1
String(15)
调用接口的机器Ip地址
猜灯谜抢红包活动
String(32)
猜越多得越多,快来抢!
String(256)
红包金额设置方式
String(32)
红包金额设置方式ALL_RAND&全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额
校验用户姓名选项
check_name
OPTION_CHECK
NO_CHECK:不校验真实姓名
FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账)
OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
收款用户姓名
re_user_name
收款用户真实姓名。 如果check_name设置为FORCE_CHECK或OPTION_CHECK,则必填用户真实姓名
企业付款金额,单位为分
企业付款描述信息
企业付款操作说明信息。必填。
spbill_create_ip
192.168.0.1
String(32)
调用接口的机器Ip地址
3. 请求示例
3PG2J4ILTKCH16CQ2502SI8ZNMTM67VS
ohO4Gt7wVPxIT1A9GjFaMYMiZY1s
OPTION_CHECK
C97BDBACFF38B629F45E3
4. 返回示例
成功示例:
&return_code&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5BSUCCESS%5D%5D%2D%2D%3E--&&/return_code&
&return_msg&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5B%5D%5D%2D%2D%3E--&&/return_msg&
&mch_appid&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5Bwxec38b8ff840bd989%5D%5D%2D%2D%3E--&&/mch_appid&
&mchid&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5BD%5D%2D%2D%3E--&&/mchid&
&device_info&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5B%5D%5D%2D%2D%3E--&&/device_info&
&nonce_str&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5BlxuDzMnRjpcXzxLx0q%5D%5D%2D%2D%3E--&&/nonce_str&
&result_code&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5BSUCCESS%5D%5D%2D%2D%3E--&&/result_code&
&partner_trade_no&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5B41%5D%5D%2D%2D%3E--&&/partner_trade_no&
&payment_no&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5BD%2D%2D%3E--&&/payment_no&
&payment_time&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5B%2015%EF%BC%9A26%EF%BC%9A59%5D%5D%2D%2D%3E--&&/payment_time&
错误示例:
&return_code&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5BFAIL%5D%5D%2D%2D%3E--&&/return_code&
&return_msg&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5B%E7%B3%BB%E7%BB%9F%E7%B9%81%E5%BF%99%2C%E8%AF%B7%E7%A8%8D%E5%90%8E%E5%86%8D%E8%AF%95.%5D%5D%2D%2D%3E--&&/return_msg&
&result_code&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5BFAIL%5D%5D%2D%2D%3E--&&/result_code&
&err_code&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5BSYSTEMERROR%5D%5D%2D%2D%3E--&&/err_code&
&err_code_des&&!--{cke_protected}{C}%3C!%2D%2D%5BCDATA%5B%E7%B3%BB%E7%BB%9F%E7%B9%81%E5%BF%99%2C%E8%AF%B7%E7%A8%8D%E5%90%8E%E5%86%8D%E8%AF%95.%5D%5D%2D%2D%3E--&&/err_code_des&
二、SDK实现
三、调用方式
1. 企业付款调用方法
2. 现金红包调用方法
3. 裂变红包调用方法
4. 红包查询调用方法
5. 企业付款查询调用方法
四、实现效果
本源码为付费提供,扫描下面二维码转账后,凭转账截图加QQ微信开发之现金红包 - CSDN博客
微信开发之现金红包
此项目已开源欢迎Start、PR、发起Issues一起讨论交流共同进步
文章首发地址:
微信极速开发系列文章:
前几篇文章介绍了微信支付。 、、、
此文来聊聊微信商户中的支付工具—-现金红包
一、开通现金红包权限
在使用现金红包之前,请前往开通现金红包功能。操作路径:【登录微信支付商户平台——&产品中心——&现金红包——&开通】。
二、下载API证书
商户调用微信红包接口时,服务器会进行证书验证,请在商户平台下载证书
有人要问这么多证书到底使用那个呢?跟开发语言有关系吗?
什么语言使用什么证书,以及如何使用可以参考截图中的证书说明.txt
内容如下:
欢迎使用微信支付!
微信支付API共四份(证书pkcs12格式、证书pem格式、证书密钥pem格式、CA证书),为接口中强制要求时需携带的证书文件。
证书属于敏感信息,请妥善保管不要泄露和被他人复制。
不同开发语言下的证书格式不同,以下为说明指引:
证书pkcs12格式(apiclient_cert.p12)
包含了私钥信息的证书文件,为p12(pfx)格式,由微信支付签发给您用来标识和界定您的身份
部分安全性要求较高的API需要使用该证书来确认您的调用身份
windows上可以直接双击导入系统,导入过程中会提示输入证书密码,证书密码默认为您的商户ID(如:)
证书pem格式(apiclient_cert.pem)
从apiclient_cert.p12中导出证书部分的文件,为pem格式,请妥善保管不要泄漏和被他人复制
部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
您也可以使用openssl命令来自己导出:openssl pkcs12 -clcerts -nokeys -in apiclient_cert.p12 -out apiclient_cert.pem
证书密钥pem格式(apiclient_key.pem)
从apiclient_cert.p12中导出密钥部分的文件,为pem格式
部分开发语言和环境,不能直接使用p12文件,而需要使用pem,所以为了方便您使用,已为您直接提供
您也可以使用openssl命令来自己导出:openssl pkcs12 -nocerts -in apiclient_cert.p12 -out apiclient_key.pem
CA证书(rootca.pem)
微信支付api服务器上也部署了证明微信支付身份的服务器证书,您在使用api进行调用时也需要验证所调用服务器及域名的真实性
该文件为签署微信支付证书的权威机构的根证书,可以用来验证微信支付服务器证书的真实性
某些环境和工具已经内置了若干权威机构的根证书,无需引用该证书也可以正常进行验证,这里提供给您在未内置所必须根证书的环境中载入使用
在发放现金红包之前,请确保你的资金充足。如若不足,请充值。操作路径:【登录商户平台——&账户中心——&资金管理——&充值】
每个红包的平均金额必须在1.00元到200.00元之间
四、获取openid
目前支持向指定微信用户的openid发放指定金额红包。(获取openid参见之前写的文章:
五、相关参数设置
和红包相关的参数【主要是安全方面:绑定IP、防止用户盗刷】,你可以在页面上自主设置和更改。
操作路径如下:【登录商户平台——&产品中心——&现金红包——&产品设置】(注:“产品设置”操作按钮仅当你开通现金红包功能之后才会出现)。
你可以设置和更改以下参数:
1、 调用IP地址:设置之后,仅有已设置的IP地址可以调用,其余的IP调用会报错;
2、用户领取上限:限制同一openid同一日领取的个数
3、防刷等级:防刷是指微信风控针对微信小号、僵尸号、机器号等的拦截,你可以通过更改防刷等级控制防刷的强度。
4、 同时,你也可以申请更改红包额度。但是需要经过微信支付的审核,审核通过之后才会生效。
现金红包类别
现金红包分为两类:
1、普通红包
2、裂变红包
两者部分参数不同
发送现金红包
1、发送普通红包接口 com.javen.weixin.api.RedPackApi.java
<pre class="prettyprint prettyprinted" data-original-code="private static String sendRedPackUrl = &https://api.mch./mmpaymkttransfers/sendredpack&;
* 发送红包
* @param params 请求参数
* @param certPath 证书文件目录
* @param partner 证书密码
* @return {String}
public static String sendRedPack(Map params, String certPath, String partner) {
return HttpUtils.postSSL(sendRedPackUrl, PaymentKit.toXml(params), certPath, partner);
}" data-snippet-id="ext.ca806eccd4ed6f40fdedef" data-snippet-saved="false" data-codota-status="done">private static String sendRedPackUrl = "https://api.mch./mmpaymkttransfers/sendredpack";
* 发送红包
* params 请求参数
* certPath 证书文件目录
* partner 证书密码
* {String}
public static String sendRedPack(Map&String, String& params, String certPath, String partner) {
return HttpUtils.postSSL(sendRedPackUrl, PaymentKit.toXml(params), certPath, partner);
2、发送裂变红包接口 com.javen.weixin.api.RedPackApi.java
<pre class="prettyprint prettyprinted" data-original-code="private static String sendGroupRedPackUrl = &https://api.mch./mmpaymkttransfers/sendgroupredpack&;
* 发送裂变红包
* @param params 请求参数
* @param certPath 证书文件目录
* @param partner 证书密码
* @return {String}
public static String sendGroupRedPack(Map params, String certPath, String partner) {
return HttpUtils.postSSL(sendGroupRedPackUrl, PaymentKit.toXml(params), certPath, partner);
}" data-snippet-id="ext.b6bc7fafc" data-snippet-saved="false" data-codota-status="done">private static String sendGroupRedPackUrl = "https://api.mch./mmpaymkttransfers/sendgroupredpack";
* 发送裂变红包
* params 请求参数
* certPath 证书文件目录
* partner 证书密码
* {String}
public static String sendGroupRedPack(Map&String, String& params, String certPath, String partner) {
return HttpUtils.postSSL(sendGroupRedPackUrl, PaymentKit.toXml(params), certPath, partner);
具体实现封装 com.javen.utils.ReadPackUtils.java
1、普通红包
2、裂变红包
发送红包Demo
* 微信红包demo
public class RedPackApiController extends Controller {
private static String sendName = "Javen205";
private static String certPath = "/Users/Javen/Downloads/cert/apiclient_cert.p12";
String wxappid = PropKit.get("appId");
String partner = PropKit.get("mch_id");
String paternerKey = PropKit.get("paternerKey");
* 发送普通红包
public void sendredpack() {
boolean isSend = ReadPackUtils.sendredpack(getRequest(), "100", "1", "感谢您参加猜灯谜活动,祝您元宵节快乐!",
"猜灯谜抢红包活动", "猜越多得越多,快来抢!", "o_pncsidC-pRRfCP4zj98h6slREw",
partner, wxappid, sendName, paternerKey, certPath);
renderJson(isSend);
* 发送裂变红包
public void sendGroupRedPack() {
boolean isSend = ReadPackUtils.sendGroupRedPack(partner, wxappid, "天虹百货", "o_pncsidC-pRRfCP4zj98h6slREw",
"100", "10", "感谢您参加猜灯谜活动,祝您元宵节快乐!", "猜灯谜抢红包活动",
"猜越多得越多,快来抢", paternerKey, certPath);
renderJson(isSend);
public void query() {
String query = ReadPackUtils.query("90", partner, wxappid, paternerKey, certPath);
renderJson(query);
查询红包记录
接口封装com.javen.weixin.api.RedPackApi.java
具体实现封装
com.javen.utils.ReadPackUtils.java
<pre class="prettyprint prettyprinted" data-original-code="/**
* 根据商户订单号查询红包
* @param mch_billno 商户订单号
* @param partner 商户号
* @param wxappid 公众账号ID
* @param paternerKey 商户签名Key
* @param certPath 证书路径
public static String
query(String mch_billno,String partner,String wxappid,String paternerKey,String certPath) {
Map params = new HashMap();
// 随机字符串
params.put(&nonce_str&, System.currentTimeMillis() / 1000 + &&);
// 商户订单号
params.put(&mch_billno&, mch_billno);
params.put(&mch_id&, partner);
// 公众账号ID
params.put(&appid&, wxappid);
params.put(&bill_type&, &MCHT&);
//创建签名
String sign = PaymentKit.createSign(params, paternerKey);
params.put(&sign&, sign);
String xmlResult = RedPackApi.getHbInfo(params, certPath, partner);
Map result = PaymentKit.xmlToMap(xmlResult);
System.out.println(result);
return JsonKit.toJson(result);
}" data-snippet-id="ext.a19a79b68ab" data-snippet-saved="false" data-codota-status="done">
public static String
query(String mch_billno,String partner,String wxappid,String paternerKey,String certPath) {
Map&String, String& params = new HashMap&String, String&();
params.put("nonce_str", System.currentTimeMillis() / 1000 + "");
params.put("mch_billno", mch_billno);
params.put("mch_id", partner);
params.put("appid", wxappid);
params.put("bill_type", "MCHT");
String sign = PaymentKit.createSign(params, paternerKey);
params.put("sign", sign);
String xmlResult = RedPackApi.getHbInfo(params, certPath, partner);
Map&String, String& result = PaymentKit.xmlToMap(xmlResult);
System.out.println(result);
return JsonKit.toJson(result);
码字完毕,以上就是微信发送现金红包的详细介绍。
欢迎留言、转发
微信极速开发系列文章:
此文章项目开源地址:
本文已收录于以下专栏:
相关文章推荐
1、接口文档https://pay./wiki/doc/api/cash_coupon.php?chapter=13_52、证书下载及证书安装首先,商户调用微信红包接口时,服...
话不多说直接上餐
package com.yuwei.redpack.
import java.text.SimpleDateF
import java.util.D...
简易的微信公众号管理平台使用指南
1、关注回复(可回复多个消息以及红包)
2、关键字回复
3、自定义菜单、自此个性化菜单
这几天看了下之前写的有关微信支付的博客,看的人还是挺多的,看了下留言不知道是因为博客写的不够细还是什么情况,大多都找我要源码,我觉得吧程序员还是需要有这么一个思考的过程,因此没直接给源码,俗话说“授人...
微信支付现金红包接口正式开放,只需开通微信支付,即可接入现金红包。通过现金红包接口,公众号开发者可以策划相关运营活动,向用户发放微信支付现金红包,更好的达到品牌推广及回馈用户的效果。具体能力如下:
我们接着上一篇文章支付宝支付-刷卡支付(条码支付)详解 继续来聊聊支付包扫码支付1、场景介绍扫码支付,指用户打开支付宝钱包中的“扫一扫”功能,扫描商户针对每个订单实时生成的订单二维码,并在手机端确认支...
支付宝支付-常用支付API详解(查询、退款、提现等)
原题链接:&#160;/problems/candy/&#160;
这道题用到的思路和Trapping
Rain Water是一样的,用动态规划。基本思路就是进行两次扫描...
廖雪峰老师git教程笔记
原文名称:Git分布式开发之生成ssh公钥
原文地址:http://blog.csdn.net/lastsweetop/article/details/8251784
推荐再看看:http...
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)微信公众号开发——现金红包、企业付款 - CSDN博客
微信公众号开发——现金红包、企业付款
先说现金红包
微信商户平台配置
设置基本就是如上图
普通红包 目前支持向指定微信用户的openid发放指定金额红包
单个红包金额介于[1.00元,200.00元]之间
public ActionResult Index()
string nonce_str = Common.GetRandomStr(32);
string mch_id = "";
string timeStamp = Common.GetTimeStamp();
string mch_billno = mch_id + DateTime.Now.ToString("yyyyMMdd") + timeS
string wxappid = "wx1bd37";
string send_name = "平安江南";
string re_openid = "oNIwAtD8dekn1LzBpQdsL9pLSj5g";
double fee = 1.25;
int total_amount = int.Parse((fee * 100).ToString());
int total_num = 1;
string wishing = "感谢您对我们工作的支持";
string client_ip = "61.130.145.142";
string act_name = "流动人口登记";
string remark = "祝您天天愉快";
string KEY = "2Bp913RacktcjajM5grZH8qHn4IKzPKJ";
Dictionary&string, string& dic = OrdinaryRedPack.CreateSignatureParamsDic(nonce_str, mch_billno, mch_id, wxappid, send_name, re_openid, total_amount.ToString(), total_num.ToString(), wishing, client_ip, act_name, remark);
string sign = SafetySpecification.SignatureCompute(dic, KEY);
string data = OrdinaryRedPack.CreatePostData(nonce_str, sign, mch_billno, mch_id, wxappid, send_name, re_openid, total_amount.ToString(), total_num.ToString(), wishing, client_ip, act_name, remark);
#region 证书放到服务器固定位置
string url = "https://api.mch./mmpaymkttransfers/sendredpack";
string cert = @"E:\wwwroot\\web\cert\apiclient_cert.p12";
string password = "";
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
X509Certificate2 cert1 = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
#endregion
#region 发起post请求
HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
webrequest.ClientCertificates.Add(cert1);
webrequest.Method = "post";
byte[] postdatabyte = Encoding.UTF8.GetBytes(data);
webrequest.ContentLength = postdatabyte.L
stream = webrequest.GetRequestStream();
stream.Write(postdatabyte, 0, postdatabyte.Length);
stream.Close();
HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();
#endregion
ViewBag.Sign =
ViewBag.Res = responseC
return View();
private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
if (errors == SslPolicyErrors.None)
return true;
return false;
public ActionResult Index2()
string nonce_str = Common.GetRandomStr(32);
string mch_id = "";
string timeStamp = Common.GetTimeStamp();
string mch_billno = mch_id + DateTime.Now.ToString("yyyyMMdd") + timeS
string wxappid = "wx1bd37";
string send_name = "平安江南";
string re_openid = "oNIwAtDti5FSBpn45qReOVphvqeg";
double fee = 10;
int total_amount = int.Parse((fee * 100).ToString());
int total_num = 10;
string amt_type = "ALL_RAND";
string wishing = "感谢您对我们工作的支持";
string act_name = "流动人口登记";
string remark = "祝您天天愉快";
string KEY = "2Bp913RacktcjajM5grZH8qHn4IKzPKJ";
Dictionary&string, string& dic = FissionRedPack.CreateSignatureParamsDic(nonce_str, mch_billno, mch_id, wxappid, send_name, re_openid, total_amount.ToString(), total_num.ToString(),amt_type, wishing, act_name, remark);
string sign = SafetySpecification.SignatureCompute(dic, KEY);
string data = FissionRedPack.CreatePostData(sign,mch_billno,mch_id,wxappid,send_name,re_openid,total_amount.ToString(),amt_type,total_num.ToString(),wishing,act_name,remark,nonce_str);
string url = "https://api.mch./mmpaymkttransfers/sendgroupredpack";
string cert = @"E:\wwwroot\\web\cert\apiclient_cert.p12";
string password = "";
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
#region 发起post请求
HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
webrequest.ClientCertificates.Add(cer);
webrequest.Method = "post";
byte[] postdatabyte = Encoding.UTF8.GetBytes(data);
webrequest.ContentLength = postdatabyte.L
stream = webrequest.GetRequestStream();
stream.Write(postdatabyte, 0, postdatabyte.Length);
stream.Close();
HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();
#endregion
ViewBag.Sign =
ViewBag.Res = responseC
return View();
企业付款,微信商户平台配置也差不多
public ActionResult Index3()
string mch_appid = "wx1bd37";
string mchid = "";
string nonce_str = Common.GetRandomStr(32);
string timeStamp = Common.GetTimeStamp();
string partner_trade_no = mchid + DateTime.Now.ToString("yyyyMMdd") + timeS
string openid = "oNIwAtD8dekn1LzBpQdsL9pLSj5g";
string check_name = "OPTION_CHECK";
string re_user_name = "徐建兵";
double fee = 1;
int amount = int.Parse((fee * 100).ToString());
string desc = "理赔";
string spbill_create_ip = "61.130.145.142";
string KEY = "2Bp913RacktcjajM5grZH8qHn4IKzPKJ";
Dictionary&string, string& dic = EnterprisePlay.CreateSignatureParamsDic(mch_appid, mchid, nonce_str, partner_trade_no, openid, check_name, re_user_name, amount.ToString(), desc, spbill_create_ip);
string sign = SafetySpecification.SignatureCompute(dic, KEY);
string data = EnterprisePlay.CreatePostData(mch_appid, mchid, nonce_str, partner_trade_no, openid, check_name, re_user_name, amount.ToString(), desc, spbill_create_ip, sign);
string url = "https://api.mch./mmpaymkttransfers/promotion/transfers";
string cert = @"E:\wwwroot\\web\cert\apiclient_cert.p12";
string password = "";
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(CheckValidationResult);
X509Certificate2 cer = new X509Certificate2(cert, password, X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.MachineKeySet);
#region 发起post请求
HttpWebRequest webrequest = (HttpWebRequest)HttpWebRequest.Create(url);
webrequest.ClientCertificates.Add(cer);
webrequest.Method = "post";
byte[] postdatabyte = Encoding.UTF8.GetBytes(data);
webrequest.ContentLength = postdatabyte.L
stream = webrequest.GetRequestStream();
stream.Write(postdatabyte, 0, postdatabyte.Length);
stream.Close();
HttpWebResponse httpWebResponse = (HttpWebResponse)webrequest.GetResponse();
StreamReader streamReader = new StreamReader(httpWebResponse.GetResponseStream());
string responseContent = streamReader.ReadToEnd();
#endregion
ViewBag.Sign =
ViewBag.Res = responseC
return View();
以下是上面代码中用到的类库
SafetySpecification 安全规范类
using System.Collections.G
using System.L
using System.Security.C
using System.T
using System.Threading.T
public class SafetySpecification
微信商户平台(pay.)账户设置API安全密钥设置
public static string SignatureCompute(Dictionary&string, string& dic, string Key)
#region 3-1.签名参数 按照字段名的ASCII 码从小到大排序(字典序)后
string[] arrkey = new string[dic.Keys.Count];
int i = 0;
foreach (string key in dic.Keys)
arrkey[i] =
arrkey = arrkey.OrderBy(n =& n).ToArray();
#endregion
#region 3-2.使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1
string stringA = "";
foreach (string key in arrkey)
stringA += key + "=" + dic[key] + "&";
stringA = stringA.Substring(0, stringA.Length - 1);
#endregion
string stringSignTemp = stringA + "&key=" + K
string sign = MD5(stringSignTemp).ToUpper();
把字符串进行MD5计算
private static string MD5(string stringSignTemp)
string cl = stringSignT
string pwd = "";
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] s = puteHash(Encoding.UTF8.GetBytes(cl));
for (int i = 0; i & s.L i++)
pwd = pwd + s[i].ToString("x2");
OrdinaryRedPack 普通红包类
using System.Collections.G
using System.L
using System.T
using System.Threading.T
namespace WeiXinBusiness.redpack
/// 普通红包
public class OrdinaryRedPack
/// 创建 签名参数字典
name="nonce_str"&随机字符串&
name="mch_billno"&商户订单号(详见开发文档)&
name="mch_id"&商户号&
name="wxappid"&公众账号appid&
name="send_name"&商户名称&
name="re_openid"&用户openid&
name="total_amount"&付款金额(单位分)&
name="total_num"&红包发放总人数&
name="wishing"&红包祝福语&
name="client_ip"&Ip地址&
name="act_name"&活动名称&
name="remark"&备注&
name="scene_id"&场景id(详见开发文档)&
name="risk_info"&活动信息(详见开发文档)&
name="consume_mch_id"&资金授权商户号(服务商替特约商户发放时使用)&
public static Dictionary string& CreateSignatureParamsDic(string nonce_str, string mch_billno, string mch_id, string wxappid, string send_name, string re_openid, string total_amount, string total_num, string wishing, string client_ip, string act_name, string remark, string scene_id = "", string risk_info = "", string consume_mch_id = "")
Dictionary string& dic = new Dictionary string&();
dic.Add("nonce_str", nonce_str);
dic.Add("mch_billno", mch_billno);
dic.Add("mch_id", mch_id);
dic.Add("wxappid", wxappid);
dic.Add("send_name", send_name);
dic.Add("re_openid", re_openid);
dic.Add("total_amount", total_amount);
dic.Add("total_num", total_num);
dic.Add("wishing", wishing);
dic.Add("client_ip", client_ip);
dic.Add("act_name", act_name);
dic.Add("remark", remark);
if (!string.IsNullOrEmpty(scene_id))
dic.Add("scene_id", scene_id);
if (!string.IsNullOrEmpty(risk_info))
dic.Add("risk_info", risk_info);
if (!string.IsNullOrEmpty(consume_mch_id))
dic.Add("consume_mch_id", consume_mch_id);
/// 创建post数据
name="nonce_str"&&
name="sign"&&
name="mch_billno"&&
name="mch_id"&&
name="wxappid"&&
name="send_name"&&
name="re_openid"&&
name="total_amount"&&
name="total_num"&&
name="wishing"&&
name="client_ip"&&
name="act_name"&&
name="remark"&&
name="scene_id"&&
name="risk_info"&&
name="consume_mch_id"&&
public static string CreatePostData(string nonce_str, string sign, string mch_billno, string mch_id, string wxappid, string send_name, string re_openid, string total_amount, string total_num, string wishing, string client_ip, string act_name, string remark, string scene_id = "", string risk_info = "", string consume_mch_id = "")
string str = "";
str += "&";
str += "&&![CDATA[" + sign + "]]&&";
str += "&&![CDATA[" + mch_billno + "]]&&";
str += "&&![CDATA[" + mch_id + "]]&&";
str += "&&![CDATA[" + wxappid + "]]&&";
str += "&&![CDATA[" + send_name + "]]&&";
str += "&&![CDATA[" + re_openid + "]]&&";
str += "&&![CDATA[" + total_amount + "]]&&";
str += "&&![CDATA[" + total_num + "]]&&";
str += "&&![CDATA[" + wishing + "]]&&";
str += "&&![CDATA[" + client_ip + "]]&&";
str += "&&![CDATA[" + act_name + "]]&&";
str += "&&![CDATA[" + remark + "]]&&";
if (!string.IsNullOrEmpty(scene_id))
str += "&&![CDATA[" + scene_id + "]]&&";
if (!string.IsNullOrEmpty(consume_mch_id))
str += "&&![CDATA[" + consume_mch_id + "]]&&";
str += "&&![CDATA[" + nonce_str + "]]&&";
if (!string.IsNullOrEmpty(risk_info))
str += "&" + risk_info + "&";
str += "&";
FissionRedPack 裂变红包类
using System.Collections.G
using System.L
using System.T
using System.Threading.T
namespace WeiXinBusiness.redpack
/// 裂变红包
public class FissionRedPack
/// 创建 签名参数字典
name="nonce_str"&随机字符串&
name="mch_billno"&商户订单号(详见开发文档)&
name="mch_id"&商户号&
name="wxappid"&公众账号appid&
name="send_name"&商户名称&
name="re_openid"&用户openid&
name="total_amount"&付款金额(单位分)&
name="total_num"&红包发放总人数&
name="amt_type"&红包金额设置方式&
name="wishing"&红包祝福语&
name="act_name"&活动名称&
name="remark"&备注&
name="scene_id"&场景id(详见开发文档)&
name="risk_info"&活动信息(详见开发文档)&
name="consume_mch_id"&资金授权商户号(服务商替特约商户发放时使用)&
public static Dictionary string& CreateSignatureParamsDic(string nonce_str, string mch_billno, string mch_id, string wxappid, string send_name, string re_openid, string total_amount, string total_num,string amt_type, string wishing,
string act_name, string remark, string scene_id = "", string risk_info = "", string consume_mch_id = "")
Dictionary string& dic = new Dictionary string&();
dic.Add("nonce_str", nonce_str);
dic.Add("mch_billno", mch_billno);
dic.Add("mch_id", mch_id);
dic.Add("wxappid", wxappid);
dic.Add("send_name", send_name);
dic.Add("re_openid", re_openid);
dic.Add("total_amount", total_amount);
dic.Add("total_num", total_num);
dic.Add("amt_type", amt_type);
dic.Add("wishing", wishing);
dic.Add("act_name", act_name);
dic.Add("remark", remark);
if (!string.IsNullOrEmpty(scene_id))
dic.Add("scene_id", scene_id);
if (!string.IsNullOrEmpty(risk_info))
dic.Add("risk_info", risk_info);
if (!string.IsNullOrEmpty(consume_mch_id))
dic.Add("consume_mch_id", consume_mch_id);
/// 创建post数据
name="nonce_str"&&
name="sign"&&
name="mch_billno"&&
name="mch_id"&&
name="wxappid"&&
name="send_name"&&
name="re_openid"&&
name="total_amount"&&
name="total_num"&&
name="wishing"&&
name="client_ip"&&
name="act_name"&&
name="remark"&&
name="scene_id"&&
name="risk_info"&&
name="consume_mch_id"&&
public static string CreatePostData(string sign, string mch_billno, string mch_id, string wxappid, string send_name, string re_openid, string total_amount, string amt_type, string total_num, string wishing, string act_name, string remark, string nonce_str,
string scene_id = "", string risk_info = "", string consume_mch_id = "")
string str = "";
str += "&";
str += "&&![CDATA[" + sign + "]]&&";
str += "&&![CDATA[" + mch_billno + "]]&&";
str += "&&![CDATA[" + mch_id + "]]&&";
str += "&&![CDATA[" + wxappid + "]]&&";
str += "&&![CDATA[" + send_name + "]]&&";
str += "&&![CDATA[" + re_openid + "]]&&";
str += "&&![CDATA[" + total_amount + "]]&&";
str += "&&![CDATA[" + amt_type + "]]&& ";
str += "&&![CDATA[" + total_num + "]]&&";
str += "&&![CDATA[" + wishing + "]]&&";
str += "&&![CDATA[" + act_name + "]]&&";
str += "&&![CDATA[" + remark + "]]&&";
if (!string.IsNullOrEmpty(scene_id))
str += "&&![CDATA[" + scene_id + "]]&&";
if (!string.IsNullOrEmpty(consume_mch_id))
str += "&&![CDATA[" + consume_mch_id + "]]&&";
str += "&&![CDATA[" + nonce_str + "]]&&";
if (!string.IsNullOrEmpty(risk_info))
str += "&" + risk_info + "&";
str += "&";
EnterprisePlay 企业支付类
using System.Collections.G
using System.L
using System.T
using System.Threading.T
namespace WeiXinBusiness.enterprise_play
public class EnterprisePlay
创建 签名参数字典
公众账号appid
32位随机数
商户订单号
用户openid
校验用户姓名选项
收款用户姓名
企业付款描述信息
调用接口的机器Ip地址
public static Dictionary&string, string& CreateSignatureParamsDic(string mch_appid, string mchid, string nonce_str, string partner_trade_no, string openid, string check_name, string re_user_name, string amount, string desc, string spbill_create_ip)
Dictionary&string, string& dic = new Dictionary&string, string&();
dic.Add("mch_appid", mch_appid);
dic.Add("mchid", mchid);
dic.Add("nonce_str", nonce_str);
dic.Add("partner_trade_no", partner_trade_no);
dic.Add("openid", openid);
dic.Add("check_name", check_name);
dic.Add("re_user_name", re_user_name);
dic.Add("amount", amount);
dic.Add("desc", desc);
dic.Add("spbill_create_ip", spbill_create_ip);
创建post数据
公众账号appid
32位随机数
商户订单号
用户openid
校验用户姓名选项
收款用户姓名
企业付款描述信息
调用接口的机器Ip地址
public static string CreatePostData(string mch_appid, string mchid, string nonce_str, string partner_trade_no, string openid, string check_name, string re_user_name, string amount, string desc, string spbill_create_ip, string sign)
string str = "";
str += "&xml&";
str += "&mch_appid&" + mch_appid + "&/mch_appid&";
str += "&mchid&" + mchid + "&/mchid&";
str += "&nonce_str&" + nonce_str + "&/nonce_str&";
str += "&partner_trade_no&" + partner_trade_no + "&/partner_trade_no&";
str += "&openid&" + openid + "&/openid&";
str += "&check_name&" + check_name + "&/check_name&";
str += "&re_user_name&" + re_user_name + "&/re_user_name&";
str += "&amount&" + amount + "&/amount&";
str += "&desc&" + desc + "&/desc&";
str += "&spbill_create_ip&" + spbill_create_ip + "&/spbill_create_ip&";
str += "&sign&" + sign + "&/sign&";
str += "&/xml&";
本文已收录于以下专栏:
相关文章推荐
以下有关微信支付中现金红包的开发参考自微信支付开发文档,网址为:https://pay./wiki/doc/api/tools/cash_coupon.php?chapter...
微信红包JAVA代码整理
本文介绍了微信现金红包高级红包接口开发注意事项。
企业付款业务是基于微信支付商户平台的资金管理能力,为了协助商户方便地实现企业向个人付款,针对部分有开发能力的商户,提供通过API完成企业付款的功能。
微信公众平台现金红包开发PHP开发微信公众平台现金红包thinkPHP开发微信公众平台现金红包
微信企业转账类封装
他的最新文章
讲师:吴岸城
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 微信商户现金红包 的文章

 

随机推荐