Heim > WeChat-Applet > WeChat-Entwicklung > C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an

C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an

高洛峰
Freigeben: 2017-03-07 09:48:30
Original
1967 Leute haben es durchsucht

Im vorherigen Aufsatz „C#-Entwicklung des WeChat-Portals und der WeChat-Anwendung (33) – Kapselung und Verwendung von roten WeChat-Bargeldumschlägen“ haben wir die Kapselung und Verwendung gewöhnlicher roter Bargeldumschläge vorgestellt Nachdem wir den roten Umschlag erhalten haben, sind wir fertig. Wenn wir Benutzern erlauben, den roten Umschlag zu erhalten, können wir ihn weiterhin an mehrere Benutzer senden, sodass sie einen festen oder zufälligen Betrag erhalten können . Dies wird als spaltende rote Hülle bezeichnet. Dieser Aufsatz setzt das obige Thema fort und stellt weiterhin die C#-Codekapselung und die Verwendung der Fission Red Envelope vor.

1. Einführung in Fission Red-Umschläge

Benutzer, die Corporate Fission Red-Umschläge erhalten haben, können ihren Freunden weiterhin helfen, rote Umschläge zu erhalten und Corporate Red-Umschläge in Form von Fission an weitere Freunde zu verteilen. So macht Marketing mehr Spaß und Freude! Fission Red-Umschläge verstärken kontinuierlich die Wirkung der Unternehmensmarke und bilden die Fission-Kommunikation, die ein Marketinginstrument zur Markenförderung ist. Unternehmen müssen lediglich die Anzahl und den Gesamtbetrag einer Gruppe roter Umschläge angeben, und WeChat Pay berechnet den Betrag jedes roten Umschlags, was einfach und bequem ist.

WeChat Pay Fission Red-Umschläge werden für WeChat Pay-Händler entwickelt. Die spezifischen Funktionen sind wie folgt:

1 Wenn der Händler die Schnittstelle aufruft, gibt er einen Satz Fission Red-Umschläge aus den Sendebetrag und die Angabe eines Absenders

2. Nachdem der angegebene Absender den roten Umschlag erhalten hat, wird das Geld direkt an WeChat überwiesen, sodass Benutzer problemlos über WeChat bezahlen können

3. Der angegebene Absender kann die verbleibenden roten Umschläge in der Kombination an Freunde weitergeben, die ihn weiterhin erhalten können, wodurch ein Kommunikationseffekt entsteht und der Markenwert des Unternehmens verstärkt wird.

Der gesamte Verarbeitungsprozess und die Schnittstelle von Fission Red-Umschläge unterscheiden sich nicht wesentlich von gewöhnlichen Cash Red-Umschlägen. Nachdem Sie die Cash Red-Umschläge verstanden haben, sollte die Einkapselung von Fission Red-Umschlägen und der Prozess ihrer Verwendung ein Kinderspiel sein.

Die Fission-Red-Umschläge-Schnittstelle wird von Unternehmen verwendet, um Fission-Red-Umschläge an einzelne WeChat-Benutzer zu senden.

Derzeit unterstützt es die Ausgabe von Fission-Red-Umschlägen mit bestimmten Beträgen an die OpenID der ausgewiesenen WeChat-Benutzer. (Um die OpenID zu erhalten, lesen Sie bitte die Entwicklerdokumentation für die öffentliche WeChat-Plattform: Webseitenautorisierung, um grundlegende Benutzerinformationen zu erhalten.)

Die entsprechende Beziehung zwischen den Schnittstellenparametern und der tatsächlichen Auswirkung der Benutzeranwendung ist wie folgt:

C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an


Beschreibung der Schnittstellenaufrufanforderung

请求Url https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack
是否需要证书 是(证书及使用说明详见商户证书)
请求方式 POST


Ähnlich wie der zuvor eingeführte Cash-Red-Umschlag können wir auch die Parameter des Fission-Red-Umschlags in zwei Teile unterteilen, einer ist der reguläre Parameter und der andere ist der Geschäftsparameter, as unten dargestellt.

C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an

2. C#-Code-Kapselung der Spaltungsrothülle

Aus den oben übergebenen Parametern können wir sie in zwei Teile aufteilen Parameter

<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[恭喜发财]]></wishing>
   <act_name><![CDATA[新年红包]]></act_name> 
   <remark><![CDATA[新年红包]]></remark> 
   <nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str> 
</xml>
Nach dem Login kopieren

Nachdem die oben genannten eingehenden Parameter an die Adresse gesendet wurden: https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack, wird nach Erfolg das folgende XML zurückgegeben.

<xml> 
   <return_code><![CDATA[SUCCESS]]></return_code> 
   <return_msg><![CDATA[发放成功.]]></return_msg> 
   <result_code><![CDATA[SUCCESS]]></result_code> 
   <err_code><![CDATA[0]]></err_code> 
   <err_code_des><![CDATA[发放成功.]]></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>
Nach dem Login kopieren

Wenn dies fehlschlägt, fehlen dem zurückgegebenen XML viele Informationen, wie unten gezeigt.

<xml>
   <return_code><![CDATA[FAIL]]></return_code>
   <return_msg><![CDATA[系统繁忙,请稍后再试.]]></return_msg>
   <result_code><![CDATA[FAIL]]></result_code>
   <err_code><![CDATA[268458547]]></err_code>
   <err_code_des><![CDATA[系统繁忙,请稍后再试.]]></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>
Nach dem Login kopieren


Gemäß diesen Regeln haben wir die Schnittstelle und den Implementierungscode des Fission Red Envelope zur besseren Verwendung gekapselt.

Auf der Grundlage der ähnlichen Eigenschaften der Entitätsklassen gewöhnlicher Cash-Red-Umschläge und Fission-Red-Umschläge haben wir beispielsweise mehrere Klassen zum Speichern von Informationen entworfen. Die Objektbeziehung der eingehenden Parameter ist in dargestellt Abbildung unten.

C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an

In ähnlicher Weise haben wir für die Sendeergebnisse des zurückgegebenen roten Umschlags die Beziehung zwischen den Rückgabeergebnisklassen entworfen, da wir die fehlerhafte Informationsrückgabe und die erfolgreiche Informationsrückgabe berücksichtigen müssen wie folgt zeigen.

C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an

Basierend auf den oben genannten Designideen lautet der von uns entworfene Klassencode wie folgt.

/// <summary>
    /// 发送裂变红包的数据信息
    /// </summary>
    public class SendGroupRedPackJson : BaseRedPackJson
    {     
        /// <summary>
        /// 红包金额设置方式
        /// ALL_RAND—全部随机,商户指定总金额和红包发放总人数,由微信支付随机计算出各红包金额
        /// </summary>
        public string amt_type { get; set; }

        public SendGroupRedPackJson()
        {
            this.amt_type = "ALL_RAND";
        }
    }
Nach dem Login kopieren

Der Code der Ergebnisobjektklasse lautet wie folgt.

/// <summary>
    /// 发送红包的返回结果
    /// </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>
        /// 红包发送时间
        /// </summary>
        public string send_time { get; set; }
        /// <summary>
        /// 红包订单的微信单号
        /// </summary>
        public string send_listid { get; set; }
    }
Nach dem Login kopieren


Auf diese Weise folgen wir mit den Codes dieser Objekte immer noch der im vorherigen Aufsatz eingeführten Schnittstellendesignmethode gemäß der Schnittstellenbeschreibung, um den Code zu implementieren Verarbeitung von spaltungsroten Umschlägen.

C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an

/// <summary>
    /// 微信红包、摇一摇红包的操作API接口
    /// </summary>
    public interface ILotteryApi
    {              
        /// <summary>
        /// 用于企业向微信用户个人发现金红包。需要商户证书
        /// 目前支持向指定微信用户的openid发放指定金额红包。
        /// </summary>
        /// <returns></returns>
        SendRedPackResult SendRedPack(SendRedPackJson json);

        /// <summary>
        /// 用于企业向微信用户个人发裂变红包。需要商户证书
        /// 目前支持向指定微信用户的openid发放指定金额裂变红包。
        /// </summary>
        /// <returns></returns>
        SendRedPackResult SendGroupRedPack(SendGroupRedPackJson json);

        .............
Nach dem Login kopieren

Dann lautet der Schnittstellencode zur Implementierung wie folgt.

/// <summary>
    /// 微信红包管理类
    /// </summary>
    public class LotteryApi : ILotteryApi
    {
        #region 裂变红包说明
        //微信支付裂变红包向微信支付商户开发,具体能力如下: 
        //1、商户调用接口时,通过指定发送金额以及指定一位发送对象的方式发放一组裂变红包
        //2、指定发送对象领取到红包后,资金直接进入微信零钱,带给用户微信支付原生的流畅体验
        //3、指定发送对象能够将组合中的剩余红包分享给好友,好友可继续领取,形成传播效应,放大企业品牌价值
        #endregion

        /// <summary>
        /// 用于企业向微信用户个人发裂变红包。需要商户证书
        /// 目前支持向指定微信用户的openid发放指定金额裂变红包。
        /// </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);//    红包发送者名称
            
            //商户订单号(每个订单号必须唯一) 组成:mch_id+yyyymmdd+10位一天内不能重复的数字。
            //接口根据商户订单号支持重入,如出现超时可再调用。
            data.SetValue("mch_billno", data.GenerateOutTradeNo(AccountInfo.MchID));

            data.SetValue("re_openid", json.re_openid);//接收红包的种子用户(首个用户)
            data.SetValue("total_amount", json.total_amount);//红包发放总金额,即一组红包金额总和,包括分享者的红包和裂变的红包,单位分
            data.SetValue("total_num", json.total_num);//红包发放总人数,即总共有多少人可以领到该组红包(包括分享者)
            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);
        }

        ...............
Nach dem Login kopieren

3. Aufruf und Anzeige der Fission-Red-Envelope-Schnittstelle

Oben haben wir die Schnittstelle der Fission-Red-Envelope gekapselt, falls erforderlich Senden Sie einen roten Spaltungsumschlag. Wenn Sie rote Umschläge senden, können Sie die obige Schnittstelle direkt aufrufen, um den Vorgang des Sendens roter Umschläge zu realisieren.

Der Code zum Aufrufen der Schnittstelle lautet beispielsweise wie folgt.

//裂变红包
                SendGroupRedPackJson groupJson = new SendGroupRedPackJson()
                {  
                    act_name = "恭喜发财",
                    remark = "企业红包",
                    wishing = "企业红包",
                    total_amount = 600,
                    total_num = 4,
                    re_openid = tosendOpenId, //发送给用户的OpenID
                };

                var groupResult = hbApi.SendGroupRedPack(groupJson);
                message = string.Format("企业发送裂变红包:{0} {1}", groupResult.Success ? "成功" : "失败", groupResult.Message);
                Console.WriteLine(message);
                Console.WriteLine(groupResult.ToJson());
Nach dem Login kopieren


Der Objektinitialisierungscode von hbApi lautet wie folgt

ILotteryApi hbApi = new LotteryApi(accountInfo);
Nach dem Login kopieren

Endlich können wir den auf WeChat gesendeten spaltungsroten Umschlag sehen.

C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an

Da die Menge der versendeten roten Umschläge mehr als 1 Yuan betragen muss, gilt: Wenn die Menge, die wir versenden, größer ist, dann an alle wird es aufteilen. Die Anzahl der roten Umschläge variiert, wie im Bild unten gezeigt.

C# entwickelt das WeChat-Portal und wendet den WeChat Fission Red Envelope an

Das Obige befasst sich mit der Schnittstellenkapselung und dem Verwendungsprozess von Cash Red Envelopes und Fission Red Envelopes. Vielen Dank Eure Unterstützung.

Weitere Artikel zur C#-Entwicklung des WeChat-Portals und zur Anwendung von WeChat Fission Red Envelopes finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage