亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
1、裂變紅包介紹
接口調(diào)用請(qǐng)求說明
2、裂變紅包的C#代碼封裝
首頁(yè) 微信小程序 微信開發(fā) C#開發(fā)微信門戶及應(yīng)用微信裂變紅包

C#開發(fā)微信門戶及應(yīng)用微信裂變紅包

Mar 07, 2017 am 09:48 AM

在上篇隨筆《C#開發(fā)微信門戶及應(yīng)用(33)--微信現(xiàn)金紅包的封裝及使用》介紹了普通現(xiàn)金紅包的封裝和使用,這種紅包只能單獨(dú)一次發(fā)給一個(gè)人,用戶獲取了紅包就完成了,如果我們讓用戶收到紅包后,可以繼續(xù)發(fā)送給多個(gè)用戶,讓他們獲得固定或者隨機(jī)金額的操作,這種稱之為裂變紅包。本篇隨筆繼續(xù)上面的主題,繼續(xù)介紹其中裂變紅包的C#代碼封裝和使用操作。

1、裂變紅包介紹

領(lǐng)到企業(yè)裂變紅包的用戶,可以繼續(xù)幫好友領(lǐng)紅包,將企業(yè)紅包以裂變形式散播給更多好友,賦予營(yíng)銷更多的趣味和愉悅!裂變紅包不斷強(qiáng)化企業(yè)品牌效應(yīng)并形成裂變性傳播,是品牌宣傳的營(yíng)銷利器。企業(yè)只需要指定一組紅包的個(gè)數(shù)和總金額,由微信支付計(jì)算出各紅包金額,簡(jiǎn)單方便。

微信支付裂變紅包向微信支付商戶開發(fā),具體能力如下:?

1、商戶調(diào)用接口時(shí),通過指定發(fā)送金額以及指定一位發(fā)送對(duì)象的方式發(fā)放一組裂變紅包

2、指定發(fā)送對(duì)象領(lǐng)取到紅包后,資金直接進(jìn)入微信零錢,帶給用戶微信支付原生的流暢體驗(yàn)

3、指定發(fā)送對(duì)象能夠?qū)⒔M合中的剩余紅包分享給好友,好友可繼續(xù)領(lǐng)取,形成傳播效應(yīng),放大企業(yè)品牌價(jià)值

裂變紅包的總體處理過程及接口和普通的現(xiàn)金紅包差別不太大,理解了現(xiàn)金紅包,對(duì)裂變紅包的封裝和使用過程應(yīng)該是很容易的事情。

?

裂變紅包接口,用于企業(yè)向微信用戶個(gè)人發(fā)裂變紅包

目前支持向指定微信用戶的openid發(fā)放指定金額裂變紅包。(獲取openid參見微信公眾平臺(tái)開發(fā)者文檔:?網(wǎng)頁(yè)授權(quán)獲取用戶基本信息)

接口參數(shù)與用戶領(lǐng)用實(shí)際效果對(duì)應(yīng)關(guān)系如下:

C#開發(fā)微信門戶及應(yīng)用微信裂變紅包


接口調(diào)用請(qǐng)求說明

請(qǐng)求Url https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack
是否需要證書 是(證書及使用說明詳見商戶證書)
請(qǐng)求方式 POST


和前面介紹的現(xiàn)金紅包一樣,我們也可以把裂變紅包的參數(shù)分為兩個(gè)部分,一個(gè)是常規(guī)參數(shù),一個(gè)是業(yè)務(wù)參數(shù),如下所示。

C#開發(fā)微信門戶及應(yīng)用微信裂變紅包

2、裂變紅包的C#代碼封裝

從上面的傳遞參數(shù)我們可以把它分兩部分,當(dāng)我們傳入下面的參數(shù)后

<xml> 
   <sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>
   <mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>
   <mch_id><![CDATA[1000888888]]></mch_id>
   <wxappid><![CDATA[wxcbda96de0b165486]]></wxappid> 
   <send_name><![CDATA[send_name]]></send_name> 
   <re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid> 
   <total_amount><![CDATA[600]]></total_amount> 
   <amt_type><![CDATA[ALL_RAND]]></amt_type> 
   <total_num><![CDATA[3]]></total_num> 
   <wishing><![CDATA[恭喜發(fā)財(cái)]]></wishing>
   <act_name><![CDATA[新年紅包]]></act_name> 
   <remark><![CDATA[新年紅包]]></remark> 
   <nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str> 
</xml>

上面的傳入?yún)?shù)提交給地址:https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack后,成功后會(huì)返回下面的XML。

<xml> 
   <return_code><![CDATA[SUCCESS]]></return_code> 
   <return_msg><![CDATA[發(fā)放成功.]]></return_msg> 
   <result_code><![CDATA[SUCCESS]]></result_code> 
   <err_code><![CDATA[0]]></err_code> 
   <err_code_des><![CDATA[發(fā)放成功.]]></err_code_des> 
   <mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno> 
   <mch_id>10010404</mch_id> 
   <wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid> 
   <re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid> 
   <total_amount>3</total_amount> 
   <send_time><![CDATA[20150227091010]]></send_time>
   <send_listid><![CDATA[1000000000201502270093647546]]></send_listid>
</xml>

如果失敗的時(shí)候,那么返回的XML就少了很多信息,如下所示。

<xml>
   <return_code><![CDATA[FAIL]]></return_code>
   <return_msg><![CDATA[系統(tǒng)繁忙,請(qǐng)稍后再試.]]></return_msg>
   <result_code><![CDATA[FAIL]]></result_code>
   <err_code><![CDATA[268458547]]></err_code>
   <err_code_des><![CDATA[系統(tǒng)繁忙,請(qǐng)稍后再試.]]></err_code_des>
   <mch_billno><![CDATA[0010010404201411170000046542]]></mch_billno>
   <mch_id>10010404</mch_id>
   <wxappid><![CDATA[wx6fa7e3bab7e15415]]></wxappid>
   <re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>
   <total_amount>3</total_amount>
</xml>


根據(jù)這些規(guī)則,我們對(duì)裂變紅包的接口和實(shí)現(xiàn)代碼進(jìn)行了封裝,以便更好的使用。

例如我們根據(jù)普通現(xiàn)金紅包和裂變紅包的實(shí)體類相似的特點(diǎn),我們?cè)O(shè)計(jì)了幾個(gè)類來存儲(chǔ)信息,傳入?yún)?shù)的對(duì)象關(guān)系如下圖所示。

C#開發(fā)微信門戶及應(yīng)用微信裂變紅包

同樣,對(duì)于返回的發(fā)送紅包結(jié)果,由于需要考慮在錯(cuò)誤的時(shí)候的信息返回和成功的信息返回,我們?cè)O(shè)計(jì)了返回結(jié)果類的關(guān)系如下所示。

C#開發(fā)微信門戶及應(yīng)用微信裂變紅包

根據(jù)上面的設(shè)計(jì)思路,我們?cè)O(shè)計(jì)的類代碼如下所示。

/// <summary>
    /// 發(fā)送裂變紅包的數(shù)據(jù)信息
    /// </summary>
    public class SendGroupRedPackJson : BaseRedPackJson
    {     
        /// <summary>
        /// 紅包金額設(shè)置方式
        /// ALL_RAND—全部隨機(jī),商戶指定總金額和紅包發(fā)放總?cè)藬?shù),由微信支付隨機(jī)計(jì)算出各紅包金額
        /// </summary>
        public string amt_type { get; set; }

        public SendGroupRedPackJson()
        {
            this.amt_type = "ALL_RAND";
        }
    }

結(jié)果對(duì)象類的代碼如下所示。

/// <summary>
    /// 發(fā)送紅包的返回結(jié)果
    /// </summary>
    public class SendRedPackResult : PayResult
    {
        /// <summary>
        /// 商戶訂單號(hào)
        /// </summary>
        public string mch_billno { get; set; }

        /// <summary>
        /// 商戶appid,接口傳入的所有appid應(yīng)該為公眾號(hào)的appid(在mp.weixin.qq.com申請(qǐng)的),不能為APP的appid(在open.weixin.qq.com申請(qǐng)的)。
        /// </summary>
        public string wxappid { get; set; }
        /// <summary>
        /// 接受收紅包的用戶 
        /// 用戶在wxappid下的openid
        /// </summary>
        public string re_openid { get; set; }
        /// <summary>
        /// 付款金額,單位分
        /// </summary>
        public int total_amount { get; set; }
        /// <summary>
        /// 紅包發(fā)送時(shí)間
        /// </summary>
        public string send_time { get; set; }
        /// <summary>
        /// 紅包訂單的微信單號(hào)
        /// </summary>
        public string send_listid { get; set; }
    }


這樣,有了這些對(duì)象的代碼,我們根據(jù)接口的說明,依舊遵循上篇隨筆介紹的接口設(shè)計(jì)方式,實(shí)現(xiàn)裂變紅包的代碼處理。

C#開發(fā)微信門戶及應(yīng)用微信裂變紅包

/// <summary>
    /// 微信紅包、搖一搖紅包的操作API接口
    /// </summary>
    public interface ILotteryApi
    {              
        /// <summary>
        /// 用于企業(yè)向微信用戶個(gè)人發(fā)現(xiàn)金紅包。需要商戶證書
        /// 目前支持向指定微信用戶的openid發(fā)放指定金額紅包。
        /// </summary>
        /// <returns></returns>
        SendRedPackResult SendRedPack(SendRedPackJson json);

        /// <summary>
        /// 用于企業(yè)向微信用戶個(gè)人發(fā)裂變紅包。需要商戶證書
        /// 目前支持向指定微信用戶的openid發(fā)放指定金額裂變紅包。
        /// </summary>
        /// <returns></returns>
        SendRedPackResult SendGroupRedPack(SendGroupRedPackJson json);

        .............

然后實(shí)現(xiàn)它們的接口代碼如下所示。

/// <summary>
    /// 微信紅包管理類
    /// </summary>
    public class LotteryApi : ILotteryApi
    {
        #region 裂變紅包說明
        //微信支付裂變紅包向微信支付商戶開發(fā),具體能力如下: 
        //1、商戶調(diào)用接口時(shí),通過指定發(fā)送金額以及指定一位發(fā)送對(duì)象的方式發(fā)放一組裂變紅包
        //2、指定發(fā)送對(duì)象領(lǐng)取到紅包后,資金直接進(jìn)入微信零錢,帶給用戶微信支付原生的流暢體驗(yàn)
        //3、指定發(fā)送對(duì)象能夠?qū)⒔M合中的剩余紅包分享給好友,好友可繼續(xù)領(lǐng)取,形成傳播效應(yīng),放大企業(yè)品牌價(jià)值
        #endregion

        /// <summary>
        /// 用于企業(yè)向微信用戶個(gè)人發(fā)裂變紅包。需要商戶證書
        /// 目前支持向指定微信用戶的openid發(fā)放指定金額裂變紅包。
        /// </summary>
        /// <returns></returns>
        public SendRedPackResult SendGroupRedPack(SendGroupRedPackJson json)
        {
            CheckAccount();//檢查AccountInfo的對(duì)象屬性值

            WxPayData data = new WxPayData();
            data.SetValue("wxappid", AccountInfo.UniteAppId);//公眾賬號(hào)appid
            data.SetValue("mch_id", AccountInfo.MchID);//商戶號(hào)
            data.SetValue("nonce_str", data.GenerateNonceStr());//隨機(jī)字符串
            data.SetValue("send_name", AccountInfo.Name);//    紅包發(fā)送者名稱
            
            //商戶訂單號(hào)(每個(gè)訂單號(hào)必須唯一) 組成:mch_id+yyyymmdd+10位一天內(nèi)不能重復(fù)的數(shù)字。
            //接口根據(jù)商戶訂單號(hào)支持重入,如出現(xiàn)超時(shí)可再調(diào)用。
            data.SetValue("mch_billno", data.GenerateOutTradeNo(AccountInfo.MchID));

            data.SetValue("re_openid", json.re_openid);//接收紅包的種子用戶(首個(gè)用戶)
            data.SetValue("total_amount", json.total_amount);//紅包發(fā)放總金額,即一組紅包金額總和,包括分享者的紅包和裂變的紅包,單位分
            data.SetValue("total_num", json.total_num);//紅包發(fā)放總?cè)藬?shù),即總共有多少人可以領(lǐng)到該組紅包(包括分享者)
            data.SetValue("wishing", json.wishing);//紅包祝福語(yǔ)
            data.SetValue("act_name", json.act_name);
            data.SetValue("remark", json.remark);
            data.SetValue("amt_type", json.amt_type);

            data.SetValue("sign", data.MakeSign(AccountInfo.PayAPIKey));//最后生成簽名

            var url = "https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack";
            return Helper.GetPayResultWithCert<SendRedPackResult>(data, url, AccountInfo.CertPath, AccountInfo.CertPassword);
        }

        ...............

3、裂變紅包接口的調(diào)用及效果展示

上面我們對(duì)裂變紅包進(jìn)行了接口的封裝,如果我們需要發(fā)送裂變紅包的時(shí)候,直接調(diào)用上面的接口即可實(shí)現(xiàn)紅包發(fā)送的操作了。

例如調(diào)用接口的代碼如下所示。

//裂變紅包
                SendGroupRedPackJson groupJson = new SendGroupRedPackJson()
                {  
                    act_name = "恭喜發(fā)財(cái)",
                    remark = "企業(yè)紅包",
                    wishing = "企業(yè)紅包",
                    total_amount = 600,
                    total_num = 4,
                    re_openid = tosendOpenId, //發(fā)送給用戶的OpenID
                };

                var groupResult = hbApi.SendGroupRedPack(groupJson);
                message = string.Format("企業(yè)發(fā)送裂變紅包:{0} {1}", groupResult.Success ? "成功" : "失敗", groupResult.Message);
                Console.WriteLine(message);
                Console.WriteLine(groupResult.ToJson());


其中hbApi的對(duì)象初始化代碼如下所示

ILotteryApi hbApi = new LotteryApi(accountInfo);

最后我們可以在微信上看到發(fā)過來的裂變紅包。

C#開發(fā)微信門戶及應(yīng)用微信裂變紅包? ?C#開發(fā)微信門戶及應(yīng)用微信裂變紅包??C#開發(fā)微信門戶及應(yīng)用微信裂變紅包? ?

由于發(fā)送紅包的金額都需要大于1塊,那么如果我們發(fā)送的金額大一些,那么每個(gè)人拆到的紅包金額是不等的,如下圖所示。

C#開發(fā)微信門戶及應(yīng)用微信裂變紅包

以上就是關(guān)于現(xiàn)金紅包和裂變紅包的接口封裝和使用過程,希望對(duì)你使用微信開發(fā)有所幫助,感謝支持。

?更多C#開發(fā)微信門戶及應(yīng)用微信裂變紅包相關(guān)文章請(qǐng)關(guān)注PHP中文網(wǎng)!

本站聲明
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72