一、獲取微信支付 MCHID,KEY,APPID,APPSecret 四個支付關鍵值.
微信支付商戶平臺 https://pay.weixin.qq.com/index.php/core/home/login?return_url=%2F
1.登錄微信支付商戶平臺獲取到商戶號(MCHID),
2.在"賬號中心"欄目下"API安全"欄目里設置API密鑰(KEY)
微信公眾號: https://mp.weixin.qq.com/
1.登錄微信公眾在"基本配置"欄獲取應用ID(APPID)和應用密鑰(APPSecret)
2.在"接口權限"欄目下"網頁賬號"綁定正式支付的域名 (如:××××.net,不要http:和"/"斜杠)
3.在"微信支付"欄目下"開發配置"里面設置公眾支付的支付授權目錄(如:××××.net/WeChatWeb/)
二、把WxPayAPI添加到制作項目中,在Config.cs文件里修改獲取到的MCHID,KEY,APPID,APPSecret四個關鍵值以及NOTIFY_URL值(NOTIFY_URL是支付授權目錄),并在MVC項目里建一個WeChatWeb控制器,里面加上邏輯代碼.并傳遞微信jsapi支付所需的參數.代碼示例如下:
后臺Action代碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
|
/// <summary> /// 獲取微信支付相關信息 /// </summary> /// <returns></returns> [HttpGet] public virtual ActionResult Index() { JsApiPay jsApiPay = new JsApiPay(); OStudent model = null ; try { //調用【網頁授權獲取用戶信息】接口獲取用戶的openid和access_token jsApiPay.GetOpenidAndAccessToken(); //獲取微信支付者公共id jsApiPay.openid = jsApiPay.openid; string ID = Request[ "ID" ]; //如果要獲取頁面傳遞過來的值,需修改GetOpenidAndAccessToken()方法里面的代碼,加上Request.Url.Query獲取參數 model = OStudentSiteService.GetByKey(id).AppendData as OStudent; if (model != null ) { jsApiPay.total_fee = 1; //測試 訂單金額(1表示分,正式金額要*100) jsApiPay.Order_ID = model.order_ID; //訂單號(自己定義訂單號) } //JSAPI支付預處理 //調用統一下單,獲得下單結果 WxPayData unifiedOrderResult = jsApiPay.GetUnifiedOrderResult(); //從統一下單成功返回的數據中獲取微信瀏覽器調起jsapi支付所需的參數 var wxJsApiParam = jsApiPay.GetJsApiParameters(); //獲取到的是json格式字符串 ViewBag.wxJsApiParam = wxJsApiParam; //前臺頁面js調用 Log.Debug( this .GetType().ToString(), "wxJsApiParam : " + wxJsApiParam); } catch (Exception ex) { Response.Write(ex.Message + "," + ex.Source); Response.End(); } return View(model); } //修改支付方式 [HttpPost] public virtual JsonResult PayMethod() { AjaxJsonResult ajax = new AjaxJsonResult() { err = true , msg = string .Empty, timeout = 3 }; string id = Request.Form[ "id" ]; string payMethod = Request.Form[ "payMethod" ]; var model = (Project.Core.Models.Model.OStudent)OStudentSiteService.GetByKey(id).AppendData; model.payMethod = payMethod; //支付方式 OperationResult result = OStudentSiteService.Modify(model); if (result.ResultType == OperationResultType.Success) { ajax.err = false ; ajax.msg = "操作成功" ; } return Json(ajax); } /// <summary> /// 修改支付狀態 /// </summary> /// <param name="userID"></param> /// <returns></returns> [HttpPost] public virtual string EditPayStatus(Guid userID) { string msg = "error" ; var model = OStudentSiteService.GetByKey(userID).AppendData as OStudent; model.Status = ( int )X.Project.Site.Models.Enum.PayStatus.Success; //付款成功 OperationResult result = OStudentSiteService.Modify(model); if (result.ResultType == OperationResultType.Success) { msg = "ok" ; } return msg; } 前臺Index.chtml視圖頁面JS代碼 <script type= "text/javascript" > var _wxJsApiParam = eval( '(@Html.Raw(ViewBag.wxJsApiParam))' ); function callpay() { //選擇支付方式 var payMethod = $( "input[name='PayMethod']:checked" ).val(); if (payMethod == "" || payMethod == null ) { layer.msg( "請選擇支付方式" , function () { }) return false ; } $.ajax({ type: "POST" , dataType: "JSON" , url: '@Url.Action("PayMethod", "WeChatWeb")' , data: { payMethod: payMethod, id: '@Model.ID' }, success: function (data) { //表示修改支付方式成功 if (!data.err) { //1表示微信支付,則調用微信支付 if (payMethod == "1" ) { if ( typeof WeixinJSBridge == "undefined" ) { if (document.addEventListener) { document.addEventListener( 'WeixinJSBridgeReady' , jsApiCall, false ); } else if (document.attachEvent) { document.attachEvent( 'WeixinJSBridgeReady' , jsApiCall); document.attachEvent( 'onWeixinJSBridgeReady' , jsApiCall); } } else { jsApiCall(); } } else if (payMethod == "2" ) { layer.alert( '恭喜您,操作成功!' , function () { window.location.href = "@Url.Action(MVC.Default.Index())" ; //操作成功后的跳轉頁面 }); } } else { layer.msg( "操作失敗" , function () { }) return false ; } } }); } //調用微信JS api 支付 function jsApiCall() { WeixinJSBridge.invoke( 'getBrandWCPayRequest' , _wxJsApiParam, function (res) { if (res.err_msg == "get_brand_wcpay_request:cancel" ) { layer.msg( "已取消支付" , function () { }); return false ; } else if (res.err_msg == "get_brand_wcpay_request:ok" ) { //支付成功 //ajax $.ajax({ type: "POST" , dataType: "text" , url: '@Url.Action("EditPayStatus", "WeChatWeb")' , data: { userID: '@Model.ID' }, error: function (request) { layer.msg( "服務器錯誤!" , function () { }); return false ; }, success: function (data) { window.location.href = "@Url.Action(MVC.Default.Index())" ; //支付成功后跳轉的頁面 } }); //ajax end } }); } </script> |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。