没有合适的资源?快使用搜索试试~ 我知道了~
首页ASP.NET MVC 开发微信支付H5的实现示例(外置浏览器支付)
资源详情
资源评论
资源推荐

ASP.NET MVC 开发微信支付开发微信支付H5的实现示例(外置浏览器支付)的实现示例(外置浏览器支付)
主要介绍了ASP.NET MVC 开发微信支付H5的实现示例(外置浏览器支付),文中通过示例代码介绍的非常详细,对大
家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使用微信支付时,商户发起本服务呼起微信客户
端进行支付。
主要用于触屏版的手机浏览器请求微信支付的场景。可以方便的从外部浏览器唤起微信支付。
微信开放平台上的也只是简单的介绍了一下逻辑和常见问题,网上查看了很多,说的都不够具体
首先需要在微信商户平台里开通 H5支付
申请入口:登录商户平台-->产品中心-->我的产品-->支付产品-->H5支付
代码逻辑:代码逻辑:
1、用户在商户侧完成下单,使用微信支付进行支付
2、由商户后台向微信支付发起下单请求(调用统一下单接口)注:交易类型trade_type=MWEB
3、统一下单接口返回支付相关参数给商户后台,如支付跳转url(参数名“mweb_url”),商户通过mweb_url调起微信支付中间页
4、中间页进行H5权限的校验,安全性检查
5、如支付成功,商户后台会接收到微信侧的异步通知
6、用户在微信支付收银台完成支付或取消支付,返回商户页面(默认为返回支付发起页面)
7、商户在展示页面,引导用户主动发起支付结果的查询
8,9、商户后台判断是否接到收微信侧的支付结果通知,如没有,后台调用我们的订单查询接口确认订单状态
10、展示最终的订单支付结果给用户
我们需要用到的参数:
AppID(应用ID)
AppSecret(应用密钥)
微信支付商户号
微信商户支付密钥
我这里使用了第三方封装的SDK。谢谢开发者SDK的帮助。
Senparc.Weixin
献上地址:https://weixin.senparc.com/
H5支付其实就是生成一个链接,点击后会激活微信APP,弹出支付窗口
所以需要生成一个符合规则的Url,引入SDK
Com.Wxpay.WxPayConfig wxConfig = new Com.Wxpay.WxPayConfig();
Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
packageReqHandler.SetParameter("appid", wxConfig.appid);//APPID
packageReqHandler.SetParameter("mch_id", wxConfig.mchid);//商户号
packageReqHandler.SetParameter("nonce_str", Senparc.Weixin.MP.TenPayLibV3.TenPayV3Util.GetNoncestr());
packageReqHandler.SetParameter("body", "测试商品");
packageReqHandler.SetParameter("out_trade_no", model.OrderID);//订单号
packageReqHandler.SetParameter("total_fee", cost.ToString()); //金额,以分为单位
packageReqHandler.SetParameter("spbill_create_ip", Request.UserHostAddress);//IP
packageReqHandler.SetParameter("notify_url", "http://" + HttpContext.Request.Url.Host + "/WxPay/PayNotifyUrl"); //回调地址
packageReqHandler.SetParameter("trade_type", "MWEB");//这个不可以改。固定为Mweb
packageReqHandler.SetParameter("sign", packageReqHandler.CreateMd5Sign("key", wxConfig.key));
string data = packageReqHandler.ParseXML();
var urlFormat = "https://api.mch.weixin.qq.com/pay/unifiedorder";
var formDataBytes = data == null ? new byte[0] : Encoding.UTF8.GetBytes(data);
MemoryStream ms = new MemoryStream();
ms.Write(formDataBytes, 0, formDataBytes.Length);
ms.Seek(0, SeekOrigin.Begin);
var result = RequestUtility.HttpPost(urlFormat, null, ms);
var res = System.Xml.Linq.XDocument.Parse(result);
string mweb_url = res.Element("xml").Element("mweb_url").Value;
然后我们会得到下面的Xml











安全验证
文档复制为VIP权益,开通VIP直接复制

评论0