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

目錄
1、現(xiàn)金紅包的概念及使用
#2、 現(xiàn)金紅包API介面的說明及C#的封裝
介面呼叫請求說明
#請求參數(shù)
首頁 微信小程式 微信開發(fā) C#開發(fā)微信入口網(wǎng)站及應(yīng)用微信現(xiàn)金紅包的封裝及使用

C#開發(fā)微信入口網(wǎng)站及應(yīng)用微信現(xiàn)金紅包的封裝及使用

Mar 07, 2017 am 09:54 AM

在上篇隨筆後,經(jīng)過對整個微信框架的完善和重構(gòu),已經(jīng)完成了對微信支付、企業(yè)付款、現(xiàn)金紅包、代金券及各種卡劵進行了封裝完成,並把其中微信支付及搖一搖紅包部分等內(nèi)容作為公眾號和企業(yè)號通用的部分,這些支付相關(guān)的接口在公眾號和企業(yè)號裡面,都可以進行調(diào)用的,在經(jīng)過一系列的優(yōu)化整理後,把這些內(nèi)容逐一進行介紹,希望大家喜歡支持。

1、現(xiàn)金紅包的概念及使用

1)使用場景

微信支付現(xiàn)金紅包向微信支付商家開發(fā),具體能力如下:

◆?商家呼叫介面時,透過指定發(fā)送物件以及發(fā)送金額的方式發(fā)放紅包,這樣的方式,允許商家靈活的應(yīng)用於各種各樣豐富的活動場景

◆?領(lǐng)取到紅包後,用戶的資金直接進入微信零錢,避免繁複的領(lǐng)獎流程,帶給用戶微信支付原生的流暢體驗

?

2)微信紅包發(fā)送規(guī)則

發(fā)送頻率規(guī)則

◆ 每分鐘發(fā)送紅包數(shù)量不得超過1800個;

◆ 同一個商家號,每分鐘最多給同一個用戶發(fā)送一個紅包;

紅包規(guī)則

◆ 單一紅包金額介於[1.00元,200.00元]之間;

◆同一個紅包只能發(fā)送給一個用戶;(如果以上規(guī)則不滿足您的需求,請發(fā)送郵件至wxhongbao@tencent.com獲取升級指引)

◆ 紅包發(fā)放後72小時未被領(lǐng)取將進行退款

?

3)?微信紅包介面呼叫流程

◆ 後臺API呼叫:待進入聯(lián)調(diào)程序時與開發(fā)進行詳細溝通;

◆ 告知伺服器:告知伺服器接收微信紅包的使用者openID,告知伺服器該使用者所獲得的金額;

◆ 從商務(wù)號扣款:伺服器取得資訊後從對應(yīng)的商務(wù)號扣取對應(yīng)的金額;

◆ 呼叫失?。阂虿环蟼魉鸵?guī)則,商務(wù)號餘額不足等原因造成呼叫失敗,回饋至呼叫方;

◆ 傳送成功:以微信紅包公眾帳號發(fā)送對應(yīng)紅包至對應(yīng)用戶;

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用


#2、 現(xiàn)金紅包API介面的說明及C#的封裝

用於企業(yè)向微信用戶個人發(fā)現(xiàn)金紅包,目前支援向指定微信用戶的openid發(fā)放指定金額紅包。

雖然可以透過微信的商家後臺進行現(xiàn)金紅包的發(fā)放,但我們也可以利用微信提供的介面API進行現(xiàn)金紅包的發(fā)送。


介面呼叫請求說明


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


#請求參數(shù)


##欄位名稱欄位必填範(fàn)例值類型#說明隨機字串nonce_str#是5K8264ILTKCH16CQ2502SI8ZNMTM67VSString(32)隨機字串,不長於32位元簽章sign是C380BEC2BFD727A4B6845133519F3AD6String(32)詳見簽章產(chǎn)生演算法 #10000098201411111234567890String(28)商家號碼mch_id#是10000098String(32)微信支付分配的商家號碼#公眾帳號appidwxappid是wx88888888888888888#String(32)微信分配的公眾帳號ID(企業(yè)號corpid即為此appId)。介面?zhèn)魅氲乃衋ppid應(yīng)該為公眾號的appid(在mp.weixin.qq.com申請的),不能為APP的appid(在open.weixin.qq.com申請的)。 商家名稱send_name是天虹百貨String(32)#紅包發(fā)送者名稱是oxTWIuGaIt6gTKsQRLau2M0yL16EString(32 )total_amount 1紅包發(fā)放總?cè)藬?shù)total_num=1wishingclient_ip#act_nameremark

商家訂單號

mch_billno

商家訂單號碼(每個訂單號碼必須唯一) 組成:mch_id+yyyymmdd+10位元一天內(nèi)不能重複的數(shù)字。 介面根據(jù)商家訂單號碼支援重入,如出現(xiàn)逾時可再呼叫。

用戶openid

re_openid

接受紅包的用戶 用戶在wxappid下的openid ##付款金額
1000 int 付款金額,單位分 紅包發(fā)放總?cè)藬?shù)

total_num

int 紅包祝福語
#是 感謝您參加猜燈謎活動,祝您元宵節(jié)快樂! String(128) 紅包祝福語 #Ip位址
192.168.0.1 String(15) 呼叫介面的機器Ip位址 活動名稱
猜燈謎搶紅包活動 String(32) 活動名稱 備註
是######猜越多得越多,快來搶! ######String(256)######備註資訊#############

資料範(fàn)例:


<xml><xml>?
??<sign><![CDATA[E1EE61A91C8E90F299DE6AE075D60A2D]]></sign>??
??<mch_billno><![CDATA[0010010404201411170000046545]]></mch_billno>??
??<mch_id><![CDATA[888]]></mch_id>??
??<wxappid><![CDATA[wxcbda96de0b165486]]></wxappid>??
??<send_name><![CDATA[send_name]]></send_name>??
??<re_openid><![CDATA[onqOjjmM1tad-3ROpncN-yUfa6uI]]></re_openid>??
??<total_amount><![CDATA[200]]></total_amount>??
??<total_num><![CDATA[1]]></total_num>??
??<wishing><![CDATA[恭喜發(fā)財]]></wishing>??
??<client_ip><![CDATA[127.0.0.1]]></client_ip>??
??<act_name><![CDATA[新年紅包]]></act_name>??
??<remark><![CDATA[新年紅包]]></remark>??
??<nonce_str><![CDATA[50780e0cca98c8c8e814883e5caa672e]]></nonce_str>?
??</xml>

上面是介面及輸入?yún)?shù)的說明,一般情況下,我們需要根據(jù)這些來決定如何實作C#程式碼的封裝,首先我們來定義我們需要的介面和類,如下所示。

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用

透過分析上面的介面說明,我們可以發(fā)現(xiàn),其中介面有部分是固定的常規(guī)參數(shù),也就是一般公眾號或企業(yè)號的身份訊息,有部分是業(yè)務(wù)參數(shù),因此我們把它們分別分離出來,這樣有利於我們對接口的封裝和使用,那些常規(guī)的參數(shù)我們通過公眾號身份獲取就可以了,業(yè)務(wù)信息,我們可以定義一個實體類來進行數(shù)據(jù)的儲存交換即可。

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用

對應(yīng)上圖的固定的常規(guī)參數(shù),在介面說明中如下所示。

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用

因此,這些資訊我們從帳號裡面設(shè)定及取得即可,我們可以在管理後臺對它們進行配置,然後在程式碼邏輯裡面取出來使用即可。

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用

根據(jù)上面的介紹,我們可以定義紅包介面程式碼如下所示。

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

其中的?SendRedPackJson 是我們變化的業(yè)務(wù)參數(shù),我們定義了一個類別來進行資訊的承載,方便想介面?zhèn)鬟f訊息。

///?<summary>
????///?現(xiàn)金紅包和裂變紅包的基礎(chǔ)信息
????///?</summary>
????public?class?BaseRedPackJson
????{
????????///?<summary>
????????///?接受紅包的用戶
????????///?用戶openid????
????????///?</summary>
????????public?string?re_openid?{?get;?set;?}

????????///?<summary>
????????///?付款金額,單位分
????????///?</summary>
????????public?int?total_amount?{?get;?set;?}

????????///?<summary>
????????///?紅包發(fā)放總?cè)藬?shù)
????????///?</summary>
????????public?int?total_num?{?get;?set;?}

????????///?<summary>
????????///?紅包祝福語
????????///?</summary>
????????public?string?wishing?{?get;?set;?}

????????///?<summary>
????????///?活動名稱
????????///?</summary>
????????public?string?act_name?{?get;?set;?}

????????///?<summary>
????????///?備注信息
????????///?</summary>
????????public?string?remark?{?get;?set;?}
????}

????///?<summary>
????///?發(fā)送紅包的數(shù)據(jù)信息
????///?</summary>
????public?class?SendRedPackJson?:BaseRedPackJson
????{
????????///?<summary>
????????///?調(diào)用接口的機器Ip地址
????????///?</summary>
????????public?string?client_ip?{?get;?set;?}

????????public?SendRedPackJson()
????????{
????????????this.total_num?=?1;//紅包發(fā)放總?cè)藬?shù)
????????}
????}

根據(jù)上面參數(shù)的定義,我們在現(xiàn)金紅包的介面實作裡面,具體程式碼如下所示,裡面的邏輯內(nèi)容,主要就是傳入常規(guī)參數(shù)和業(yè)務(wù)參數(shù)兩部分,然後呼叫介面的位址進行資料的提交(POST),取得回傳結(jié)果並進行解析即可。

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

????????????//加入常規(guī)的參數(shù)
????????????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);
????????????data.SetValue("total_num",?json.total_num);
????????????data.SetValue("wishing",?json.wishing);
????????????data.SetValue("client_ip",?json.client_ip);
????????????data.SetValue("act_name",?json.act_name);
????????????data.SetValue("remark",?json.remark);

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

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

其中發(fā)送紅包操作是需要證書的,因此需要新增對應(yīng)的證書,證書是從微信的商家平臺上下載的。

在商家後臺的【API安全】專案上下載憑證供我們開發(fā)環(huán)境使用。

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用

下載憑證後,在Windows環(huán)境,我們一般需要雙擊安裝,輸入所需的商家號碼作為密碼即可。

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用

在程式碼裡面,我們可以使用憑證類別來新增

#
HttpHelper?helper?=?new?HttpHelper();

????????????helper.ClientCertificates?=?new?X509CertificateCollection();
????????????certPath?=?Path.Combine(System.Environment.CurrentDirectory,?certPath);
????????????helper.ClientCertificates.Add(new?X509Certificate2(certPath,?certPassword));
????????????string?response?=?helper.GetHtml(url,?xml,?true);

##?

3.微信紅包的使用結(jié)果

?例如,我們在測試範(fàn)例裡面呼叫程式碼如下所示。

//現(xiàn)金紅包
????????????????SendRedPackJson?packJson?=?new?SendRedPackJson()
????????????????{
????????????????????act_name?=?"恭喜發(fā)財",
????????????????????client_ip?=?NetworkUtil.GetIPAddress(),
????????????????????remark?=?"企業(yè)紅包",
????????????????????wishing?=?"企業(yè)紅包",
????????????????????total_amount?=?100,
????????????????????total_num?=?1,
????????????????????re_openid?=?tosendOpenId?//發(fā)送給用戶的OpenID
????????????????};
????????????????var?result?=?hbApi.SendRedPack(packJson);
????????????????var?message?=?string.Format("企業(yè)發(fā)送紅包:{0}?{1}",?result.Success???"成功"?:?"失敗",?result.Message);
????????????????Console.WriteLine(message);
????????????????Console.WriteLine(result.ToJson());

其中的hbApi是上面介面的構(gòu)造,如下程式碼所示。

AccountInfo??accountInfo?=?new?AccountInfo()
????{
???????Name?=?this.SendName,
????????AppID?=?this.AppId,
????????AppSecret?=?this.AppSecret,
????????MchID?=?this.MchID,
????????PayAPIKey?=?this.PayAPIKey,
????????CertPath?=?this.CertPath,
????????CertPassword?=?this.CertPassword,
?????????PayNotifyUrl?=?this.PayNotifyUrl
?????};
?ILotteryApi?hbApi?=?new?LotteryApi(accountInfo);

成功呼叫後,我們可以在公眾號的對話裡面看到紅包的信息結(jié)果,如下是整個紅包發(fā)送及拆開的過程。

C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用 ? ? ? ?C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用 ? ? ?C#開發(fā)微信門戶及應(yīng)用微信現(xiàn)金紅包的封裝及使用

?更多C#開發(fā)微信入口網(wǎng)站及應(yīng)用微信現(xiàn)金紅包的封裝及使用?相關(guān)文章請關(guān)注PHP中文網(wǎng)!


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

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(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