先上后台代码:
/** * 生成直接支付url,支付url有效期为2小时,模式二 * @param productId 商品ID * @return 模式二URL */ public ActionResult GetPayUrl() { //参数 WxPayData data = new WxPayData(); data.SetValue("body", “test”);//商品描述 data.SetValue("attach", "");//附加数据 data.SetValue("out_trade_no", WxPayApi.GenerateOutTradeNo());//随机字符串 data.SetValue("total_fee", 100);//总金额 data.SetValue("time_start", DateTime.Now.ToString("yyyyMMddHHmmss"));//交易起始时间 data.SetValue("time_expire", DateTime.Now.AddMinutes(10).ToString("yyyyMMddHHmmss"));//交易结束时间 data.SetValue("goods_tag", "");//商品标记 data.SetValue("trade_type", "NATIVE");//交易类型 data.SetValue("product_id", "1234");//商品ID WxPayData result = WxPayApi.UnifiedOrder(data);//调用统一下单接口 string url = result.GetValue("code_url").ToString();//获得统一下单接口返回的二维码链接 var jsonData = new { url = HttpUtility.UrlEncode(url) }; return Success(jsonData); } //将url转换为二维码图片 public void CodeConversionTool(string str) { //初始化二维码生成工具 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; qrCodeEncoder.QRCodeVersion = 0; qrCodeEncoder.QRCodeScale = 4; //将字符串生成二维码图片 Bitmap image = qrCodeEncoder.Encode(str, Encoding.Default); //保存为PNG到内存流 MemoryStream ms = new MemoryStream(); image.Save(ms, ImageFormat.Png); //输出二维码图片 Response.BinaryWrite(ms.GetBuffer()); Response.End(); }
前台代码:
$.lrSetForm(top.$.rootUrl + 'Test/GetPayUrl',function (data) { $("#img").attr("src",top.$.rootUrl + '/Test/CodeConversionTool?str=' + data.url); });
回调方法:
public string WxPayNotify() { WePayReturnModel payResult = new WePayReturnModel(); HttpContextBase context = (HttpContextBase)Request.Properties["MS_HttpContext"];//获取传统context HttpRequestBase request = context.Request;//定义传统request对象 bool result = VerifyNotify(request, out payResult); if (result) { //业务代码 ///////////////////////// ///////////////////////// //如果成功,告知微信不用再调用回调方法 WxPayData res = new WxPayData(); res.SetValue("transaction_id", payResult.TradeNo); res.SetValue("return_code", "SUCCESS"); res.SetValue("return_msg", "OK"); return res.ToXml(); } else { return "fail"; } }
总结
您可能感兴趣的文章: