实例介绍
【实例简介】
【实例截图】
【核心代码】
using System; using System.Collections.Generic; using System.Management; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using System.Windows.Forms; using System.Linq; using Newtonsoft.Json; using ThoughtWorks.QRCode.Codec; using WindowsApplication1; namespace WxPayAPI { public partial class Form1 : Form { public Form1() { InitializeComponent(); //关闭对文本框的非法线程操作检查 System.Windows.Forms.TextBox.CheckForIllegalCrossThreadCalls = false; this.Load = new EventHandler(Form1_Load); } void Form1_Load(object sender, EventArgs e) { comboBox1.Items.Clear(); comboBox1.Items.AddRange(GetBaseAddress().ToArray()); if (comboBox1.Items.Count > 0) { comboBox1.SelectedIndex = 0; } } Thread threadWatch = null; //负责监听客户端的线程 Socket socketWatch = null; //负责监听客户端的套接字 //支付 private void button1_Click(object sender, EventArgs e) { WxPayData result = MicroPay.Run("QQ", "1", textBox1.Text); //刷卡支付直接成功 if (result.GetValue("return_code").ToString() == "SUCCESS" && result.GetValue("result_code").ToString() == "SUCCESS") { MessageBox.Show("支付成功"); } else { MessageBox.Show("支付失败"); } } //查单 private void button2_Click(object sender, EventArgs e) { WxPayData result = OrderQuery.Run(textBox2.Text, ""); MessageBox.Show(result.ToXml()); } //退单 private void button3_Click(object sender, EventArgs e) { WxPayData result = Refund.Run(textBox3.Text, textBox3.Text, "1", "1"); //刷卡支付直接成功 if (result.GetValue("return_code").ToString() == "SUCCESS" && result.GetValue("result_code").ToString() == "SUCCESS") { MessageBox.Show("退款成功"); } else { MessageBox.Show("退款失败"); } } //退单查询 private void button4_Click(object sender, EventArgs e) { WxPayData result = RefundQuery.Run("", "", textBox4.Text, ""); MessageBox.Show(result.ToXml()); } //账单查询 private void button5_Click(object sender, EventArgs e) { WxPayData result = DownloadBill.Run(textBox5.Text, "ALL"); if (result.IsSet("result")) { // MessageBox.Show(result.ToXml()); //解析出来的数据 string[] ar = result.GetValue("result").ToString().Split(new char[] { '\r', '\n' }); string[] dtstr = ar[2].Split(new char[] { ',', '`' }); string str = dtstr[1]; DateTime dt = Convert.ToDateTime(str); //ar[1] = "" //ar[0] "交易时间,公众账号ID,商户号,子商户号,设备号,微信订单号,商户订单号,用户标识,交易类型,交易状态,付款银行,货币种类,总金额,企业红包金额,微信退款单号,商户退款单号,退款金额,企业红包退款金额,退款类型,退款状态,商品名称,商户数据包,手续费,费率" //ar[ar.Length-3]"总交易单数,总交易额,总退款金额,总企业红包退款金额,手续费总金额" } else if (result.IsSet("return_code") && result.IsSet("return_msg")) { MessageBox.Show(result.GetValue("return_code") ":" result.GetValue("return_msg")); } MessageBox.Show(result.ToXml()); } //扫码支付 private void button6_Click(object sender, EventArgs e) { NativePay nativePay = new NativePay(); //生成扫码支付模式二url string url2 = nativePay.GetPayUrl(1, "123456789", "商品名称", "商品标记", "商品描述"); //初始化二维码生成工具 QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(); qrCodeEncoder.QRCodeEncodeMode = QRCodeEncoder.ENCODE_MODE.BYTE; qrCodeEncoder.QRCodeErrorCorrect = QRCodeEncoder.ERROR_CORRECTION.M; qrCodeEncoder.QRCodeVersion = 0; qrCodeEncoder.QRCodeScale = 4; //将字符串生成二维码图片 pictureBox1.Image = qrCodeEncoder.Encode(url2, Encoding.Default); //if (nativePay.GetValue("return_code").ToString() == "SUCCESS" && // nativePay.GetValue("result_code").ToString() == "SUCCESS") //{ // //System.Console.WriteLine("支付成功"); // //result = nativePay.Body; // //MessageBox.Show(result); // MessageBox.Show("支付成功"); //} //else //{ // MessageBox.Show("支付失败"); //} } /****************************************************************************************************************************/ private void button7_Click(object sender, EventArgs e) { //定义一个套接字用于监听客户端发来的信息 包含3个参数(IP4寻址协议,流式连接,TCP协议) socketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); //服务端发送信息 需要1个IP地址和端口号 IPAddress ipaddress = IPAddress.Parse(comboBox1.Text.Trim()); //获取文本框输入的IP地址 //将IP地址和端口号绑定到网络节点endpoint上 IPEndPoint endpoint = new IPEndPoint(ipaddress, int.Parse("5555")); //获取文本框上输入的端口号 //监听绑定的网络节点 socketWatch.Bind(endpoint); //将套接字的监听队列长度限制为20 socketWatch.Listen(20); //创建一个监听线程 threadWatch = new Thread(WatchConnecting); //将窗体线程设置为与后台同步 threadWatch.IsBackground = true; //启动线程 threadWatch.Start(); button7.Enabled = false; } //创建一个负责和客户端通信的套接字 //Socket socConnection = null; /// <summary> /// 监听客户端发来的请求 /// </summary> private void WatchConnecting() { try { while (true) //持续不断监听客户端发来的请求 { socConnection = socketWatch.Accept(); MessageBox.Show("连接成功"); // textBox5.AppendText("\n客户端连接成功" "\n"); // textBox5.AppendText("\n" "" "----------------------------------------------------------------"); //创建一个通信线程 ParameterizedThreadStart pts = new ParameterizedThreadStart(ServerRecMsg); Thread thr = new Thread(pts); thr.IsBackground = true; //启动线程 thr.Start(socConnection); } } catch (Exception) { MessageBox.Show("出错了"); throw; } } /// <summary> /// 接收客户端发来的信息 /// </summary> /// <param name="socketClientPara">客户端套接字对象</param> private void ServerRecMsg(object socketClientPara) { Socket socketServer = socketClientPara as Socket; while (true) { //创建一个内存缓冲区 其大小为1024*1024字节 即1M byte[] arrServerRecMsg = new byte[1024 * 1024]; //将接收到的信息存入到内存缓冲区,并返回其字节数组的长度 int length = socketServer.Receive(arrServerRecMsg); //将机器接受到的字节数组转换为人可以读懂的字符串 string strSRecMsg = Encoding.UTF8.GetString(arrServerRecMsg, 0, length); //如果是json格式则解析,反序列化 if (strSRecMsg.IndexOf("{") != -1) { var payMessage = JsonConvert.DeserializeObject<PayMessage>(strSRecMsg); if (payMessage != null && payMessage.messageText.Contains("扫码")) { string barcode = payMessage.resultData.Split(",".ToCharArray()).LastOrDefault(); textBox1.Text = barcode; } } //将发送的字符串信息附加到文本框txtMsg上 listBox1.Items.Add(strSRecMsg); } } public Socket socConnection { get; set; } /// <summary> /// 获取本机IP地址,如果有多块网卡需要在服务管理器里面选择 /// </summary> /// <returns></returns> protected List<string> GetBaseAddress() { List<string> listIP = new List<string>(); System.Management.ManagementClass mcNetworkAdapterConfig = new System.Management.ManagementClass("Win32_NetworkAdapterConfiguration"); System.Management.ManagementObjectCollection moc_NetworkAdapterConfig = mcNetworkAdapterConfig.GetInstances(); foreach (ManagementObject mo in moc_NetworkAdapterConfig) { string mServiceName = mo["ServiceName"] as string; //过滤非真实的网卡 if (!(bool)mo["IPEnabled"]) { continue; } if (mServiceName.ToLower().Contains("vmnetadapter") || mServiceName.ToLower().Contains("ppoe") || mServiceName.ToLower().Contains("bthpan") || mServiceName.ToLower().Contains("tapvpn") || mServiceName.ToLower().Contains("ndisip") || mServiceName.ToLower().Contains("sinforvnic")) { continue; } string[] mIPAddress = mo["IPAddress"] as string[]; if (mIPAddress != null) { foreach (string ip in mIPAddress) { if (ip != "0.0.0.0" && ip.IndexOf(":") == -1) { listIP.Add(ip); } } } mo.Dispose(); } return listIP; } } public class PayMessage { public string businessCategory { get; set; } public int code { get; set; } public int identityNo { get; set; } public string messageText { get; set; } public string resultData { get; set; } } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论