asp.net core 微信支付工具类(H5支付,扫码支付,公众号支付,app支付)之2-H5支付

  上一篇说到微信扫码支付,今天来分享下微信H5支付,适用场景为手机端非微信浏览器调用微信H5支付惊醒网站支付业务处理。申请开通微信H5支付工作不多做介绍,直接上代码。

  首先是微信支付业务类(WxPayService)中的方法,传上必要的参数,该方法将会构造请求XML字符串到微信api接口,H5支付用到的是返回XML参数的mweb_url的值,控制器中的Aciton方法调用该业务层方法得到mweb_url的值,此时,前端ajax调用控制器返回mweb_url值,直接将window.localtion.href=mweb_url若手机有安装微信即可唤起微信进行支付。H5支付注意当支付唤起时候前端应做个定时请求后台订单状态是否支付并做相应的跳转处理。

  

     /// <summary>
        /// 获取H5方式的手机微信支付地址,异常返回""
        /// </summary>
        /// <param name="out_trade_no">订单号</param>
        /// <param name="body">描述</param>
        /// <param name="total_fee">总价</param>
        /// <param name="ip">客户IP</param>
        /// <returns></returns>
        public string GetWxH5PayUrl(string out_trade_no, string body, string total_fee, string ip)
        {
            Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler();
            #region 构造请求参数
            packageReqHandler.SetParameter("appid", wxPayConfig.appid);//APPID
            packageReqHandler.SetParameter("mch_id", wxPayConfig.mchid);//商户号
            packageReqHandler.SetParameter("nonce_str", Senparc.Weixin.MP.TenPayLibV3.TenPayV3Util.GetNoncestr());
            packageReqHandler.SetParameter("body", body);
            packageReqHandler.SetParameter("out_trade_no", out_trade_no);//订单号
            packageReqHandler.SetParameter("total_fee", (int)(Convert.ToDecimal(total_fee) * 100) + ""); //金额,以分为单位
            packageReqHandler.SetParameter("spbill_create_ip", ip);//IP
            packageReqHandler.SetParameter("notify_url", wxPayConfig.notify_url); //回调地址
            packageReqHandler.SetParameter("trade_type", "MWEB");//这个不可以改。固定为Mweb
            packageReqHandler.SetParameter("sign", packageReqHandler.CreateMd5Sign("key", wxPayConfig.key));//商户API密钥
            #endregion

            //将参数转为xml字符串
            string data = packageReqHandler.ParseXML();
            //发起post异步请求,获取返回的内容
            var result = PostWithStringFile(wxPayConfig.api_url, data);
            Log.Info("【GetWxH5PayUrl】订单:" + out_trade_no + ",请求得到的xml:" + result, "微信支付");

            var res = System.Xml.Linq.XDocument.Parse(result);
            try
            {
                string mweb_url = res.Element("xml").Element("mweb_url").Value;
                Log.Info("【GetWxH5PayUrl】订单:" + out_trade_no + ",请求得到的url:" + mweb_url, "微信支付");
                return mweb_url;
            }
            catch (Exception ex)
            {
                Log.Info("【GetWxH5PayUrl】订单:" + out_trade_no + ",异常:" + ex.ToString(), "微信支付");
                return "";
            }
        }

  这里有用到上一篇介绍的Senparc.Weixin.MP和我封装的方法PostWithStringFile(),这里就不重复贴出,最后完成时候我将贴上本人使用的微信支付业务类和前端调用例子

原文地址:https://www.cnblogs.com/jomzhang/p/9206427.html

时间: 2024-11-06 17:58:59

asp.net core 微信支付工具类(H5支付,扫码支付,公众号支付,app支付)之2-H5支付的相关文章

微信扫描二维码关注公众号登录网站

页面: @{ Layout = "~/Views/Shared/_Layout.cshtml";} <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtm

C# MVC 微信支付教程系列之公众号支付

微信支付教程系列之公众号支付   今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后再通过公众号里面的菜单链接,进入公众号的商城,然后在里面完成购买和支付功能,我们可以看看官方对这个公众号支付的场景的解释,链接:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_1,通过这个官方的解释,那我们大概清楚这个公众号的用途了,下面,我就说

如何申请三方支付接口 微信支付 支付宝支付 网银支付 钱包支付 扫码支付等

如何申请三方支付接口 微信支付 支付宝支付 网银支付 钱包支付  扫码支付等 首先,需要提供一整套申请支付接口的资料,如下 一.企业3证加盖公司公章 二.法人手持身份证照片 三.对应企业ICP备案的交易网站域名 资料审核初步审核之后,请把支付合作协议打印出来一式二份附带企业三证打印盖章邮寄到三方支付公司进一步审核 审核通过后,进行支付接口的对接 联调 最终正式环境上线

微信公众号与APP微信第三方登录账号打通

一个项目同时开发了APP和微信服务号,需要做到APP和微信服务号的账号互通同步,也就是说一个账号在2个地方都可以用,当然这个前提是保证你公司自己的服务器的数据库用的是同一套. 为保证用户数据的唯一性,打通app与公众号的数据,需要做如下工作: 1.申请appid, 在-登录微信开放平台--申请账号(如果没有,就去注册,不能使用公众号登录或注册)--开发者资质认证(账号中心,认证时需提交很多资料:等待认证结果)--认证通过之后,创建应用(管理中心,创建你要开发的app,等待审核):以上是app需要

一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app

一步一步教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app 转载 作者:jrainlau 链接:https://segmentfault.com/a/1190000005844155 项目地址:https://github.com/jrainlau/wechat-subscriptor 下载&运行 git clone git@github.com:jrainlau/wechat-subscriptor.git cd wechat-subscriptor && np

h5棋牌游戏公众号开发 app开发+源码平台搭建分享教程

h5棋牌游戏公众号开发 app开发+源码平台搭建分享教程下载diguaym.com/h5 扣扣2152876294 多合一集合游戏 聚集了h5牛牛.金花.二杠八.十三水.三公等 全新界面UI设计(WeChat H5 public number landlords chess source development, Download diguaym.com/h5 buckle more than 2747044651 in one set of game 要建立一个安全Linux服务器就首先要了解

第三方支付之微信支付(扫码支付)

第一步:注册微信支付账户,开通扫码支付 具体流程请参照官方说明 第二步:创建Maven项目 1. 添加微信支付SDK依赖.二维码工具依赖(微信支付需要自己通过二维码工具生成支付二维码) <!-- 微信支付 --> <dependency> <groupId>com.github.wxpay</groupId> <artifactId>wxpay-sdk</artifactId> <version>0.0.3</ver

微信支付—— 扫码支付

个人认为扫码支付比Jsapi支付从开发和使用上要顺心的多.扫码支付不用担心是PC端还是移动浏览器还是微信客户端访问的问题,生成一个二维码,扫描支付即可. 一些配置和代码SDK以及SDK存在的错误可以参考上一篇 微信支付的文章 http://blog.csdn.net/m0sh1/article/details/45199711 友情提示以下内容实在简陋 - -# 如果你跑通了 Jsapi支付,那么扫码支付其实没什么太特别的. 扫码支付发起支付的文件在 example SDK 中的 native.

微信支付接口开发之---微信支付之JSSDK(公众号支付)步骤

1.准备 1.1.公众号为服务号,开通微信支付功能 1.2.为了方便调试微信后台的回调URL(必须为外网),我用了nat123软件来做一个映射 1.3.官方微信开发的示例WxPayApi(.net版本) 2.业务流程图 3.步骤 3.1.用户访问商户的链接,商户链接地址调用[网页授权获取用户信息]接口获取用户的openid和access_token 参考:网页授权获取用户基本信息 3.1.1.第一步,用户同意授权,获取code,调用接口如下 https://open.weixin.qq.com/