ASP.NETMVC开发微信支付Html5的示例分析-创新互联

这篇文章给大家分享的是有关ASP.NET MVC开发微信支付Html5的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网络空间、营销软件、网站建设、银海网站维护、网站推广。

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

献上地址:/tupian/20230522/Error>  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 = "/tupian/20230522/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


 
 
 
 
 
 
 
 
 
 

提取到   mweb_url,绑定到href上即可。

立即支付

支付成功之后,在回调地址里处理业务逻辑

/// 
    /// 支付结果回调地址
    /// 
    /// 
    [HttpPost]
    public virtual ActionResult PayNotifyUrl()
    {
     
      Com.Wxpay.WxPayConfig wxConfig = new Com.Wxpay.WxPayConfig();
      Senparc.Weixin.MP.TenPayLibV3.ResponseHandler payNotifyRepHandler = new Senparc.Weixin.MP.TenPayLibV3.ResponseHandler(null);
      payNotifyRepHandler.SetKey(wxConfig.key);

      string return_code = payNotifyRepHandler.GetParameter("return_code");
      string return_msg = payNotifyRepHandler.GetParameter("return_msg");
      string xml = string.Format(@"", return_code, return_msg);

      if (return_code.ToUpper() != "SUCCESS")
      {
        return Content(xml, "text/xml");
      }

      string out_trade_no = payNotifyRepHandler.GetParameter("out_trade_no");
      //微信服务器可能会多次推送到本接口,这里需要根据out_trade_no去查询订单是否处理,如果处理直接返回:return Content(xml, "text/xml"); 不跑下面代码

      //验证请求是否从微信发过来(安全)
      if (payNotifyRepHandler.IsTenpaySign())
      {
        //TO DO
      }
      else
      {

      }
      return Content(xml, "text/xml");
    }

注意:

不要使用此url直接打开,会提示错误。

感谢各位的阅读!关于“ASP.NET MVC开发微信支付Html5的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


网页名称:ASP.NETMVC开发微信支付Html5的示例分析-创新互联
网页地址:http://azwzsj.com/article/cseeii.html