業務流程:
商戶后台系統調用微信支付統一下單生成預付交易,將接口返回的鏈接生成二維碼,用戶掃碼后輸入密碼完成支付交易。注意:該模式的預付單有效期為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); }
