100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > C# .net 微信扫码Native支付模式二以及成功回调

C# .net 微信扫码Native支付模式二以及成功回调

时间:2021-06-03 19:11:04

相关推荐

C# .net 微信扫码Native支付模式二以及成功回调

1.下载官方工具类

微信官方文档地址

SDK与DEMO下载

2.解压复制 lib,business 文件夹到自己的项
3.后端进行配置

修改 lib=》DemoConfig 基本信息

配置二维码的参数 business=》NativePay.cs3. 返回链接生成二维码返回前端

安装生成二维码的包

ThoughtWorks.QRCode

生成二维码两种方式,流,图片

//示例一public FileResult paymentInformation(){string pay = WxPayAPI.NativePay.GetPayUrl(out_trade_no,productId,total_fee, body, attach, goods_tag);//初始化二维码生成工具QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE;qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M;qrCodeEncoder.QRCodeVersion = 0;qrCodeEncoder.QRCodeScale = 4;//将字符串生成二维码图片 pay接口返回的urlBitmap image = qrCodeEncoder.Encode(pay, Encoding.Default);//保存为PNG到内存流 MemoryStream ms = new MemoryStream();image.Save(ms, ImageFormat.Png);//保存为PNG到内存流return File(ms.ToArray(), "image/png");}

//示例二public void paymentInformation(){string pay = WxPayAPI.NativePay.GetPayUrl(out_trade_no,productId,total_fee, body, attach, goods_tag);//初始化二维码生成工具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(pay, Encoding.Default);//保存为PNG到内存流 MemoryStream ms = new MemoryStream();image.Save(ms, ImageFormat.Png);//输出二维码图片Response.BinaryWrite(ms.GetBuffer());Response.End();}

4.扫码支付回调

public async Task<string> PayNotifyUrl(){try{//接收从微信后台POST过来的数据Stream s = Request.InputStream;byte[] buffer = new byte[Request.InputStream.Length];await s.ReadAsync(buffer, 0, buffer.Length); /string xml = System.Text.Encoding.UTF8.GetString(buffer);XmlDocument xmlDoc = new XmlDocument();xmlDoc.LoadXml(xml);string return_code = xmlDoc.DocumentElement.GetElementsByTagName("return_code")[0].InnerText;string out_trade_no = xmlDoc.DocumentElement.GetElementsByTagName("out_trade_no")[0].InnerText;//商户订单号string transaction_id = xmlDoc.DocumentElement.GetElementsByTagName("transaction_id")[0].InnerText;//微信支付订单号string nonce_str = xmlDoc.DocumentElement.GetElementsByTagName("nonce_str")[0].InnerText;//随机字符串string total_fee = xmlDoc.DocumentElement.GetElementsByTagName("total_fee")[0].InnerText; //金额string attach = xmlDoc.DocumentElement.GetElementsByTagName("attach")[0].InnerText;//业务逻辑 //微信支付成功回调if (return_code.ToUpper() == "SUCCESS"){return "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>";}else{return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[ERROR]]></return_msg></xml>"; //回调失败返回给微信}}catch (Exception){return "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[ERROR]]></return_msg></xml>"; //回调失败返回给微信}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。