這篇文章主要介紹C#如何實現(xiàn)微信裂變紅包,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
目前創(chuàng)新互聯(lián)建站已為上1000家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、漢臺網(wǎng)站維護等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。領(lǐng)到企業(yè)裂變紅包的用戶,可以繼續(xù)幫好友領(lǐng)紅包,將企業(yè)紅包以裂變形式散播給更多好友,賦予營銷更多的趣味和愉悅!裂變紅包不斷強化企業(yè)品牌效應(yīng)并形成裂變性傳播,是品牌宣傳的營銷利器。企業(yè)只需要指定一組紅包的個數(shù)和總金額,由微信支付計算出各紅包金額,簡單方便。
微信支付裂變紅包向微信支付商戶開發(fā),具體能力如下:
1、商戶調(diào)用接口時,通過指定發(fā)送金額以及指定一位發(fā)送對象的方式發(fā)放一組裂變紅包
2、指定發(fā)送對象領(lǐng)取到紅包后,資金直接進入微信零錢,帶給用戶微信支付原生的流暢體驗
3、指定發(fā)送對象能夠?qū)⒔M合中的剩余紅包分享給好友,好友可繼續(xù)領(lǐng)取,形成傳播效應(yīng),放大企業(yè)品牌價值
裂變紅包的總體處理過程及接口和普通的現(xiàn)金紅包差別不太大,理解了現(xiàn)金紅包,對裂變紅包的封裝和使用過程應(yīng)該是很容易的事情。
裂變紅包接口,用于企業(yè)向微信用戶個人發(fā)裂變紅包
目前支持向指定微信用戶的openid發(fā)放指定金額裂變紅包。(獲取openid參見微信公眾平臺開發(fā)者文檔: 網(wǎng)頁授權(quán)獲取用戶基本信息)
接口參數(shù)與用戶領(lǐng)用實際效果對應(yīng)關(guān)系如下:
請求Url | https://api.mch.weixin.qq.com/mmpaymkttransfers/sendgroupredpack |
---|---|
是否需要證書 | 是(證書及使用說明詳見商戶證書) |
請求方式 | POST |
和前面介紹的現(xiàn)金紅包一樣,我們也可以把裂變紅包的參數(shù)分為兩個部分,一個是常規(guī)參數(shù),一個是業(yè)務(wù)參數(shù),如下所示。
從上面的傳遞參數(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ī)則,我們對裂變紅包的接口和實現(xiàn)代碼進行了封裝,以便更好的使用。
例如我們根據(jù)普通現(xiàn)金紅包和裂變紅包的實體類相似的特點,我們設(shè)計了幾個類來存儲信息,傳入?yún)?shù)的對象關(guān)系如下圖所示。
同樣,對于返回的發(fā)送紅包結(jié)果,由于需要考慮在錯誤的時候的信息返回和成功的信息返回,我們設(shè)計了返回結(jié)果類的關(guān)系如下所示。
根據(jù)上面的設(shè)計思路,我們設(shè)計的類代碼如下所示。
/// <summary> /// 發(fā)送裂變紅包的數(shù)據(jù)信息 /// </summary> public class SendGroupRedPackJson : BaseRedPackJson { /// <summary> /// 紅包金額設(shè)置方式 /// ALL_RAND—全部隨機,商戶指定總金額和紅包發(fā)放總?cè)藬?shù),由微信支付隨機計算出各紅包金額 /// </summary> public string amt_type { get; set; } public SendGroupRedPackJson() { this.amt_type = "ALL_RAND"; } }
結(jié)果對象類的代碼如下所示。
/// <summary> /// 發(fā)送紅包的返回結(jié)果 /// </summary> public class SendRedPackResult : PayResult { /// <summary> /// 商戶訂單號 /// </summary> public string mch_billno { get; set; } /// <summary> /// 商戶appid,接口傳入的所有appid應(yīng)該為公眾號的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ù)接口的說明,依舊遵循上篇隨筆介紹的接口設(shè)計方式,實現(xiàn)裂變紅包的代碼處理。
/// <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); .............
然后實現(xiàn)它們的接口代碼如下所示。
/// <summary> /// 微信紅包管理類 /// </summary> public class LotteryApi : ILotteryApi { #region 裂變紅包說明 //微信支付裂變紅包向微信支付商戶開發(fā),具體能力如下: //1、商戶調(diào)用接口時,通過指定發(fā)送金額以及指定一位發(fā)送對象的方式發(fā)放一組裂變紅包 //2、指定發(fā)送對象領(lǐng)取到紅包后,資金直接進入微信零錢,帶給用戶微信支付原生的流暢體驗 //3、指定發(fā)送對象能夠?qū)⒔M合中的剩余紅包分享給好友,好友可繼續(xù)領(lǐng)取,形成傳播效應(yīng),放大企業(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)不能重復(fù)的數(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ā)放總?cè)藬?shù),即總共有多少人可以領(lǐng)到該組紅包(包括分享者) 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、裂變紅包接口的調(diào)用及效果展示
上面我們對裂變紅包進行了接口的封裝,如果我們需要發(fā)送裂變紅包的時候,直接調(diào)用上面的接口即可實現(xiàn)紅包發(fā)送的操作了。
例如調(diào)用接口的代碼如下所示。
//裂變紅包 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ā)過來的裂變紅包。
由于發(fā)送紅包的金額都需要大于1塊,那么如果我們發(fā)送的金額大一些,那么每個人拆到的紅包金額是不等的,如下圖所示。
以上是“C#如何實現(xiàn)微信裂變紅包”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁標題:C#如何實現(xiàn)微信裂變紅包-創(chuàng)新互聯(lián)
文章位置:http://aaarwkj.com/article12/ddopgc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設(shè)、標簽優(yōu)化、手機網(wǎng)站建設(shè)、小程序開發(fā)、網(wǎng)站設(shè)計、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容