国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

當前位置:雨林木風下載站 > 網絡軟件教程 > 詳細頁面

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

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

更新時間:2025-09-20 文章作者:未知 信息來源:網絡 閱讀次數:

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

紅包功能簡單介紹:

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

2、領取到紅包后,用戶的資金直接進入微信零錢,避免繁復的領獎流程,帶給用戶微信支付原生的流暢體驗

現金紅包官網文檔地址:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_1

調用現金紅包接口需要使用到證書,請前往商戶平臺下載證書

官網有關詳細證書的介紹:https://pay.weixin.qq.com/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 retStr;
        MD5CryptoServiceProvider m5 = new MD5CryptoServiceProvider();        //創建md5對象
        byte[] inputBye;        byte[] outputBye;        //使用GB2312編碼方式把字符串轉化為字節數組.
        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、處理參數的類:

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

        }        /// <summary>
        /// 密鑰
        /// </summary>
        private string Key;        protected HttpContext HttpContext;        /// <summary>
        /// 請求的參數
        /// </summary>
        protected Hashtable Parameters;        /// <summary>
        /// debug信息
        /// </summary>
        private string DebugInfo;        /// <summary>
        /// 初始化函數
        /// </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>
        /// 設置密鑰
        /// </summary>
        /// <param name="key"></param>
        public void SetKey(string key)
        {            this.Key = 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();            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>
        /// 設置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、調用現金紅包處理類:

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

         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 輸入二進制流
         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 retString;
             }
         }
     }     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;  //現金紅包接口返回的xmlstring certPath = null;  //證書在服務器的物理位置string data = null;  //調用現金紅包接口需要的數據try
{
    //創建支付應答對象
    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.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");  //紅包發放總人數
    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

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

相關文章:

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

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

相關視頻:

微信公眾號前段-php微信接口開發實戰項目視頻教程 聊天機器人

以上就是微信公眾號開發:商戶如何給用戶發紅包實例講解的詳細內容,更多請關注php中文網其它相關文章!


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

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

本類教程下載

系統下載排行

国产午夜成人免费看片无遮挡_日本免费xxxx色视频_免费人成网上在线观看_黄网址在线永久免费观看

  • <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        亚洲欧美一区二区在线观看| 91福利视频久久久久| 久久精品国产99国产| 欧美日韩另类国产亚洲欧美一级| 亚洲电影视频在线| 日韩一二三四区| 精品一区二区三区欧美| 中文字幕在线观看不卡| 欧美性猛片xxxx免费看久爱| 日韩主播视频在线| 国产女人aaa级久久久级 | 成人免费看的视频| 亚洲精品国产精华液| 7777精品伊人久久久大香线蕉超级流畅 | 99国内精品久久| 日韩精品一二三区| 中文字幕免费不卡| 欧美日韩国产高清一区二区三区| 日本不卡一区二区三区高清视频| 久久久久久免费毛片精品| 色综合天天狠狠| 麻豆一区二区三| 一区免费观看视频| 日韩一区二区电影| 色综合亚洲欧洲| 国产精品自拍三区| 日本成人在线电影网| 一区二区三区欧美激情| 久久久久久夜精品精品免费| 美国毛片一区二区三区| 久久久久99精品国产片| 在线免费观看日本一区| 国产乱码精品一区二区三区五月婷| 亚洲激情男女视频| 日本一区二区免费在线观看视频 | 26uuu精品一区二区三区四区在线| 色婷婷精品久久二区二区蜜臀av| 国内不卡的二区三区中文字幕 | 极品尤物av久久免费看| 亚洲一区二区三区在线看| 欧美国产一区视频在线观看| 日韩精品一区二区三区视频| 欧美视频中文字幕| 色婷婷综合中文久久一本| 成人午夜大片免费观看| 国产aⅴ综合色| 国产精品一区三区| 国内不卡的二区三区中文字幕| 男人的天堂久久精品| 天堂成人国产精品一区| 亚洲精品美国一| 亚洲精品高清在线观看| 亚洲卡通欧美制服中文| 亚洲欧美电影一区二区| 亚洲视频在线一区二区| 中文字幕在线免费不卡| 中文字幕日韩精品一区 | 亚洲精品中文在线影院| 国产精品久久久久三级| 国产精品看片你懂得| 中文字幕一区二区视频| 亚洲欧美色图小说| 亚洲不卡一区二区三区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 国产综合色视频| 国产在线观看免费一区| 国产激情视频一区二区三区欧美| 国内精品不卡在线| 99热国产精品| 欧美视频一区二区| 欧美刺激脚交jootjob| 精品国产精品一区二区夜夜嗨| 日韩欧美一级在线播放| 国产精品免费网站在线观看| 亚洲男人的天堂av| 蜜臀91精品一区二区三区| 国产成人亚洲综合a∨婷婷 | 337p亚洲精品色噜噜狠狠| 欧美精三区欧美精三区| 精品少妇一区二区三区日产乱码 | 亚洲精品videosex极品| 天天影视涩香欲综合网| 韩国成人福利片在线播放| 岛国精品在线观看| 欧美久久久久久久久| 精品粉嫩aⅴ一区二区三区四区| 国产婷婷色一区二区三区| 亚洲美女屁股眼交| 久久精品国产在热久久| 97se狠狠狠综合亚洲狠狠| 欧美一级生活片| 自拍偷拍亚洲欧美日韩| 视频在线观看91| 暴力调教一区二区三区| 欧美一区2区视频在线观看| 欧美国产激情二区三区| 日本欧美肥老太交大片| 北条麻妃一区二区三区| 日韩一二在线观看| 一区二区在线电影| 高清成人在线观看| 日韩一区二区免费在线电影| 亚洲欧美精品午睡沙发| 国产高清在线观看免费不卡| 在线观看91av| 亚洲国产精品久久久久秋霞影院| 国产98色在线|日韩| 精品国产一区久久| 青青草97国产精品免费观看无弹窗版| 91视视频在线观看入口直接观看www | 久久一留热品黄| 琪琪久久久久日韩精品| 在线观看不卡视频| 国产精品久久久久影视| 国产毛片精品国产一区二区三区| 欧美日韩一区二区三区不卡| 中文字幕在线观看不卡视频| 国产精品1区2区3区在线观看| 欧美日韩视频在线一区二区| 亚洲欧美激情插| fc2成人免费人成在线观看播放| 2023国产精品自拍| 久久精品国产免费| 日韩欧美的一区| 久草中文综合在线| 精品福利在线导航| 久久狠狠亚洲综合| 日韩限制级电影在线观看| 日韩精品一级二级 | 国产精品久久久久久久第一福利 | 天天综合网天天综合色| 91福利在线免费观看| 亚洲欧美色一区| 在线一区二区三区四区五区| 亚洲免费观看在线视频| 色综合久久久久综合体| 亚洲自拍另类综合| 欧美日韩成人在线| 日欧美一区二区| 精品久久久久久亚洲综合网| 国产伦精品一区二区三区视频青涩 | 久久精品噜噜噜成人av农村| 日韩一区二区在线看片| 欧美中文字幕一区二区三区亚洲| 国产高清久久久| 成人精品小蝌蚪| 成人激情综合网站| 不卡av在线网| www.日本不卡| 精品美女被调教视频大全网站| 五月激情综合网| 91一区在线观看| 亚洲男人天堂av| 欧美日韩国产美| 久久国产精品99精品国产| 精品成人私密视频| 成人高清在线视频| 亚洲一区二区欧美日韩| 日韩三级中文字幕| 国产乱码精品一区二区三区忘忧草| 日本一区二区三区久久久久久久久不| 成人激情免费视频| 天天av天天翘天天综合网| 日韩免费观看高清完整版| 成人激情午夜影院| 日本aⅴ亚洲精品中文乱码| 久久精品免视看| 91久久免费观看| 国产精品一色哟哟哟| 亚洲午夜激情网站| 久久精品亚洲麻豆av一区二区 | 亚洲视频一区二区免费在线观看| 在线国产亚洲欧美| 久久精品二区亚洲w码| 亚洲天堂av一区| 久久综合99re88久久爱| 99久久精品国产毛片| 久久se精品一区精品二区| 一区二区三区在线看| 久久久国产午夜精品| 在线不卡a资源高清| av在线播放成人| 国产一区二区剧情av在线| 天天色综合天天| 亚洲一区影音先锋| 国产精品久久免费看| 亚洲精品一区二区精华| 色网综合在线观看| 国产白丝精品91爽爽久久| 免费观看91视频大全| 亚洲国产精品久久久男人的天堂 | 精品国产一区二区国模嫣然| 欧美亚州韩日在线看免费版国语版| 国产一区二区伦理片| 久久精品72免费观看| 天天综合色天天综合| 肉肉av福利一精品导航| 亚洲愉拍自拍另类高清精品| 日韩理论片中文av| ...xxx性欧美|