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

目錄
1、裂變紅包介紹
介面呼叫請求說明
2、裂變紅包的C#程式碼封裝
首頁 微信小程式 微信開發(fā) C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包

C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包

Mar 07, 2017 am 09:48 AM

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

1、裂變紅包介紹

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

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

1、商家呼叫介面時,透過指定發(fā)送金額以及指定一位發(fā)送物件的方式發(fā)放一組裂變紅包

2、指定發(fā)送對象領取到紅包後,資金直接進入微信零錢,帶給用戶微信支付原生的流暢體驗

3、指定發(fā)送對象能夠將組合中的剩餘紅包分享給好友,好友可繼續(xù)領取,形成傳播效應,放大企業(yè)品牌價值

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

?

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

目前支援向指定微信用戶的openid發(fā)放指定金額裂變紅包。 (取得openid請參考微信公眾平臺開發(fā)者文件:?網(wǎng)頁授權取得使用者基本資訊)

介面參數(shù)與使用者運用實際效果對應關係如下:

C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包


介面呼叫請求說明

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


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

C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包

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

#從上面的傳遞參數(shù)我們可以把它分成兩部分,當我們傳入下面的參數(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ā)財]]></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後,成功後會回到下面的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>

如果失敗的時候,那麼傳回的XML就少了很多訊息,如下所示。

<xml>
   <return_code><![CDATA[FAIL]]></return_code>
   <return_msg><![CDATA[系統(tǒng)繁忙,請稍后再試.]]></return_msg>
   <result_code><![CDATA[FAIL]]></result_code>
   <err_code><![CDATA[268458547]]></err_code>
   <err_code_des><![CDATA[系統(tǒ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ī)則,我們對裂變紅包的介面和實作程式碼進行了封裝,以便更好的使用。

例如我們根據(jù)普通現(xiàn)金紅包和裂變紅包的實體類別相似的特點,我們設計了幾個類別來儲存訊息,傳入?yún)?shù)的物件關係如下圖所示。

C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包

同樣,對於返回的發(fā)送紅包結果,由於需要考慮在錯誤的時候的信息返回和成功的信息返回,我們設計了返回結果類的關係如下所示。

C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包

根據(jù)上面的設計思路,??我們設計的類別程式碼如下所示。

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

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

結果物件類別的程式碼如下所示。

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

        /// <summary>
        /// 商戶appid,接口傳入的所有appid應該為公眾號的appid(在mp.weixin.qq.com申請的),不能為APP的appid(在open.weixin.qq.com申請的)。
        /// </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ā)送時間
        /// </summary>
        public string send_time { get; set; }
        /// <summary>
        /// 紅包訂單的微信單號
        /// </summary>
        public string send_listid { get; set; }
    }


這樣,有了這些物件的程式碼,我們根據(jù)介面的說明,依舊遵循上篇隨筆介紹的介面設計方式,實現(xiàn)裂變紅包的程式碼處理。

C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包

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

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

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

然後實作它們的介面程式碼如下所示。

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

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

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

            data.SetValue("re_openid", json.re_openid);//接收紅包的種子用戶(首個用戶)
            data.SetValue("total_amount", json.total_amount);//紅包發(fā)放總金額,即一組紅包金額總和,包括分享者的紅包和裂變的紅包,單位分
            data.SetValue("total_num", json.total_num);//紅包發(fā)放總人數(shù),即總共有多少人可以領到該組紅包(包括分享者)
            data.SetValue("wishing", json.wishing);//紅包祝福語
            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、裂變紅包介面的呼叫及效果展示

上面我們對裂變紅包進行了介面的封裝,如果我們需要發(fā)送裂變紅包的時候,直接呼叫上面的介面即可實現(xiàn)紅包發(fā)送的操作了。

例如呼叫介面的程式碼如下所示。

//裂變紅包
                SendGroupRedPackJson groupJson = new SendGroupRedPackJson()
                {  
                    act_name = "恭喜發(fā)財",
                    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的物件初始化程式碼如下所示

ILotteryApi hbApi = new LotteryApi(accountInfo);

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

C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包? ?C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包??C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包? ?

由於送紅包的金額都需要大於1塊,那麼如果我們寄出的金額大一些,那麼每個人拆到的紅包金額是不等的,如下圖所示。

C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包

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

?更多C#開發(fā)微信入口網(wǎng)站及應用微信裂變紅包相關文章請關注PHP中文網(wǎng)!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72