.NET微信支付(H5仅限外部浏览器)

最近做WebApp 需要用到微信H5支付、然后在网上大概搜了不下10篇文章、然后还是觉得需要自己写一下自己的过程。

直接下载这个官方提供的包  https://pay.weixin.qq.com/wiki/doc/api/download/WxPayAPI_CS.zip

不知道为什么CSDN上面连这种东西也要收积分,费解~~这也是厌恶这个CSDN的原因。

0.0 先预留一下大致的文件目录  有一些用不上的我删除了~~精简一下

1.0 新增加H5Pay.cs 代码如下

 public static string GetPayUrl(string get_mweb_url = "H5 微信外置浏览器")
        {
            string body = "微信支付H5测试Demo:0.01";
            WxPayData data = new WxPayData();
            data.SetValue("body", body);//主体信息说明 
            data.SetValue("attach", "支付测试");//附加数据 
            data.SetValue("out_trade_no", "wx" + DateTime.Now.ToString("yyMMddHHmmss"));//商户订单号  
            data.SetValue("total_fee", (Math.Round((decimal)0.01 * 100, 0)).ToString());//总金额 
            data.SetValue("spbill_create_ip", "0.0.0.0");//终端IP  
            data.SetValue("notify_url", "http://xxx.cn");//通知地址  
            data.SetValue("trade_type", "MWEB");//交易类型  
            data.SetValue("scene_info", "{'h5_info':{'type':'Wap','wap_url':'http://xxx.cn','wap_name':'H5支付'}}");//场景信息  
            WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口  
            string url = result.GetValue("mweb_url").ToString();//获得统一下单接口返回的链接  
            return url;
        }

2.0 修改 WxPayApi.cs 下的UnifiedOrder


            //若终端IP未设置,则使用配置文件中的终端IP
            if (!inputObj.IsSet("spbill_create_ip"))
            {
                inputObj.SetValue("spbill_create_ip", "0.0.0.0");//终端IP
            }
            inputObj.SetValue("appid", "xxxxxxx");//公众账号ID  WxPayConfig.GetConfig().GetAppID() 见外部配置
            inputObj.SetValue("mch_id", "xxxxxxx");//商户号
            inputObj.SetValue("nonce_str", GenerateNonceStr());//随机字符串
            inputObj.SetValue("sign_type", WxPayData.SIGN_TYPE_MD5);//签名类型 MD5

            //签名
            inputObj.SetValue("sign", inputObj.MakeSign());
            string xml = inputObj.ToXml();

3.0 简单一点,新增一个aspx文件

        protected void Page_Load(object sender, EventArgs e)
        {
            string url = H5Pay.GetPayUrl("H5 微信外置浏览器");//通过统一下单接口进行H5支付
            Response.Redirect(url);//跳转到微信支付中间页
        }

4.0 大功告成!!

PS:一定要在外部浏览器使用  外部浏览器  外部。

posted @ 2018-08-14 10:57  乄天気之子  阅读(336)  评论(0)    收藏  举报