微信公众号支付(MVC版本)
一、获取微信支付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代码
///<summary> ///获取微信支付相关信息 ///</summary> ///<returns></returns> [HttpGet] publicvirtualActionResultIndex() { JsApiPayjsApiPay=newJsApiPay(); OStudentmodel=null; try { //调用【网页授权获取用户信息】接口获取用户的openid和access_token jsApiPay.GetOpenidAndAccessToken(); //获取微信支付者公共id jsApiPay.openid=jsApiPay.openid; stringID=Request["ID"];//如果要获取页面传递过来的值,需修改GetOpenidAndAccessToken()方法里面的代码,加上Request.Url.Query获取参数 model=OStudentSiteService.GetByKey(id).AppendDataasOStudent; if(model!=null) { jsApiPay.total_fee=1;//测试订单金额(1表示分,正式金额要*100) jsApiPay.Order_ID=model.order_ID;//订单号(自己定义订单号) } //JSAPI支付预处理 //调用统一下单,获得下单结果 WxPayDataunifiedOrderResult=jsApiPay.GetUnifiedOrderResult(); //从统一下单成功返回的数据中获取微信浏览器调起jsapi支付所需的参数 varwxJsApiParam=jsApiPay.GetJsApiParameters();//获取到的是json格式字符串 ViewBag.wxJsApiParam=wxJsApiParam;//前台页面js调用 Log.Debug(this.GetType().ToString(),"wxJsApiParam:"+wxJsApiParam); } catch(Exceptionex) { Response.Write(ex.Message+","+ex.Source); Response.End(); } returnView(model); } //修改支付方式 [HttpPost] publicvirtualJsonResultPayMethod() { AjaxJsonResultajax=newAjaxJsonResult(){err=true,msg=string.Empty,timeout=3}; stringid=Request.Form["id"]; stringpayMethod=Request.Form["payMethod"]; varmodel=(Project.Core.Models.Model.OStudent)OStudentSiteService.GetByKey(id).AppendData; model.payMethod=payMethod;//支付方式 OperationResultresult=OStudentSiteService.Modify(model); if(result.ResultType==OperationResultType.Success) { ajax.err=false; ajax.msg="操作成功"; } returnJson(ajax); } ///<summary> ///修改支付状态 ///</summary> ///<paramname="userID"></param> ///<returns></returns> [HttpPost] publicvirtualstringEditPayStatus(GuiduserID) { stringmsg="error"; varmodel=OStudentSiteService.GetByKey(userID).AppendDataasOStudent; model.Status=(int)X.Project.Site.Models.Enum.PayStatus.Success;//付款成功 OperationResultresult=OStudentSiteService.Modify(model); if(result.ResultType==OperationResultType.Success) { msg="ok"; } returnmsg; } 前台Index.chtml视图页面JS代码 <scripttype="text/javascript"> var_wxJsApiParam=eval('(@Html.Raw(ViewBag.wxJsApiParam))'); functioncallpay(){ //选择支付方式 varpayMethod=$("input[name='PayMethod']:checked").val(); if(payMethod==""||payMethod==null){ layer.msg("请选择支付方式",function(){}) returnfalse; } $.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(typeofWeixinJSBridge=="undefined"){ if(document.addEventListener){ document.addEventListener('WeixinJSBridgeReady',jsApiCall,false); } elseif(document.attachEvent){ document.attachEvent('WeixinJSBridgeReady',jsApiCall); document.attachEvent('onWeixinJSBridgeReady',jsApiCall); } } else{ jsApiCall(); } }elseif(payMethod=="2"){ layer.alert('恭喜您,操作成功!',function(){ window.location.href="@Url.Action(MVC.Default.Index())";//操作成功后的跳转页面 }); } }else{ layer.msg("操作失败",function(){}) returnfalse; } } }); } //调用微信JSapi支付 functionjsApiCall(){ WeixinJSBridge.invoke('getBrandWCPayRequest',_wxJsApiParam, function(res){ if(res.err_msg=="get_brand_wcpay_request:cancel"){ layer.msg("已取消支付",function(){}); returnfalse; }elseif(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(){}); returnfalse; }, success:function(data){ window.location.href="@Url.Action(MVC.Default.Index())";//支付成功后跳转的页面 } });//ajaxend } }); } </script>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。