我們在開發網站,公衆号,小程序的時候支付是一個重要環節,筆者打算做一個微信支付的合集,含PC網站微信支付,公衆号的微信支付以及小程序微信支付的詳細介紹。
今天給大家介紹的是電腦端網站的微信支付要點:
一、首先去微信官網下載。NETC#版demo,按下面地址下載。
二、下載完成後,用VS打開解決方案,如下圖,主要目錄有三個,紅色标記
三、更改lib目錄下的Config.cs的參數設置,改成你自己的相關參數 ,如下圖:
四、PC端微信支付應該選擇Native支付,Native支付回調鍊接,進微信商戶後台設置,與上面NOTIFY_URL的參數值一緻。
五、調用統一下單接口,獲得統一下單接口返回的二維碼鍊接 的方法,找到business目錄下的NativePay.cs中加一方法,如下圖:
六、訂單生成後,根據訂單ID和金額,生成支付二維碼,可以在example 目錄裡創建一個 WenxinPcBar.aspx 文件,生成訂單支付二維碼,
七、這樣就生成一個支付的二維碼,如圖所示,注意每次支付成功後,如果你是模拟訂單号,切記每次的訂單号要不一樣,否則創建二維碼為空會報錯。還有傳的金額是整型,你的金額要先格式化為decimal型,然後轉成int型還要乘上100,再傳參數。如下所示protected void Page_Load(object sender, EventArgs e)
{
orderid1 = DNTRequest.GetString("orderId");
m1 = b1.getordermodel(orderid1);
orderid2.Value = orderid1;
if (!IsPostBack)
{
int total_fee = 0;
// decimal d = 111.00m;
//decimal d = 0.01m;
decimal d =decimal.Parse(m1.RealTotal.ToString());
total_fee = Convert.ToInt32(d * 100);
NativePay nativePay = new NativePay();
string body = "購票通";
string attach = "";
string goods_tag = "";
//生成掃碼支付模式二url
string url = nativePay.GetPayUrl(m1.Productsid.ToString(), orderid1, body, attach, total_fee, goods_tag);
ImageUrl = "MakeQRCode.aspx?data=" HttpUtility.UrlEncode(url);
trade_no.Text = orderid1;
money.Text = total_fee.ToString();
}
}
八、掃碼支付成功後,此頁是靜止的,需要自己寫段代碼定時檢測訂單的支付狀态,如果支付成功,就跳轉頁面。
九、定時檢測是否支付成功的函數,可以在頁面上寫一個js函數,如下所示,2秒檢測一次,如果支付成功就跳轉支付成功頁。
再寫一個queryOrderIsPay.ashx文件檢測訂單支付是否成功,代碼如下
十、微信支付成功後,微信後端會自動調用支付回調鍊接,該鍊接會返回是否成功的相關xml文件,我們需要獲得,business目錄下這個文件 ResultNotify.aspx,可以參考下面的方法
核心是根據微信後台返回的數據,系統會根據交易訂單号(微信後台訂單号)是否存在并判斷訂單真實性,如果是假就返回訂單不存在或失敗 ,如果存在就返回 return_code 的值是SUCCESS,同時我們需要加上返回商戶訂單号out_trade_no(不同于微信後台交易訂單号transaction_id),然後根據 返回 的訂單号更新訂單的支付成功的狀态。
至此支付成功後訂單狀态更新完畢 ,前端二維碼支付頁面内的js函數每隔2秒鐘通過post方式調用queryOrderIsPay.ashx文件來檢測訂單支付是否成功的狀态,來實現二維碼支付頁面的自動跳轉。
以上是PC端網頁微信支付的整個流程,是自己在開發過程中總結出來的,如果你有更好的想法,歡迎讨論!
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!