1. 程式人生 > >(原創分享C# MVC)微信支付之公眾號支付教程

(原創分享C# MVC)微信支付之公眾號支付教程

前段時間在公司實習做了公眾號的微信支付及退款,期間參考了網上一大推資料,自己也遇到了一些坑,所以把這個教程寫下來方便後來人。
首先做微信支付你得先把微信官網的開發文件看一邊,網址:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=1_1,參考官方給的Demo。
接下來正式開始配置。現在先到微信公眾號後臺進行配置,

在微信支付-開發配置裡面找到授權目錄,授權目錄就是指你要進行支付的目錄,只有先進行授權你才可以進行支付的相關操作 ,比如微信官方Demo的授權目錄http://paysdk.weixin.qq.com/example/

要設定授權域名,授權域名就是在公眾號後臺規定了哪個域名下面的目錄能獲取使用者的資訊。開發公眾號支付時,在統一下單介面中要求必傳使用者openid,而獲取openid則需要您在公眾平臺設定獲取openid的域名,只有被設定過的域名才是一個有效的獲取openid的域名,否則將獲取失敗!
第一步新建一個MVC的網站,將微信官方Demo裡面lib和business資料夾的檔案都拷過來,其實主要工作是主要是將Demo中aspx網頁形式改為cshtml網頁的形式。
總的程式碼目錄如下:
這裡寫圖片描述


在config檔案中設定本公眾號的基本資訊:
這裡寫圖片描述

第二步是在HomeCtroller中編寫程式碼如下:將原來在JsApiPay.cs中的幾個方法寫到這個控制器頁面,才能正常呼叫。
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
然後是對應的index.cshtml檔案如下,用@ViewBag將獲得共享地址的引數wxEditAddrParam從home控制器傳到index頁面,立即下單之後跳轉到支付頁。
這裡寫圖片描述
這裡寫圖片描述
前面的第二步是為了拿到使用者的openid跟確定使用者購買商品的價格,並把引數openid、total_fee傳到第二個支付頁面。

第三步開始寫支付頁面。新建一個WxPayController,進行統一下單,然後得到進行調起支付控制元件的引數。程式碼如下:
這裡寫圖片描述


對應的支付頁面的cshtml頁面如下,特別號注意的是script裡面傳遞的調起控制元件引數wxJsApiParam是json字串,在js中預設會對字串中的特殊字元進行編碼,用@html.Raw()讓它不轉碼。
這裡寫圖片描述
這裡寫圖片描述

完成了支付之後進行最後一步回撥頁面。還是在WxPayController下寫回調函式,回撥函式主要是為了接收成功支付之後微信支付後臺發回來的資訊,並驗證訂單是否存在。
程式碼如下:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

至此所有過程都完成了,關於儲存到資料庫的過程我就不貼出來了。來一張支付成功的頁面。不管怎麼說,雖然不是特別不難,但是也遇到了一些坑,學到了一些東西,所以特此記錄下來。後期我再把支付的原始碼傳上來。
這裡寫圖片描述