zoukankan      html  css  js  c++  java
  • 微信支付-原生支付(Native)-模式二

    业务流程:

         商户后台系统调用微信支付统一下单生成预付交易,将接口返回的链接生成二维码,用户扫码后输入密码完成支付交易。注意:该模式的预付单有效期为2小时,过期后无法支付。

    这种模式比较简单,直接生成二维码供用户扫码进行支付

    代码:

            public JsonResult GetQrCode2(string no)
            {
    
                string timeStamp = Senparc.Weixin.MP.TenPayLibV3.TenPayV3Util.GetTimestamp();
                string nonceStr = Senparc.Weixin.MP.TenPayLibV3.TenPayV3Util.GetNoncestr();
                string body = "Test-Native";//商品或支付单简要描述
                string out_trade_no = no;//商户系统内部的订单号,32个字符内,可包含字母,其他说明见商户订单号
                int total_fee = 2;//Convert.ToInt32(trade.TRADE_PAYMENT.Value*100);//订单总金额,只能是整数。
                string spbill_create_ip = Request.UserHostAddress;//APP和网页支付提交用户端IP,Native支付填调用微信支付API的机器IP
                string notify_url = "http://×××/PayNotifyUrl";//接收微信支付异步通知回调地址
                string trade_type = "NATIVE";//JSAPI,NATIVE,APP,WAP
                string product_id = no;
               
                //创建支付应答对象
                Senparc.Weixin.MP.TenPayLibV3.RequestHandler packageReqHandler = new Senparc.Weixin.MP.TenPayLibV3.RequestHandler(null);
                //初始化
                packageReqHandler.Init();
    
                //设置package订单参数
                packageReqHandler.SetParameter("appid", AppId);
                packageReqHandler.SetParameter("mch_id", MchId);
                packageReqHandler.SetParameter("nonce_str", nonceStr);
                packageReqHandler.SetParameter("body", body);
                packageReqHandler.SetParameter("out_trade_no", out_trade_no);
                packageReqHandler.SetParameter("total_fee", total_fee.ToString());
                packageReqHandler.SetParameter("spbill_create_ip", spbill_create_ip);
                packageReqHandler.SetParameter("notify_url", notify_url);
                packageReqHandler.SetParameter("trade_type", trade_type);
                packageReqHandler.SetParameter("product_id", product_id);
    
                string sign = packageReqHandler.CreateMd5Sign("key", Key);
    
                packageReqHandler.SetParameter("sign", sign);
    
                string data = packageReqHandler.ParseXML();
    
                //调用统一下订单接口。
                var UnifiedorderResult = Senparc.Weixin.MP.AdvancedAPIs.TenPayV3.Unifiedorder(data);
                var res = System.Xml.Linq.XDocument.Parse(UnifiedorderResult);
    
                string code_url = res.Element("xml").Element("code_url").Value;
    
                string url = "http://qr.liantu.com/api.php?text=" + code_url;
    
                return Json(url);
            }
  • 相关阅读:
    网络时钟同步SOCKET代码
    NTP时间同步之同步时钟要领
    3分钟 Markdown 快速入门(超详细)(Day_33)
    如何在idea中将项目生成API文档(超详细)(Day_32)
    多条件分页 (Day_31)
    常见判断错误 (Day_30)
    HTML 标签隐藏占用空间与不占用空间(Day_29)
    EasyUI_使用datagrid分页 (Day_28)
    (xxx) is not defined at HTMLInputElement.onblur(Day_27)
    EasyUI系列—点击按钮加载tabs_day26
  • 原文地址:https://www.cnblogs.com/rockchen/p/4494589.html
Copyright © 2011-2022 走看看