微信支付-原生支付(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);
        }

 

转载于:https://www.cnblogs.com/rockchen/p/4494589.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值