想在手机上如何申请贷款点贷款 但是要求导入网银账单 意思是不是指导入银行流水啊 怎么导入呢 请指点一下

查看: 70238|回复: 18
网上银行打印的电子回单可以作为正式凭证入账吗?
聚焦有效预算管理
3位导师9大主题2个月在线互动
90%核算工作饭碗不保
2000万财务人何去何从?
七折考取CMA,投资未来的正确方式!
CMA获得政府及各大企业集团一致推荐
如题,因为开通了网银,并且开通了自助打印回单功能,银行不再提供业务单据,企业自己在网上银行打印电子回单,回单上面有银行的电子回单专用章(黑色的),但是回单没有去银行敲红色的业务专用章,请问:这样的单据可以作为正式凭证入账吗?税务上有没有问题?
网银打印的电子回单说服力不强,还是要到银行取回单。税务一般还是认盖宣章的回单
可以做为原始凭证,上面有一串的验证码和电子章,不过最好去银行拿有盖章的回单。
一般银行对电子回单是这样说明的:电子回单不但记载了客户收、付款交易的详细信息,还加盖了专门的银行“电子回单章”,并标注了特殊的电子回单验证码以确保电子回单的真实性、可靠性、唯一性以及可认证性。
我行公司网上银行的电子回单仅供客户参考,不作为收款方的发货依据。银行柜面仍将提供纸质的业务回单,已从银行柜台领取纸质业务回单的客户,需注意核对,勿重复记账。
《电子签名法》规定,电子签名是指数据电文中以电子形式所含、所附用于识别签名人身份并表明签名人认可其中内容的数据。除涉及婚姻、收养、继承等人身关系,土地、房屋等不动产权益转让,停止供水、供热、供气、供电等公用事业服务或法律、行政法规规定不适用电子文书的其他情形的,均可使用电子签名。
个人认为网上银行打印的电子回单如果不属于电子签名法中所说的法律、行政法规规定不适用电子文书的其他情形的情况,且得到税务部门的认可,才可以作为正式凭证。当然如果银行不提供书面回单的情况下,不使用电子回单也是不行的,银行敢这样做,说明符合了电子签名法规定。
<p id="rate_557" onmouseover="showTip(this)" tip="有理有据!感谢!&威望 + 2
" class="mtn mbn">
一般银行对电子回单是这样说明的:电子回单不但记载了客户收、付款交易的详细信息,还加盖了专门的银行“电 ...
网银打印的电子回单说服力不强,还是要到银行取回单。税务一般还是认盖宣章的回单
现在的问题是:企业开通了网银自助打印回单功能以后,银行柜台不再提供纸质回单。这是银行的答复。不知道是不是有这样的规定?在我们这个地方,越来越多的银行开始实行这样的方法,有的企业即使没有开通网银自助打印功能,柜台也不再提供,企业自己去银行自助打印机器上面打印回单。
<p id="rate_0357" onmouseover="showTip(this)" tip="感谢分享&金币 + 2
" class="mtn mbn">
一般银行对电子回单是这样说明的:电子回单不但记载了客户收、付款交易的详细信息,还加盖了专门的银行“电 ...
相信以后电子回单会逐渐得到认可,在目前状态下还是建议采用保守作法。
现在的问题是:企业开通了网银自助打印回单功能以后,银行柜台不再提供纸质回单。这是银行的答复。不知道 ...
用银行盖章的回单打网上下载的盖章的电子凭证怎么打印呢,建设银行的盖章的是三等分的
当然可以。上市公司都是这样操作的,事务所也没提出异议。只要业务是真实的,就不怕查。
可以。税务可以去税务局问一下。
我认为可以,渣打银行都已经取消纸质回单了,以后电子账单也是趋势吧。
应该可以,但是为了保险起见还是到银行去打印回单
应该可以,但是为了保险起见还是到银行去打印回单
看来问题的关键是:税务局认不认电子回单。希望税务局尽快明确,以跟上时代的进步。
网银打印的电子回单说服力不强,还是要到银行取回单。税务一般还是认盖宣章的回单
但是现在好多银行都是电子章
当然可以。上市公司都是这样操作的,事务所也没提出异议。只要业务是真实的,就不怕查。
内控方面需要注意哪些?、
当然可以。上市公司都是这样操作的,事务所也没提出异议。只要业务是真实的,就不怕查。
内控方面需要注意哪些?、
内控方面需要注意哪些?、
我觉得银行打印的回单与网银打印的电子回单本质上没有区别 ,因此 ,在内控上无需区别对待。而且,我觉得伪造电子回单比伪造银行回单更容易。
站长推荐 /1
3位各行各业经历丰富的嘉宾主导,9大实务中总结出来的主题,2个月的至少9次线上直播、答疑,更重要的是专属助教实时跟进的小班制小班制小班制,择时的(上海)线下活动。不仅系统掌握预算管理知识,更能在学习中结识诸多共好的会计人。
Powered by查看: 42057|回复: 27
中国建设银行接口使用详细说明
TA的每日心情开心昨天&08:20签到天数: 349 天[LV.8]以坛为家I
接口介绍 本文章只是技术交流,如有用于其它与我无关哦
& && &建行的接口相对于支付宝,Q业务充值和移动,联通,电信,缴费接口要复杂一些,接口分为两块,一块是商户到银行,另外一块是银行到商户
商户到银行
& && &交易流程如下:
网上支付业务流程步骤说明:
cbb1.jpg (20.93 KB, 下载次数: 537)
19:31 上传
1) 客户登录商户网站,选择商户网站商品。2) 客户将选好的商品放入购物车,并下订单。商户提供商户代码、订单号、合计金额等信息;3) 客户选择代理付款的银行-建行,确认后,商户代码、订单信息、合计金额通过浏览器URL传到建行网上银行站点;网上银行自动显示支付页面,客户首先选择是否使用建行证书,然后输入龙卡号和密码,选择“确定”。支付信息经加密后传送到网银中心;4) 网银中心接收客户支付信息,转发到银行后台业务处理系统;5) 银行后台业务系统处理后,返回处理结果给网银;6) 网银通知客户支付(扣帐)是否成功。如果扣帐成功,提示客户注意接收商户返回的送货信息;对于不需要立即响应的商户,跳过步骤7、8;7) 对于需要立即响应的商户,如果支付成功,网银将成功结果反馈给商户。若支付失败,不返回给商户信息8) 对于需要立即响应的商户,收到银行扣帐成功的通知后,发给客户送货信息。如客户收到银行支付(扣帐)成功通知(步骤6),但未收到商户送货信息,则需向商户查询。日终时,商户与开设结算帐户的建设银行(网银成员行)进行流水核对,对已支付但未得到商户确认的交易进行退款处理。
商户到银行
& & 其实这一步是把自己卡里的钱转到商户的帐上,就是转账,
代码实现其实很简单,我们先来分析一上要传的参考吧
个人客户在商户网站选择商品后,商户网站生成以下信息,传送到建行网站: 域名名称类型备注MERCHANTID商户代码CHAR(9)由建行统一分配POSID商户柜台代码CHAR(9)由建行统一分配,缺省为BRANCHID分行代码CHAR(9)由建行统一指定ORDERID定单号CHAR(30)由商户提供,最长30位,按实际长度给出PAYMENT付款金额NUMBER(16,2)由商户提供,按实际金额给出CURCODE币种CHAR(2)缺省为01-人民币REMARK1备注1CHAR(30)网银不处理,直接传到城综网REMARK2备注2CHAR(30)网银不处理,直接传到城综网TXCODE交易码CHAR(6)由建行统一分配为520100MACMAC校验域CHAR(32)采用标准MD5算法,由商户实现注:商户要保证定单号的唯一性。为了加快站点间接口开发,站点间接口的参数传送采用普通的URL方式,商户将以上信息包含在FORM中,在SUBMIT后将生成URL,如下所示:&TXCODE=520100&REMARK1=&REMARK2=&MAC=qwertyuioplkjhgfdsazxcvbnm901234 参与MAC运算的字符及其顺序如下:MERCHANTID=&POSID=&BRANCHID=&ORDERID=&PAYMENT=500.00&CURCODE=01&TXCODE=520100&REMARK1=&REMARK2=注:字符串中变量名必须是大写字母。& && && &&&这是建行文档说的说明,很明显这是使用Http的方式来实现的
下面我们动手来实现 一下吧,
我是把所有的参数生成了一个实体类这样方便,而且规范化,
来看看这个Model吧
[C#] 纯文本查看 复制代码using S
using System.Collections.G
using System.L
using System.T
namespace ClientSystem.AliPay
/// &summary&
/// 建行传入参数
/// &/summary&
public class CBBTextModel
private string _MERCHANTID = &&;
/// &summary&
/// 商户代码 由建行统一分配
/// &/summary&
public string MERCHANTID
get { return _MERCHANTID; }
set { _MERCHANTID = }
private string _POSID = &&;
/// &summary&
/// 商户柜台代码
由建行统一分配,缺省为
/// &/summary&
public string POSID
get { return _POSID; }
set { _POSID = }
private string _BRANCHID = &&;
/// &summary&
/// 分行代码
由建行统一指定
/// &/summary&
public string BRANCHID
get { return _BRANCHID; }
set { _BRANCHID = }
private string _ORDERID = &&;
/// &summary&
/// 定单号 由商户提供,最长30位,按实际长度给出
/// &/summary&
public string ORDERID
get { return _ORDERID; }
set { _ORDERID = }
private decimal _PAYMENT = 0m;
/// &summary&
/// 付款金额
由商户提供,按实际金额给出
/// &/summary&
public decimal PAYMENT
get { return _PAYMENT; }
set { _PAYMENT = }
private string _CURCODE = &&;
/// &summary&
/// 币种 缺省为01-人民币
/// &/summary&
public string CURCODE
get { return _CURCODE; }
set { _CURCODE = }
private string REMARK1 = &&;
/// &summary&
网银不处理,直接传到城综网
/// &/summary&
public string REMARK11
get { return REMARK1; }
set { REMARK1 = }
private string REMARK2 = &&;
/// &summary&
网银不处理,直接传到城综网
/// &/summary&
public string REMARK21
get { return REMARK2; }
set { REMARK2 = }
private string _TXCODE = &&;
/// &summary&
/// 交易码
由建行统一分配为520100
/// &/summary&
public string TXCODE
get { return _TXCODE; }
set { _TXCODE = }
private string _MAC = &&;
/// &summary&
/// MAC校验域
采用标准MD5算法,由商户实现
/// &/summary&
public string MAC
get { return _MAC; }
set { _MAC = }
private string _url = &&;
/// &summary&
/// &/summary&
public string Url
get { return _ }
set { _url = }
我们来准备两个方法吧,一个是Http连接来使用的一个是Md5加密,因为在文档里写到要使用Md5加密哦
[C#] 纯文本查看 复制代码#region //预定义方法或是变量
/// &summary&
/// 请求指定 URL 资源,并获取响应结果
/// &/summary&
/// &param name=&url&&需要请求的 URL 资源&/param&
/// &returns&
/// 响应结果;
/// 出现任意异常,均返回字串&Runtime Error&
/// &/returns&
private string RequestContent(string url)
string content = string.E
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive =
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.Default);
content = reader.ReadToEnd();
reader.Close();
catch (Exception)
content = &Runtime Error&;
/// &summary&
/// 传入明文,返回用MD%加密后的字符串
/// &/summary&
/// &param name=&str&&要加密的字符串&/param&
/// &returns&用MD5加密后的字符串&/returns&
public static string ToMD5(string str)
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, &md5&);
#endregion
看一下充值按钮下面实现吧
[C#] 纯文本查看 复制代码 if (textBox1.Text.Trim() == && || textBox1.Text.Trim() == null)
MessageBoxForm objm = new MessageBoxForm(&您输入的金额不能为空!!!&, &提示信息&);
objm.ShowDialog();
string orid = OfficeInfo.ofId.ToString().Trim() + &_& + DateTime.Now.Ticks.ToString();
Alipay objalipay = new Alipay();
objalipay.APID =
objalipay.addTime = DateTime.N
objalipay.total_fee = Convert.ToDecimal(textBox1.Text.ToString().Trim());
objalipay.trade_status = &客户端提交&;
objalipay.Text1 = DateTime.Now.ToString();
objalipay.Text2 = &建行接口&;
objalipay.Text3 = &&;
objalipay.Text4 = &&;
objalipay.Text5 = &&;
decimal money = Convert.ToDecimal(user.GetListBy(OfficeInfo.ofPara1, 13).ToString().Trim());
if (money & Convert.ToDecimal(textBox1.Text.Trim()))
MessageBoxForm objm = new MessageBoxForm(&你输入的最小金额不能低于& + money + &元!!!&, &提示信息&);
objm.ShowDialog();
if (user.AddAlipay(OfficeInfo.ofPara1, objalipay))
CBBTextModel objcbbText = new CBBTextModel();
//商户代码 由建行统一分配
objcbbText.MERCHANTID = &00&;
//商户柜台代码
由建行统一分配,缺省为
objcbbText.POSID = &00&;
//分行代码
由建行统一指定
objcbbText.BRANCHID = &00&;
// 定单号 由商户提供,最长30位,按实际长度给出
objcbbText.ORDERID = orid.Trim();
//付款金额
由商户提供,按实际金额给出
objcbbText.PAYMENT = Convert.ToDecimal(textBox1.Text.Trim());
//币种 缺省为01-人民币
objcbbText.CURCODE = &01&;
网银不处理,直接传到城综网
objcbbText.REMARK11 = &&;
网银不处理,直接传到城综网
objcbbText.REMARK21 = &&;
由建行统一分配为520100
objcbbText.TXCODE = &520100&;
//MAC校验域
采用标准MD5算法,由商户实现
objcbbText.MAC = &qwertyuioplkjhgfdsazxcvbnm901234&;
objcbbText.Url = &.cn/app/ccbMain&;
//要加密的串
string canshu = &MERCHANTID=& + objcbbText.MERCHANTID.Trim() +
&&POSID=& + objcbbText.POSID.Trim() + &&BRANCHID=& + objcbbText.BRANCHID.Trim()
+ &&ORDERID=& + objcbbText.ORDERID.Trim() + &&PAYMENT=& + objcbbText.PAYMENT.ToString().Trim()
+ &&CURCODE=& + objcbbText.CURCODE + &&TXCODE=& + objcbbText.TXCODE.Trim()
+ &&REMARK1=&REMARK2=&;
objcbbText.MAC = ToMD5(canshu.Trim()).ToLower().Trim();
string strURl = objcbbText.Url + &?& + canshu + &&MAC=& + objcbbText.MAC.Trim();
webBrowser1.Url = new Uri(strURl.Trim());
在这里大家一定要注意把 objcbbText.MAC = ToMD5(canshu.Trim()).ToLower().Trim();
加密后的字符串改成小写的
上面所提到的
[C#] 纯文本查看 复制代码string orid = OfficeInfo.ofId.ToString().Trim() + &_& + DateTime.Now.Ticks.ToString();
Alipay objalipay = new Alipay();
objalipay.APID =
objalipay.addTime = DateTime.N
objalipay.total_fee = Convert.ToDecimal(textBox1.Text.ToString().Trim());
objalipay.trade_status = &客户端提交&;
objalipay.Text1 = DateTime.Now.ToString();
objalipay.Text2 = &建行接口&;
objalipay.Text3 = &&;
objalipay.Text4 = &&;
objalipay.Text5 = &&;
decimal money = Convert.ToDecimal(user.GetListBy(OfficeInfo.ofPara1, 13).ToString().Trim());
if (money & Convert.ToDecimal(textBox1.Text.Trim()))
MessageBoxForm objm = new MessageBoxForm(&你输入的最小金额不能低于& + money + &元!!!&, &提示信息&);
objm.ShowDialog();
这一部分代码是记录日志的,大家可以参考一下
我们现在只要运行程序就会出现如下界面所显示的内容
QQ截图51.png (364.79 KB, 下载次数: 505)
19:25 上传
下面的操作就是输入你的卡号密码就可以了,
转账成功后我们这一步的工作就算是做完了
银行到商户
接下来的这一步 是很关键的一步,是当我们转账成功后,银行发给我们系统的一个处理结束,里面的参数如下
建行网站生成以下信息,传送到商户网站: 域名名称类型备注POSID商户柜台代码CHAR(9)从商户传送的信息中获得BRANCHID分行代码CHAR(9)从商户传送的信息中获得ORDERID定单号CHAR(30)从商户传送的信息中获得PAYMENT付款金额NUMBER(16,2)从商户传送的信息中获得CURCODE币种CHAR(2)从商户传送的信息中获得REMARK1备注一CHAR(30)从商户传送的信息中获得REMARK2备注二CHAR(30)从商户传送的信息中获得SUCCESS成功标志CHAR(1)成功时返回YSIGN数字签名CHAR(256)
站点间接口的参数传送仍然采用普通的URL方式,信息包含在CGI参数,具体如下所示:HTTP://MERCHANT.WEB.SITE/MERCHANT_CGI?POSID=&BRANCHID=&ORDERID=&PAYMENT=500.00&CURCODE=01&REMARK1=&REMARK2=merchantname&SUCCESS=Y&SIGN=4b3efd969aca3e6caa44c1a072f496d7f0d4bca0bede37ccec787eb39e18bfbadfbb0f4a3fb430b32ed4c38a0ac52ef46a0ad33dec3fbfc9e65efc7ffca3c828967bec42 注:?前的URL由商户在签约时提供 参与签名运算的字符及其顺序如下POSID=&BRANCHID=&ORDERID=&PAYMENT=500.00&CURCODE=01&REMARK1=&REMARK2=merchantname&SUCCESS=Y注:字符串中变量名必须是大写字母。 如果商户的程序将MERCHANTID, POSID,BRANCHID, ORDERID, PAYMENT, CURCODE,TXCODE和MAC作为隐藏域(hidden),然后使用SUBMIT按纽,注意在 FORM的METHOD中使用“GET”的方式。& && && &在这里我们首先要新建一个Asp.net的网站,只要在一个网页下面书写代码就成了。
第一步我们要写出来要加密 的串
[C#] 纯文本查看 复制代码string canshu = &POSID=&BRANCHID=0000000&ORDERID=& + Request.QueryString[&ORDERID&].Trim() + &&PAYMENT=& +
Request.QueryString[&PAYMENT&].Trim() + &&CURCODE=& + Request.QueryString[&CURCODE&].Trim() + &&REMARK1=& + Request.QueryString[&REMARK1&].Trim()
+ &&REMARK2=& + Request.QueryString[&REMARK2&].Trim() + &&ACC_TYPE=& + Request.QueryString[&ACC_TYPE&].Trim()
+ &&SUCCESS=& + Request.QueryString[&SUCCESS&].Trim();
这是在我们接收数据时要用到的,
这里建行提供了一个加密验证为
银行将客户支付信息实时通知给商户时,使用的数字签名算法是MD5withRSA算法。商户验证签名的公钥在商户在网银系统开户,获取数字证书后,登录到网银系统中,通过下载公钥交易获取。 商户获取的公钥用X.509格式表示,并且将其按照每4位(bit)转换为一个16进制数的方式表示,产生16进制的字符串。 网上银行使用标准MD5withRSA算法对给商户的响应进行签名,产生1024位(bit)的签名结果,并且将其按照每4位(bit)转换为一个16进制数的方式表示,形成16进制的字符串,长度为256。 下面是对签名结果的表示方式的描述:1、对1024位的交易结果按4位为一个单位进行划分,共获得256段2、将每段看成一个16进制数,如0011为0X3,1101为0Xd。3、将这个数映射到ASCII码表,形成相应的字符,如0X2为“2”,0Xd为“d”。4、将这些字符连成一个字符串,长度为256。 例如:待签名的字符串为:POSID=&BRANCHID=&ORDERID=&PAYMENT=500.00&CURCODE=01&REMARK1=&REMARK2=merchantname&SUCCESS=Y签名结果为:4b3efd969aca3e6caa44c1a072f496d7f0d4bca0bede37ccec787eb39e18b7596a724fbadfbb0f4a3fb430b32ed4c38a0ac52ef46a0ad33dec3fbfc9e65efc7ffca9222f8cd693c828967bec42 当商户收到银行传来的CGI串后,从中获取签名(格式如上)和需签名的原文。商户端程序(商户自行开发MD5withRSA签名校验程序)将签名和商户端的公钥转换成二进制格式,与签名的原文一起对签名的正确性进行校验,校验步骤如下:1)& && &使用公钥进行签名的逆运算2)& && &使用标准MD5算法运算原文比较1)、2)结果。& && && &&&
下面我们要做的工作就是如何验证这个串是否一致了,先说一下MD5withRSA签名程序吧,这是加密算法是由MD5加密和RSA加密算法组合而来的
具体的说明请大家在网上找找吧,很容易找到这里就不再多说了
我们来看看主要是怎么验证的吧
银行发过来的签名是通过RSA加密后的签名,在签名是会生成一个公钥,这个公钥我们可以从这里下载的到
用我们的账户登录建行的商户平台,如下地方可以下载的到
cbb3.jpg (45.66 KB, 下载次数: 469)
19:31 上传
另外在登录这个系统时要验证客户端的证书,证书的下载可以在建行的主而上直接找到,根据自己的客户号和密码可以下载,具体的大家还得根据建行服务
人员的提示操作的好
& & 有了这个我们还要一个CCBRSA.dll文件,这个是建行用来验证加密串的具体的使用方法看下面的程序,怎么样添加Dll的引用我就不多说了,大家自己找找
[C#] 纯文本查看 复制代码//传过来的签名;
string sign = Request.QueryString[&SIGN&];
//本地Key值
string mysign = ConfigurationManager.AppSettings[&PublicKey&].ToString().Trim();
CCBRSA.RSAS
//注册一下regsvr32
CCBRSA.dll 文件
rsa = new CCBRSA.RSASigClass();
rsa.setPublicKey(mysign);
bRet = rsa.verifySigature(sign, canshu);
bRet是一个Boolean值可以直接用它来做IF的判断。
在这里我多说几句如果我们直接这样运行的话可能会报错如下
Retrieving the COM class factory for component with CLSID {A5C5C388-A972-4CCF-93E2-7F97E82C9EBA} failed due to the following error: .
& &&&由于用到了CCBRSA.dll这个动态链接库文件,所以要先注册一下这个文件,建议把这个文件复制到system32目录下然后开始运行输入 regsvr32&&
CCBRSA.dll&&确定就可以了.
& & 另外还要安装一下msjavx86.exe ,java虚拟机。可能是有部分需要调用到java的一些库吧,所以需要安装这个。我把Dll文件和这个文件提供下载
& && & 我验证的时候一般要验证如下三个方面就算是可以了
[C#] 纯文本查看 复制代码//调试用,中国建设银行服务器返回时的完整路径。
if ( bRet && success == &Y& && Request.UserHostName.Trim() == &建行IP&)
//验证中国建设银行发过来的消息,签名是否正确
在这里写我们自己的代码吧。。。。。。。。。。。。
过多的代码不方便贴出来,呵呵,大家如果也在开发这块的东东,而且 有问题的话可以交流一下,呵呵
我们把代码写完之后直接发布到一个能被外网访问到的电脑上就行了, 然后在商户的后写上这个页面的地方就行了,看下面的图
cbb4.jpg (38.38 KB, 下载次数: 463)
19:31 上传
第一个地址是时时的只有用户单击确定成功按钮时才会调用 ,一般不使用,就是支付宝里的时时调用方式
第二个是异步的,就是说不管你单击不单击只要有帐 到,都会调用 在使用的时候要输入一下交易密码哦
好了,我们的工作就到这里吧,
哎,为了方便大家理解我还是把大部分代码贴一下吧
[C#] 纯文本查看 复制代码代码
using System.C
using System.D
using System.L
using System.W
using System.Web.S
using System.Web.UI;
using System.Web.UI.HtmlC
using System.Web.UI.WebC
using System.Web.UI.WebControls.WebP
using System.Xml.L
using System.IO;
using SystemM
using System.N
using ccbT
using System.T
using System.Security.C
public partial class _Default : System.Web.UI.Page
//加载事件
protected void Page_Load(object sender, EventArgs e)
if (!IsPostBack)
//要加密的串
//要加密的串
string canshu = &POSID=0000000&BRANCHID=0000000&ORDERID=& + Request.QueryString[&ORDERID&].Trim() + &&PAYMENT=& +Request.QueryString[&PAYMENT&].Trim() + &&CURCODE=& + Request.QueryString[&CURCODE&].Trim() + &&REMARK1=& + Request.QueryString[&REMARK1&].Trim()
+ &&REMARK2=& + Request.QueryString[&REMARK2&].Trim() + &&ACC_TYPE=& + Request.QueryString[&ACC_TYPE&].Trim()+ &&SUCCESS=& + Request.QueryString[&SUCCESS&].Trim();
//传过来的签名;
string sign = Request.QueryString[&SIGN&];
//本地Key值
string mysign = ConfigurationManager.AppSettings[&PublicKey&].ToString().Trim();
CCBRSA.RSAS
//注册一下regsvr32
CCBRSA.dll 文件
rsa = new CCBRSA.RSASigClass();
rsa.setPublicKey(mysign);
bRet = rsa.verifySigature(sign, canshu);
string success = Request.QueryString[&SUCCESS&].ToString().Trim();
//更新自己数据库的订单语句,请自己填写一下
string strOrderNO = Request.QueryString[&ORDERID&];//订单号
string strPrice = Request.QueryString[&PAYMENT&];//金额
string strTradeStatus = Request.QueryString[&SUCCESS&];//订单状态
//调试用,中国建设银行服务器返回时的完整路径。
if ( bRet && success == &Y& && Request.UserHostName.Trim() == &建行IP&)
//验证中国建设银行发过来的消息,签名是否正确
//更新自己数据库的订单语句,请自己填写一下
result=.....这里写上你更新数据库的方法
if (result.Trim() == &0&)
//这里要改变交易的状态,或是给用户上账
Response.Write(&商户:& + login[0].ToString().Trim() + &&br&金额:& + strPrice + &
交易成功&);
//成功,可美化该页面,提示信息
////写文本,纪录中国建设银行返回消息,比对md5计算结果(如网站不支持写txt文件,可改成写数据库)
string TOEXCELLR = &MD5结果:mysign=& + mysign + &,sign=& + sign + &
交易信息& + &商户:&
+ login[1].ToString().Trim() + &&br&金额:& + strPrice + &
交易成功& + Request.UserHostName.Trim();
StreamWriter fs = new StreamWriter(Server.MapPath(&Return_DATA/& + DateTime.Now.ToString().Replace(&:&, &&)) + &.txt&, false, System.Text.Encoding.Default);
fs.Write(TOEXCELLR);
fs.Close();
//修改订单状态
else if (result == &-1&)
//修改订单状态
////写文本,纪录中国建设银行返回消息,比对md5计算结果(如网站不支持写txt文件,可改成写数据库)
string TOEXCELLR = &MD5结果:mysign=& + mysign + &,sign=& + sign + &perky_& + result.Trim() + Request.UserHostName.Trim();
StreamWriter fs = new StreamWriter(Server.MapPath(&Return_DATA/& + &e& + DateTime.Now.ToString().Replace(&:&, &&)) + &.txt&, false, System.Text.Encoding.Default);
fs.Write(TOEXCELLR);
fs.Close();
//修改订单状态
Response.Write(&查询订单时失败!!! 请确定你是否下单!!!&);
//修改订单状态
////写文本,纪录中国建设银行返回消息,比对md5计算结果(如网站不支持写txt文件,可改成写数据库)
string TOEXCELLR = &MD5结果:mysign=& + mysign + &,sign=& + sign + &perky_& + result.Trim() + Request.UserHostName.Trim();
StreamWriter fs = new StreamWriter(Server.MapPath(&Return_DATA/& + &e& + DateTime.Now.ToString().Replace(&:&, &&)) + &.txt&, false, System.Text.Encoding.Default);
fs.Write(TOEXCELLR);
fs.Close();
Response.Write(&重复使用界面无效!!!&);
Response.Write(&------------------------------------------&);
Response.Write(&&br&Result:responseTxt=&);
Response.Write(&&br&Result:mysign=& + mysign);
Response.Write(&&br&Result:sign=& + sign);
Response.Write(&支付失败&);
////写文本,纪录中国建设银行返回消息,比对md5计算结果(如网站不支持写txt文件,可改成写数据库)
string TOEXCELLR = &MD5结果:mysign=& + mysign + &,sign=& + sign + Request.UserHostName.Trim();
StreamWriter fs = new StreamWriter(Server.MapPath(&Return_DATA/& + &e& + DateTime.Now.ToString().Replace(&:&, &&)) + &.txt&, false, System.Text.Encoding.Default);
fs.Write(TOEXCELLR);
fs.Close();
//修改订单状态
catch (Exception ex)
////写文本,纪录中国建设银行返回消息,比对md5计算结果(如网站不支持写txt文件,可改成写数据库)
string TOEXCELLR = Request.Url.ToString() + &
& + ex.Message.ToString() + Request.UserHostName.Trim();
StreamWriter fs = new StreamWriter(Server.MapPath(&Return_DATA/& + &m& + DateTime.Now.ToString().Replace(&:&, &&)) + &.txt&, false, System.Text.Encoding.Default);
fs.Write(TOEXCELLR);
fs.Close();
本帖被以下淘专辑推荐:
& |主题: 33, 订阅: 21
& |主题: 10, 订阅: 3
该用户从未签到
请教商户后台转账的接口,不是像这样需要经过到建行登录,然后转账这样的流程
TA的每日心情开心昨天&08:20签到天数: 349 天[LV.8]以坛为家I
人间大猫 发表于
请教商户后台转账的接口,不是像这样需要经过到建行登录,然后转账这样的流程
后台转账?你说的是那个接口。不太理解
该用户从未签到
admin 发表于
后台转账?你说的是那个接口。不太理解
为什么要获得建行的ip地址呢
TA的每日心情开心昨天&08:20签到天数: 349 天[LV.8]以坛为家I
<font color="# 发表于
为什么要获得建行的ip地址呢
这个不是必须的,目的是为了防止其它方式访问这个页面,绑定建行IP之后只有建行IP访问才生效,这样比较安全一些,也会减少不必要的麻烦
该用户从未签到
比对MD5加密算法是什么意思
该用户从未签到
获得建行ip地址是什么意思,为啥要获得呢
该用户从未签到
qq能联系我吗
TA的每日心情开心昨天&08:20签到天数: 349 天[LV.8]以坛为家I
<font color="# 发表于
比对MD5加密算法是什么意思
这个不是必须的,目的是为了防止其它方式访问这个页面,绑定建行IP之后只有建行IP访问才生效,这样比较安全一些,也会减少不必要的麻烦
你看楼上有说
MD5,当然要验证啦,要不然怎么能确定数据是真的还是假的,用户充值10块,银行给你返回100你肯定不愿意吧,所以要比对
该用户从未签到
怎么比对建行返回的数据和哪个进行比对
( 豫ICP备号-1)&&&}

我要回帖

更多关于 如何申请贷款 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信