网上支付-用于与银行SOCKET通信的程序

原创 2004年04月05日 23:35:00

/* written by Jaron(贾俊) ,2003-11-04 */
/* 原出处:B/S WEB技术中文网 http://www.jaron.cn ;*/
/* 欢迎访问我的网站: http://www.jaron.cn  http://blog.jaron.cn*/
/* 如对本文有疑问,请在网站留言 /*
/* 转载请注明出处和保留此版权信息 */
/* 欢迎使用SiteManager网站管理系统 http://sitemanager.cnzone.net http://demo.jaron.cn ; */

// class1.cs

using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
namespace yzstudysrv
{
?///
?/// Class1 的摘要说明。
?///
?class Class1
?{
??///
??/// 应用程序的主入口点。
??///
??///

??private const int portnum=11000;
??????? private const string socketserver_address="192.168.1.223";
??[STAThread]
??static void Main(string[] args)
??{
???//
???//
???// TODO: 在此处添加代码以启动应用程序
???bool done=false;
???TcpListener listener=new TcpListener(IPAddress.Parse(socketserver_address),portnum);
???
???//TcpListener listener=new TcpListener(portnum);
???string sendbuff="999000";
???sqlaccess cszj;
???byte[] sbuff;
???while(!done)
???{
????listener.Start();
????Console.WriteLine("waiting");
????//TcpClient client=listener.AcceptTcpClient();
????TcpClient client=listener.AcceptTcpClient();
????Console.WriteLine("connected");
????NetworkStream ns=client.GetStream();
????byte[] sbytes=new byte[client.ReceiveBufferSize];
????ns.Read(sbytes,0,(int)client.ReceiveBufferSize);
????string rec=Encoding.Unicode.GetString(sbytes);
???????????????? Console.WriteLine(rec);
????if(Convert.ToInt32(rec.Substring(0,3))!=rec.Length)
?????sbuff=Encoding.Unicode.GetBytes("888111");//包长不对
????
????else
????{
???
????
?????cszj=new sqlaccess();
?????if(rec.Substring(3,3)=="001")//查询
?????{
??????cszj.getquer(rec,sendbuff);
??????sbuff=Encoding.Unicode.GetBytes(sendbuff);
?????}

???
?????else
??????if(rec.Substring(3,3)=="002")//交费
?????{
??????cszj.getjfpack(rec,sendbuff);
??????sbuff=Encoding.Unicode.GetBytes(sendbuff);
?????}//hc
?????else
??????if(rec.Substring(3,3)=="003")//冲帐
?????{
??????cszj.getczpack(rec,sendbuff);
?????
??????sbuff=Encoding.Unicode.GetBytes(sendbuff);
?????}
?????else
??????sbuff=Encoding.Unicode.GetBytes("999000");//出错
????}
????try
????{
?????ns.Write(sbuff,0,sbuff.Length);
?????ns.Close();
?????client.Close();
????}
????catch (Exception er)
????{

?????Console.WriteLine(er.ToString());
????}


???????????
????listener.Stop();
????//
???}
??}
?}
}

//sqlaccess.cs

using System;
using System.ComponentModel;
using System.Collections;
using System.Diagnostics;
using System.Data.SqlClient;
//using System.Data.
//using System.Data.SqlClient.SqlTransaction;

namespace yzstudysrv
{
?///
?/// sqlaccess 的摘要说明。
?///
?public class sqlaccess : System.ComponentModel.Component
?{
??private System.Data.SqlClient.SqlConnection sqlConnection1;
??private System.Data.SqlClient.SqlCommand sqlCommand1;
??private System.Data.SqlClient.SqlDataReader myreader;
??
??///
??/// 必需的设计器变量。
??///
??private System.ComponentModel.Container components = null;

??
??public sqlaccess(System.ComponentModel.IContainer container)
??{
???///
???/// Windows.Forms 类撰写设计器支持所必需的
???///
???container.Add(this);
???InitializeComponent();

???//
???// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
???//
??}

??public sqlaccess()
??{
???///
???/// Windows.Forms 类撰写设计器支持所必需的
???///
???InitializeComponent();

???//
???// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
???//
??}

??///
??/// 清理所有正在使用的资源。
??///
??protected override void Dispose( bool disposing )
??{
???if( disposing )
???{
????if(components != null)
????{
?????components.Dispose();
????}
???}
???base.Dispose( disposing );
??}


??#region 组件设计器生成的代码
??///
??/// 设计器支持所需的方法 - 不要使用代码编辑器修改
??/// 此方法的内容。
??///
??private void InitializeComponent()
??{
???this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
???this.sqlCommand1 = new System.Data.SqlClient.SqlCommand();
???//
???// sqlConnection1
???//
???this.sqlConnection1.ConnectionString = "workstation id=/"BOCYZ-LYQ/";packet size=4096;user id=sa;data source=DB;persist sec" +
????"urity info=False;initial catalog=YCEDU";
???this.sqlConnection1.InfoMessage += new System.Data.SqlClient.SqlInfoMessageEventHandler(this.sqlConnection1_InfoMessage);
???//
???// sqlCommand1
???//
???this.sqlCommand1.Connection = this.sqlConnection1;

??}
??#endregion
??//取查询信息
??public void getquer(string recbuff, string sndbuff)
??{
???string billid=recbuff.Substring(61,16);
???string ordertotal,flag,name;
???this.sqlConnection1.Open();//打开连接
??????
???SqlTransaction myTrans;
???// Start a local transaction
???myTrans =sqlConnection1.BeginTransaction(IsolationLevel.ReadCommitted,"sqlTransaction");
???// Must assign both transaction object and connection
???// to Command object for a pending local transaction
???sqlcommand1.Connection = sqlConnection1;
???sqlCommand1.Transaction = myTrans;
???try
???{
????this.sqlCommand1.CommandText="select name, OrderTotal,DeductResaultSymbol from tblOrderExpenses where Billid='"+billid+"'";
????myreader=this.sqlCommand1.ExecuteReader();
????myTrans.Commit();
???}?
???catch(Exception e)
???{
????try
????{
?????myTrans.Rollback("sqlTransaction");
????}
????catch (SqlException ex)
????{
?????if (myTrans.Connection != null)
?????{
??????Console.WriteLine("An exception of type " + ex.GetType() +
???????" was encountered while attempting to roll back the transaction.");
?????}
????}
???
????Console.WriteLine("An exception of type " + e.GetType() +
?????" was encountered while inserting the data.");
????Console.WriteLine("Neither record was written to database.");
???}
???finally
???{
????sqlConnection1.Close();
???}
??}

//??if(myreader.Read())
//???{
//????name=myreader["name"].ToString();
//????ordertotal=myreader["ordertotal"].ToString();
//????flag=myreader["DeductResaultSymbol"].ToString();
//????sndbuff=recbuff.Substring(0,61)+strpack(name,10)+strpack(ordertotal,7)+flag;
//???}
//???else
//?????? sndbuff="999000";
//????myreader.Close();
//????this.sqlConnection1.Close();
//??
??//democode
??public void RunSqlTransaction(string myConnString)
??{
???SqlConnection myConnection = new SqlConnection(myConnString);
???myConnection.Open();//打开连接

???SqlCommand myCommand = myConnection.CreateCommand();
???SqlTransaction myTrans;

???// Start a local transaction
???myTrans = myConnection.BeginTransaction(IsolationLevel.ReadCommitted,"SampleTransaction");
???// Must assign both transaction object and connection
???// to Command object for a pending local transaction
???myCommand.Connection = myConnection;
???myCommand.Transaction = myTrans;

???try
???{
????myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')";
????myCommand.ExecuteNonQuery();
????myCommand.CommandText = "Insert into Region (RegionID, RegionDescription) VALUES (101, 'Description')";
????myCommand.ExecuteNonQuery();
????myTrans.Commit();
????Console.WriteLine("Both records are written to database.");
???}
???catch(Exception e)
???{
????try
????{
?????myTrans.Rollback("SampleTransaction");
????}
????catch (SqlException ex)
????{
?????if (myTrans.Connection != null)
?????{
??????Console.WriteLine("An exception of type " + ex.GetType() +
???????" was encountered while attempting to roll back the transaction.");
?????}
????}
???
????Console.WriteLine("An exception of type " + e.GetType() +
?????" was encountered while inserting the data.");
????Console.WriteLine("Neither record was written to database.");
???}
???finally
???{
????myConnection.Close();
???}
??}

??????? //冲帐
??public void getczpack(string recbuff, string sndbuff)
??{
???string billid=recbuff.Substring(61,16);
???string bankwater=recbuff.Substring(77,16);
???
???this.sqlConnection1.Open();
???this.sqlCommand1.CommandText ="update tblOrderExpenses set DeductResaultSymbol='2' where Billid='"+billid+"'and DeductResaultSymbol='2'"
????+" and bankwater='"+bankwater+"'";
???int k=0;
???k=this.sqlCommand1.ExecuteNonQuery();
???if(k==1)
??
????sndbuff=recbuff.Substring(0,61)+"0";
???
???else
????sndbuff="999000";
???
???this.sqlConnection1.Close();
??
??}
??//交费
??public void getjfpack(string recbuff, string sndbuff)
??{
???string billid=recbuff.Substring(61,16);
???string accno=recbuff.Substring(77,19);
???string amt=recbuff.Substring(96,7);
???string cbflag=recbuff.Substring(103,1);
???string bankid=recbuff.Substring(10,3);
???string sbranchno=recbuff.Substring(13,10);
???string DTdeduct=DateTime.Now.ToString("yyyyMMdd");
???string AreaId="0514";
???string bankwater=recbuff.Substring(45,16);
???int k=0;
???
???this.sqlConnection1.Open();
???this.sqlCommand1.CommandText ="update tblOrderExpenses set BankId='"+bankid+"', ServiceStationId='"
????+sbranchno+"',DTdeduct='"+DTdeduct+"',AreaID='"+AreaId+"',DeductResaultSymbol='1',BargainerSymbol='"
????+cbflag+"',bankwater='"+bankwater+"' where Billid='"+billid+"' and OrderTotal='"+amt+"' and DeductResaultSymbol = '0'";
???k=this.sqlCommand1.ExecuteNonQuery();
???if(k==1)
????? sndbuff=recbuff.Substring(0,61)+"0";
???else
????sndbuff="999000";
???
???this.sqlConnection1.Close();
??
??}
??//字符串补位函数
?
??public string strpack(string tmp,int length)
??{
??????????????????????????????????????????
???string atmp;
???int k=0;
???int t=0;
???for(int i=0;i???{??
????if(tmp[i]>0x255)
????{
?????k++;
?????t++;
????}
????t++;
????if(t>length)
?????break;
???}
???int alen=tmp.Length+k;
???if(alen??????????????????
???{
????atmp=new String(' ',length-alen);
??
????return tmp+atmp;
??
???????
???}
???else
???
????return tmp.Substring(0,length-k);
??????????
?????
??

??}

??private void sqlConnection1_InfoMessage(object sender, System.Data.SqlClient.SqlInfoMessageEventArgs e)
??{
??
??}
??


?}
}
(本文是直接从VS.net贴出的,自行删除前面的??)

Java-SSH2-网上银行交易系统

Java SSH2开发的网上银行交易系统语言:Java 框架:使用ssh2(spring3-struts2-hibernate4)框架开发的网上银行系统 功能: 用户角色包括管理员和普通用户两种,...
  • u012829611
  • u012829611
  • 2017年07月31日 20:43
  • 242

中国银行支付接口(ecshop版)

中国银行的支付接口只提供有java版,众所周之ecshop是采用php开发的,这让我们如何用php开发java的东东呢?办法始终是有的,我们可以先在ecshop里用php生成订单,提交给nginx,n...
  • mypcstyle
  • mypcstyle
  • 2014年07月07日 14:21
  • 5236

第三方支付原理与概述

前两天下班和同事一起去车站坐公交车,路上聊了会儿第三方支付的问题,他是做我们产品的第三方支付的,所以对这块也比较清楚,通过他的简单讲解,我基本明白了第三方支付的原理,特在此记录。 目前有很很多第...
  • wnety
  • wnety
  • 2012年08月01日 10:21
  • 9677

第三方支付网银支付流程

网银交互流程 流程描述 1. 客户在商户下单购买商品,点击立即购买。 2. 从购买页面跳转到支付收银台页面。 3. 选择xx网银支付。下面是跳转中后台系统做的事情 ↓ 4. 商户后台组装fo...
  • code_soul
  • code_soul
  • 2016年08月05日 17:02
  • 1585

图片压缩,Socket发送。精华,通过本人调试

【 bitmap压缩,直接得到byte【】数据 】 /** * @Time 2015.08.08 Suinday 16:42 * @author zgx * eg: maxS...
  • zgxzgxzg
  • zgxzgxzg
  • 2015年08月09日 17:06
  • 359

各银行网上支付接口 开通流程及所需材料 中、农、建、工

银行支付接口开通流程: 建设银行: 商户在建设网银系统开户流程: 1、申请材料: (1)营业执照复印件 (2)组织结构代码证复印件 (3)法人代表身份证复印件 2、商户与建设银行签定协议...
  • u011955072
  • u011955072
  • 2015年05月13日 00:17
  • 6643

四大行、城商行等银行都在使用什么数据库?

作者:老鱼,资深媒体人,专注IT技术领域动态!有爆料!有干货!有游记! 原文出自:http://mp.weixin.qq.com/s/7qujkM1kDEst7SZRhhhuAg ...
  • n88Lpo
  • n88Lpo
  • 2017年10月29日 00:00
  • 711

我自己完成的第一个JAVA小程序——银行业务调度系统Version1.0

学习java一个月了,最近两天看了张孝祥老师讲解的银行业务系统需求分析,完成了自己的第一个java小程序。需求分析如下:       分析与设计:结合实际在银行办理业务的背景可以知道,本系统...
  • zhao708981169
  • zhao708981169
  • 2014年12月21日 20:04
  • 422

MFC和Flash的Socket通信之Flash

      笔者所用的flash版本为Adobe Flash CS4 Professional,如果有的读者所用的版本不是该版本而引起的调试错误,可以自己尝试修改。大胆猜测,版本之间的差距不是很多,出...
  • yeqiu712
  • yeqiu712
  • 2010年09月15日 12:31
  • 2245

为什么银行不用oracle而用db2?

一来银行购买的设备都是IBM的,IBM设备用的数据库就是db2二来db2采用3级封锁机制,只有在对一个表进行读或写的事务执行完之后才能读,而oracle则遵从的是一级封锁协议,比较宽松,所以支持别人写...
  • lianruidong
  • lianruidong
  • 2010年07月26日 16:28
  • 3384
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:网上支付-用于与银行SOCKET通信的程序
举报原因:
原因补充:

(最多只允许输入30个字)