>  기사  >  위챗 애플릿  >  C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.

C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.

高洛峰
高洛峰원래의
2017-03-07 09:48:301854검색

이전 에세이 "C# WeChat 포털 및 애플리케이션 개발(33) - WeChat 현금 빨간 봉투의 캡슐화 및 사용"에서 일반 현금 빨간 봉투의 캡슐화 및 사용에 대해 소개했습니다. 빨간 봉투를 받은 후에는 사용자가 빨간 봉투를 받도록 허용하면 계속해서 여러 사용자에게 보내서 고정 금액 또는 무작위 금액을 받을 수 있습니다. 이것을 핵분열 빨간 봉투라고 합니다. 이 에세이는 위의 주제를 이어가며 C# 코드 캡슐화 및 핵분열 빨간색 봉투의 사용법을 계속해서 소개합니다.

1. 핵분열 빨간 봉투 소개

기업 핵분열 빨간 봉투를 받은 사용자는 계속해서 친구가 빨간 봉투를 받을 수 있도록 도와주고, 기업 빨간 봉투를 핵분열의 형태로 더 많은 친구들에게 전파할 수 있으며, 마케팅에 더욱 재미와 즐거움을 선사합니다! 핵분열 빨간 봉투는 기업 브랜드 효과를 지속적으로 강화하고 브랜드 홍보를 위한 마케팅 도구인 핵분열 커뮤니케이션을 형성합니다. 기업은 빨간 봉투 그룹의 수와 총액만 지정하면 WeChat Pay가 각 빨간 봉투의 금액을 계산하므로 간단하고 편리합니다.

WeChat Pay 가맹점을 위해 개발된 구체적인 기능은 다음과 같습니다.

1. 판매자가 인터페이스를 호출하면 다음을 지정하여 핵분열 빨간색 봉투 세트를 발행합니다.

2. 지정된 송금인이 빨간 봉투를 받은 후 자금이 WeChat 거스름돈으로 직접 이체되어 사용자에게 원활한 WeChat 결제 경험을 제공합니다. 3. 지정된 발신인은 조합에 남은 빨간 봉투를 공유하여 계속 받을 수 있는 친구에게 전달하여 커뮤니케이션 효과를 형성하고 기업 브랜드 가치를 증폭시킵니다.

전체적인 처리 프로세스 및 인터페이스 핵분열 빨간 봉투는 일반 현금 빨간 봉투와 크게 다르지 않습니다. 현금 빨간 봉투를 이해하고 나면 핵분열 빨간 봉투의 캡슐화와 그것을 사용하는 과정은 매우 쉽습니다.

핵분열 빨간색 봉투 인터페이스는 기업에서 개별 WeChat 사용자에게 핵분열 빨간색 봉투를 보내는 데 사용됩니다.

현재 특정 금액의 핵분열 빨간색 봉투를 openid에 발행하는 것을 지원합니다. 지정된 WeChat 사용자 수. (openid를 얻으려면 WeChat 공개 플랫폼 개발자 문서: 기본 사용자 정보를 얻기 위한 웹 페이지 인증을 참조하십시오.)

인터페이스 매개변수와 사용자 애플리케이션의 실제 효과 간의 대응 관계는 다음과 같습니다.

C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.


인터페이스 호출 요청 설명


앞서 소개한 현금 빨간 봉투와 유사하게 핵분열 빨간 봉투의 매개 변수를 두 부분으로 나눌 수 있습니다. 하나는 기존 매개 변수이고 다른 하나는 비즈니스 매개 변수입니다. 아래에 표시됩니다.

C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.

2. 핵분열 빨간색 봉투의 C# 코드 캡슐화

위의 전달된 매개변수에서 다음을 전달하면 두 부분으로 나눌 수 있습니다. 매개변수

<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>

위의 수신 매개변수가 https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack 주소로 제출되면 성공 후 다음 XML이 반환됩니다.

<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>

실패할 경우 반환된 XML에는 아래와 같이 많은 정보가 부족하게 됩니다.

<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>


이러한 규칙에 따라 더 나은 사용을 위해 핵분열 빨간 봉투의 인터페이스와 구현 코드를 캡슐화했습니다.

예를 들어 일반 현금 빨간 봉투와 핵분열 빨간 봉투의 엔터티 클래스의 유사한 특성을 기반으로 정보를 저장하는 여러 클래스를 설계했습니다. 아래 그림.

C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.

마찬가지로, 반송된 빨간 봉투 발송 결과에 대해서도 오류 정보 반송과 성공적인 정보 반송을 고려해야 하므로 반송 결과 클래스 간의 관계를 설계했습니다. 다음과 같이 표시됩니다.

C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.

위의 디자인 아이디어를 바탕으로 우리가 디자인한 클래스 코드는 다음과 같습니다.

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

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

결과 객체 클래스의 코드는 다음과 같습니다.

/// <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; }
    }


이런 식으로 이러한 객체의 코드를 사용하여 우리는 인터페이스 설명에 따라 이전 에세이에서 소개한 인터페이스 디자인 방법을 계속 따라 코드 처리를 구현합니다. 핵분열 빨간 봉투.

C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.

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

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

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

그러면 이를 구현하기 위한 인터페이스 코드는 다음과 같습니다.

/// <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);
        }

        ...............</sendredpackresult>

3. 핵분열 빨간 봉투 인터페이스의 호출 및 효과 표시

위에서 핵분열 빨간 봉투의 인터페이스를 캡슐화했습니다. 빨간 봉투 이때 위의 인터페이스를 직접 호출하여 빨간 봉투를 보내는 작업을 실현할 수 있습니다.

예를 들어 인터페이스를 호출하는 코드는 다음과 같습니다.

//裂变红包
                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());


hbApi의 객체 초기화 코드는 다음과 같습니다.

ILotteryApi hbApi = new LotteryApi(accountInfo);

마지막으로 위챗으로 전송된 핵분열 빨간 봉투를 볼 수 있습니다.

C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다. C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다. C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.

보내는 빨간 봉투의 양이 1위안 이상이어야 하므로, 보내는 양이 더 많으면 모두가 분할합니다. 아래 그림과 같이 빨간 봉투의 양이 다양합니다.

C#은 WeChat 포털을 개발하고 WeChat 핵분열 빨간 봉투를 적용합니다.

위는 현금빨간봉투와 핵분열빨간봉투의 인터페이스 캡슐화 및 사용과정에 대한 내용이오니, 위챗 개발에 도움이 되셨으면 좋겠습니다. 당신의 지원.

WeChat 포털 C# 개발 및 WeChat 핵분열 빨간 봉투 적용에 관한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.