在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美

當(dāng)前位置:雨林木風(fēng)下載站 > 網(wǎng)絡(luò)軟件教程 > 詳細(xì)頁面

微信公眾號開發(fā):商戶如何給用戶發(fā)紅包案例講解

微信公眾號開發(fā):商戶如何給用戶發(fā)紅包案例講解

更新時間:2025-09-20 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

導(dǎo)微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務(wù)的免費應(yīng)用程序,由張小龍所帶領(lǐng)的騰訊廣州研發(fā)中心產(chǎn)品團(tuán)隊打造 [2] 。微信支持跨通信運營商、跨操作系統(tǒng)平臺...
微信(WeChat)是騰訊公司于2011年1月21日推出的一個為智能終端提供即時通訊服務(wù)的免費應(yīng)用程序,由張小龍所帶領(lǐng)的騰訊廣州研發(fā)中心產(chǎn)品團(tuán)隊打造 [2] 。微信支持跨通信運營商、跨操作系統(tǒng)平臺通過網(wǎng)絡(luò)快速發(fā)送免費(需消耗少量網(wǎng)絡(luò)流量)語音短信、視頻、圖片和文字,同時,也可以使用通過共享流媒體內(nèi)容的資料和基于位置的社交插件“搖一搖”、“漂流瓶”、“朋友圈”、”公眾平臺“、”語音記事本“等服務(wù)插件。

紅包功能簡單介紹:

1、商戶調(diào)用接口時,通過指定發(fā)送對象以及發(fā)送金額的方式發(fā)放紅包,這樣的方式,允許商戶靈活的應(yīng)用于各種各樣豐富的活動場景

2、領(lǐng)取到紅包后,用戶的資金直接進(jìn)入微信零錢,避免繁復(fù)的領(lǐng)獎流程,帶給用戶微信支付原生的流暢體驗

現(xiàn)金紅包官網(wǎng)文檔地址:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1

調(diào)用現(xiàn)金紅包接口需要使用到證書,請前往商戶平臺下載證書

官網(wǎng)有關(guān)詳細(xì)證書的介紹:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=4_3

因為發(fā)送現(xiàn)金紅包是從商戶平臺余額扣款,所以商戶平臺的賬戶余額必須有充足的余額

下面是調(diào)用紅包接口詳細(xì)代碼:1、簽名的MD5加密類:

/// <summary>/// MD5UtilHelper 的摘要說明。/// </summary>public class MD5UtilHelper
{    public MD5UtilHelper()
    {        //
        // TODO: 在此處添加構(gòu)造函數(shù)邏輯
        //
    }    /// <summary>
            /// 獲取大寫的MD5簽名結(jié)果
    /// </summary>
    /// <param name="encypStr"></param>
    /// <param name="charset"></param>
    /// <returns></returns>
    public static string GetMD5(string encypStr, string charset)
    {        string retStr;
        MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider();        //創(chuàng)建md5對象
        byte[] inputBye;        byte[] outputBye;        //使用GB2312編碼方式把字符串轉(zhuǎn)化為字節(jié)數(shù)組.
        try
        {
            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 retStr;
    }
}

2、處理參數(shù)的類:

public class RequestHandler
    {        public RequestHandler(HttpContext httpContext)
        {
            Parameters = new Hashtable();            this.HttpContext = httpContext ?? HttpContext.Current;

        }        /// <summary>
        /// 密鑰
        /// </summary>
        private string Key;        protected HttpContext HttpContext;        /// <summary>
        /// 請求的參數(shù)
        /// </summary>
        protected Hashtable Parameters;        /// <summary>
        /// debug信息
        /// </summary>
        private string DebugInfo;        /// <summary>
        /// 初始化函數(shù)
        /// </summary>
        public virtual void Init()
        {
        }        /// <summary>
        /// 獲取debug信息
        /// </summary>
        /// <returns></returns>
        public String GetDebugInfo()
        {            return DebugInfo;
        }        /// <summary>
        /// 獲取密鑰
        /// </summary>
        /// <returns></returns>
        public string GetKey()
        {            return Key;
        }        /// <summary>
        /// 設(shè)置密鑰
        /// </summary>
        /// <param name="key"></param>
        public void SetKey(string key)
        {            this.Key = key;
        }        /// <summary>
        /// 設(shè)置參數(shù)值
        /// </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>
        /// 創(chuàng)建md5摘要,規(guī)則是:按參數(shù)名稱a-z排序,遇到空值的參數(shù)不參加簽名
        /// </summary>
        /// <param name="key">參數(shù)名</param>
        /// <param name="value">參數(shù)值</param>
        /// key和value通常用于填充最后一組參數(shù)
        /// <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();            return sign;
        }        /// <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 + ">");
                }                else
                {
                    sb.Append("<" + k + "><![CDATA[" + v + "]]></" + k + ">");
                }

            }
            sb.Append("</xml>");            return sb.ToString();
        }        /// <summary>
        /// 設(shè)置debug信息
        /// </summary>
        /// <param name="debugInfo"></param>
        public void SetDebugInfo(String debugInfo)
        {            this.DebugInfo = debugInfo;
        }        public Hashtable GetAllParameters()
        {            return this.Parameters;
        }        protected virtual string GetCharset()
        {            return this.HttpContext.Request.ContentEncoding.BodyName;
        }
    }

3、調(diào)用現(xiàn)金紅包處理類:

 /// <summary>
 /// 企業(yè)號微信支付接口
 /// </summary>
 public static class TenPay
 {     #region 企業(yè)向用戶發(fā)紅包
     /// <summary>
     /// 用于企業(yè)向微信用戶個人發(fā)紅包
     /// 目前支持向指定微信用戶的openid個人發(fā)紅包
     /// </summary>
     /// <param name="certPassword">apiclient_cert.p12證書密碼即商戶號</param>
     /// <param name="data">微信支付需要post的xml數(shù)據(jù)</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.weixin.qq.com/mmpaymkttransfers/sendredpack";         string cert = certPath;

         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);//設(shè)置指針讀取位置

         HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlFormat);
         request.ClientCertificates.Add(cer);
         request.Method = "POST";
         request.Timeout = timeOut;

         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 輸入二進(jìn)制流
         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();//關(guān)閉文件訪問
         }         #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 retString;
             }
         }
     }     private static bool CheckValidationResult(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors)
     {         if (errors == SslPolicyErrors.None)             return true;         return false;
     }     #endregion

 }

4、調(diào)用現(xiàn)金紅包接口

#region 發(fā)送紅包bool fals = false;   //記錄發(fā)送紅包是否成功string xmlResult = null;  //現(xiàn)金紅包接口返回的xmlstring certPath = null;  //證書在服務(wù)器的物理位置string data = null;  //調(diào)用現(xiàn)金紅包接口需要的數(shù)據(jù)try
{
    //創(chuàng)建支付應(yīng)答對象
    RequestHandler packageReqHandler = new RequestHandler(null);
    //初始化
    packageReqHandler.Init();
    string nonceStr = TenPayV3Util.GetNoncestr();  //時間戳
    //設(shè)置package訂單參數(shù)
    packageReqHandler.SetParameter("nonce_str", nonceStr);    //隨機(jī)字符串,不長于32位
    packageReqHandler.SetParameter("mch_billno", System.Configuration.ConfigurationManager.AppSettings["TenPayV3_MchId"] + model.JournalNumber);//商戶訂單號(每個訂單號必須唯一)組成:mch_id+yyyymmdd+10位一天內(nèi)不能重復(fù)的數(shù)字。接口根據(jù)商戶訂單號支持重入,如出現(xiàn)超時可再調(diào)用。
    packageReqHandler.SetParameter("mch_id", System.Configuration.ConfigurationManager.AppSettings["TenPayV3_MchId"]);  //微信支付分配的商戶號
    packageReqHandler.SetParameter("wxappid", System.Configuration.ConfigurationManager.AppSettings["TenPayV3_AppId"]);//微信分配的公眾賬號ID(企業(yè)號corpid即為此appId)。接口傳入的所有appid應(yīng)該為公眾號的appid(在mp.weixin.qq.com申請的),不能為APP的appid(在open.weixin.qq.com申請的)。 
    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");  //紅包發(fā)放總?cè)藬?shù)
    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").Value;
    if ("SUCCESS".Equals(return_code))
    {
        string result_code = res.Element("xml").Element("result_code").Value;
        if ("SUCCESS".Equals(result_code))
        {
            fals = true;
        }
    }
}
catch (Exception exception)
{
}#endregion

注意:證書所在文件夾權(quán)限,IIS必須有權(quán)限對該文件夾操作的權(quán)限。

相關(guān)文章:

PHP微信公眾號自動發(fā)送紅包API,php公眾紅包api

微信公眾號紅包接口開發(fā)PHP開發(fā) CA證書出錯,請登陸微信支付商戶平臺下載證書

相關(guān)視頻:

微信公眾號前段-php微信接口開發(fā)實戰(zhàn)項目視頻教程 聊天機(jī)器人

以上就是微信公眾號開發(fā):商戶如何給用戶發(fā)紅包實例講解的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


微信提供公眾平臺、朋友圈、消息推送等功能,用戶可以通過“搖一搖”、“搜索號碼”、“附近的人”、掃二維碼方式添加好友和關(guān)注公眾平臺,同時微信將內(nèi)容分享給好友以及將用戶看到的精彩內(nèi)容分享到微信朋友圈。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統(tǒng)下載排行

在线看毛片视频-国产免费av在线-欧美日韩一区二区三区-国产成人无码av在线播放无广告-亚洲人va欧美va人人爽-国产第一草草-西班牙黄色片-四虎在线网站8848-最新av片免费网站入口-东京热无码中文字幕av专区-日本大人吃奶视频xxxx-欧美精品一区二区三区四区五区-国产片天天弄-国产免费内射又粗又爽密桃视频-欧美爱爱网站-日韩v欧美
  • <li id="86scu"><menu id="86scu"></menu></li>
    <li id="86scu"></li>
    <button id="86scu"></button>
  • <s id="86scu"></s><button id="86scu"><menu id="86scu"></menu></button>
  • 国产真实乱子伦| 久久99久久久久久| 中文字幕国内自拍| 免费看a级黄色片| 日韩视频第二页| 亚洲这里只有精品| 熟妇熟女乱妇乱女网站| 久草视频国产在线| 免费一级特黄录像| 男人添女人下面免费视频| 青青青国产在线视频| 亚洲中文字幕无码专区| 国产精品wwwww| 国产高清av在线播放| 欧美三级午夜理伦三级| 香蕉视频网站入口| 我看黄色一级片| 超碰成人在线播放| 青青草原播放器| 日韩精品视频网址| 日本免费黄色小视频| 日韩精品视频在线观看视频 | 欧美少妇一级片| 亚洲高潮无码久久| 日韩av新片网| 日本熟妇人妻xxxxx| 日本久久久久久久久久久久| 鲁一鲁一鲁一鲁一av| 亚洲女人在线观看| 999一区二区三区| 黄色片久久久久| 伊人网在线综合| 国产内射老熟女aaaa| 精品国产一二三四区| 超碰影院在线观看| 亚洲第一精品区| 波多野结衣之无限发射| 亚洲无吗一区二区三区| 麻豆一区二区三区在线观看| 99视频在线免费播放| 黄色在线视频网| 男人草女人视频| 激情综合网俺也去| 日本免费在线视频观看| 国产一区二区在线视频播放| 污色网站在线观看| 看av免费毛片手机播放| 国产天堂在线播放| 国产欧美一区二| 国产精品成人久久电影| 一区二区在线播放视频| 超级碰在线观看| 免费黄色日本网站| xxx中文字幕| 妞干网在线免费视频| 91看片淫黄大片91| 欧美 国产 小说 另类| 欧美三级午夜理伦三级| 男生操女生视频在线观看| 免费看黄色a级片| av免费在线播放网站| 午夜免费福利视频在线观看| 日本大片免费看| 久久久精品三级| 中文字幕一区二区三区四区五区人 | 中文字幕第21页| 国产九色porny| 久草热视频在线观看| 中文字幕人妻熟女人妻洋洋| 午夜剧场在线免费观看| 日本高清一区二区视频| av在线com| 福利视频一区二区三区四区| 男人的天堂日韩| 国产欧美日韩网站| www.久久91| 久久人妻无码一区二区| 亚洲国产精品三区| 欧美一级特黄aaa| 丰满少妇在线观看| 97成人在线免费视频| 一本色道久久88亚洲精品综合| 性欧美videossex精品| 无码人妻丰满熟妇区96| 日韩最新中文字幕| 公共露出暴露狂另类av| 91免费视频网站在线观看| 国产精品va在线观看无码| 亚洲精品一二三四五区| jizz大全欧美jizzcom| 日韩国产欧美亚洲| 中文字幕一区二区三区四| 日本中文字幕在线不卡| 精品日韩在线播放| 99精品视频网站| 中文字幕永久有效| а 天堂 在线| 黄色网络在线观看| 激情成人开心网| 很污的网站在线观看| 精品国产av无码一区二区三区| 九一国产精品视频| 青青在线视频观看| 91热这里只有精品| 免费不卡av网站| 热久久最新地址| 伊人成色综合网| 亚洲国产日韩欧美在线观看| 性鲍视频在线观看| 中文 日韩 欧美| 青青草原av在线播放| 婷婷激情小说网| 国语对白做受xxxxx在线中国| 青青草精品视频在线观看| av在线观看地址| 特色特色大片在线| 在线观看免费污视频| 亚洲欧美日韩三级| 黄色a级片免费看| 久久婷婷中文字幕| 日韩精品久久一区二区| 国产免费黄色小视频| 成人黄色一区二区| 成人性做爰aaa片免费看不忠| 国产一级不卡毛片| 超碰人人草人人| 国产树林野战在线播放| 欧美国产日韩激情| 国产wwwxx| 亚洲精品中文字幕乱码无线| 免费在线看黄色片| 妞干网在线视频观看| 国产激情片在线观看| 亚洲天堂国产视频| 亚洲天堂2018av| 日韩免费视频播放| 青青草国产免费| 日本不卡一区二区在线观看| 国产免费一区二区视频| 欧美一级中文字幕| 亚洲最新免费视频| www.av片| 艳母动漫在线观看| 天天干天天爽天天射| 国产成人黄色片| 亚洲人成无码网站久久99热国产 | 久久久久99精品成人片| 亚洲成人福利在线观看| 欧美一二三不卡| 99re精彩视频| aⅴ在线免费观看| 欧美无砖专区免费| 亚洲高清免费在线观看| 无罩大乳的熟妇正在播放| 伊人成人免费视频| wwwwwxxxx日本| 欧美婷婷精品激情| 欧美精品卡一卡二| 丰满爆乳一区二区三区| 久久精品在线免费视频| 黄网站色视频免费观看| 日本a级片在线观看| 777久久精品一区二区三区无码| 中国一级大黄大黄大色毛片| 99久久免费观看| 自拍偷拍视频在线| 国产一线二线三线女| 337p粉嫩大胆噜噜噜鲁| 欧美伦理片在线看| 国产乱码一区二区三区四区| 国产女人18毛片| 无码aⅴ精品一区二区三区浪潮 | 波多野结衣免费观看| 国产黄色激情视频| 向日葵污视频在线观看| 久久久国内精品| 在线观看av网页| 91丨porny丨探花| 日本欧美黄色片| 另类小说第一页| 99热在线这里只有精品| 91免费视频黄| 可以看污的网站| 日本熟妇人妻中出| 欧美一区二区三区爽大粗免费| www.-级毛片线天内射视视| 激情五月俺来也| 免费看污污网站| 国产日韩成人内射视频| 人妻有码中文字幕| 青青草成人免费在线视频| 成年人视频网站免费| 91传媒免费视频| 亚洲激情免费视频| 7777在线视频| 国产四区在线观看| 国产av不卡一区二区| 熟妇熟女乱妇乱女网站| 激情成人在线观看| 特黄特黄一级片|