NetPayClient用户手册.docx
- 文档编号:18240147
- 上传时间:2023-08-14
- 格式:DOCX
- 页数:50
- 大小:225.10KB
NetPayClient用户手册.docx
《NetPayClient用户手册.docx》由会员分享,可在线阅读,更多相关《NetPayClient用户手册.docx(50页珍藏版)》请在冰点文库上搜索。
NetPayClient用户手册
NetPayClient用户手册
(Version:
2.5.2)
上海银联电子支付服务有限公司
地址:
延安西路2299号上海世贸商城大厦19楼1901-1905室(200336)
Tel:
(86-021)52504528Fax:
(86-021)62361165Website:
http:
//www.ChinaP
©Copyright2004.08ChinaPaye-PaymentServiceCo.,Ltd.Allrightsreserved
目录
1.ChinaPay简介3
2.前言3
2.1.目的3
3.总述3
3.1.使用对象3
3.2.运行及开发环境4
3.3.术语4
3.4.基本概念5
3.4.1.公钥密码体系(Public-keyCryptography)5
3.4.2.隐秘钥密码体系(Secret-keyCryptography)6
3.4.3.摘要算法6
3.4.4.数字签名7
3.4.5.数字信封8
3.5.客户端NetPayClient在各系统下的安装及调用9
3.5.1.说明9
3.5.2.NetPayClientforJava使用说明9
3.5.3.NetPayClientforWin32使用说明12
3.5.4.NetPayClientforC使用说明17
4.支付21
4.1.目标21
4.2.交易流程21
4.3.接入方法21
4.3.1.接入地址21
4.3.2.接入版本21
5.退款25
5.1.目标25
5.2.处理流程26
5.3.接入方法26
5.3.1.接入地址26
5.3.2.接入版本26
6.查询28
6.1.目标28
6.2.处理流程28
6.3.接入方法29
6.3.1.接入地址29
6.3.2.接入版本29
附录A常见接入问题及解答31
附录B应答码说明31
ChinaPay交易状态码31
NetPayClientAPI函数错误代码31
查询,单笔退款错误代码32
1.ChinaPay简介
CHINAPAY致力于发展中国金融电子支付服务。
银联电子支付服务有限公司(ChinaPay)是中国银联控股的银行卡专业化服务公司,拥有面向全国的统一支付平台,主要从事以互联网等新兴渠道为基础的网上支付、企业B2B账户支付、电话支付、网上跨行转账、网上基金交易、企业公对私资金代付、自助终端支付等银行卡网上支付及增值业务,是中国银联旗下的网络方面军。
ChinaPay依托中国银联全国统一的跨行信息交换网络,在人民银行及中国银联的业务指导和政策支持下,致力于银行卡受理环境的建设和银行卡业务的推广,将先进的支付科技与专业的金融服务紧密结合起来,通过业务创新形成多元化的支付服务体系,为广大持卡人和各类商户提供安全、方便、快捷的银行卡支付及资金结算服务。
公司充分利用中国银联全国性的品牌、网络、市场等优势资源,整合银联体系的系统资源、银行资源、商户资源和品牌影响力,实现强强联合、资源共享和优势互补。
经过数年的开拓发展,ChinaPay拥有了雄厚的技术开发力量及丰富的业务拓展经验,为网上购物、金融、民航、旅游、彩票、移动通讯等行业领域提供了先进的支付系统解决方案,并积累了丰富的工程项目实施经验。
2.前言
ChinaPay商户支付接口接入为ChinaPay商户会员提供完善的网上支付解决方案,让商户更快捷、方便和安心的开展网上交易。
目前ChinaPay商户支付接口接入提供如下功能:
●商户消费交易的银行支付
●商户针对成功消费交易的退款
●商户对已有交易(消费)查询
2.1.目的
本手册的主要目的是帮助ChinaPay商户会员使用我们提供的支付服务接口方式。
本文分为四大部分:
总述:
介绍文档中出现的一些基本概念,以及ChinaPay的客户端插件的介绍和使用。
支付:
介绍支付的接入需要提供的数据域和内容。
退款:
介绍退款的接口方式接入的数据域和内容。
查询:
介绍交易查询接口方式的使用。
3.总述
3.1.使用对象
本手册的使用对象为ChinaPay商户会员的网上应用开发人员、维护人员和管理人员,他们应具有如下之一或者几项基本知识:
熟悉MicrosoftWindows/NT、Windows9x、Windows2000、HP-UX、AIX、SUNSolaris、Linux、BSD等操作系统;
熟悉上述系统上的网站设置和网页制作方法;
熟悉标准CGI(CommonGatewayInterface)或ASP(ActiveServerPages)或ISAPI的开发方法或PHP或JAVA;
了解一般信息安全的基本概念。
3.2.运行及开发环境
商户可根据自己的实际情况,选用合适的开发平台和运行平台。
ChinaPay将提供对应的NetPayClient版本。
目前ChinaPay的NetPayClient有如下几种:
●NetPayClientforJava(以JAR的方式提供,用于Java平台的开发)
●NetPayClientforWin32(以DLL方式提供,用于Windows系统上的开发)
●NetPayClientforC(以.so或.a的方式提供,用于类UNIX系统上的开发)
3.3.术语
电子商务ElectronicCommerce是指通过信息网络以电子数据信息流通的方式在全世界范围内进行并完成的各种商务活动、交易活动、金融活动和相关的综合服务活动。
网络贸易指在网络平台基础上直接进行在线贸易(TradeOnline),利用数字化技术将企业、海关、运输、金融、商检和税务等有关部门有机连接起来,实现从浏览、洽谈、签约、交货到付款等全部或部分业务自动化处理。
网络贸易由信息共享、订购、支付、执行、服务与支持5个部分组成,每个部分在网络贸易中都各自承担了不同的任务。
B2C(BusinesstoConsumer)指企业与消费者之间的电子商务。
这是消费者利用因特网直接参与经济活动的形式,类同于商业电子化的零售商务。
目前,在因特网上有许许多多各种类型的虚拟商店和虚拟企业,提供各种与商品销售有关的服务。
B2B(BusinesstoBusiness)指企业与企业间的电子商务。
企业可以使用因特网或其它网络对每笔交易寻找最佳合作伙伴,完成从订购到结算的全部交易行为,包括向供应商订货、签约、接受发票和使用电子资金转移、信用证、银行托收等方式进行付款,以及在商贸过程中发生的其它问题,如索赔、商品发送管理和运输跟踪等。
商户具有电子商务功能的商店和企业。
银行卡商业银行所发行的储蓄卡、信用卡、储值卡、企业购物卡、购物联名卡、虚拟电子卡等支付工具。
持卡人银行卡的拥有者。
网上支付密码数字串。
发卡行用于鉴别网上持卡人身份,具体产生方法、使用范围和管理规范见各发卡行"业务规范"。
发卡行具有发行银行卡功能的商业银行。
开户行指持卡人卡账户或企业资金账户所在的商业银行。
SSL(SecureSocketLayer)是一种基于网络传输层的安全网络传输协议,实现客户端与服务器端间的数据安全传递。
3.4.基本概念
随着计算机网络及因特网技术的飞速发展,为了降低成本、提高效率、拓展新的市场领域和改善服务质量,越来越多企业、商户及金融机构纷纷将他们的传统业务逐渐地向网上迁移。
因特网已不仅仅是一个单纯的信息交换网络,已逐渐发展为一个全球性的商务网络,所以网络安全必然是人们关注的焦点。
网络安全就是运用各种技术手段,解决如下四个方面的问题:
●私有性-保证通信信息在网络传输过程中不能被第三方窃听者破译;
●完整性-接受方能检测出信息在网络传输过程中是否被篡改;
●确认性-接受方能有效地对信息发送方的身份进行认证;
●不可否认性-接受方一旦接受到发送方的有效信息,发送在事后无法予以抵赖。
针对上述问题,现代密码学给出了完整的答案。
其中加密算法解决了信息的私有性,摘要算法用于数据完整性检查,而签名算法实现了信息来源的认证及防止发送方的事后抵赖。
现代密码学主要分为公钥密码体系和隐秘钥密码体系,本章节就一些基本概念进行简要性的介绍。
3.4.1.公钥密码体系(Public-keyCryptography)
公钥密码体系,又称非对称密码体系。
它使用二个密钥,一个用于加密信息,另一个用于解密信息。
这二个密钥间满足一定数学关系,以至用二个密钥中的任何一个加密的数据,只能用另外一个进行数据解密。
每个用户拥有二个密钥,一个被称之为公钥,另一个被称之为私钥,并将公钥分发给其它用户。
由于这二个密钥间的数学关系,任何收到该用户公钥的其它用户可以保证发送用此公钥进行加密的数据只有该用户用自己的私钥才能进行解密。
当然此项保证是建立在用户私钥的私有性基础之上。
目前最著名的公钥密码算法为RSA算法,它是由Rivest、Shamir和Adleman共同发明的。
见图示:
图1RSA算法示意图
3.4.2.隐秘钥密码体系(Secret-keyCryptography)
隐秘钥密码体系,又称对称密码体系。
它是一种使用同一个密钥进行数据加密和数据解密的技术,该密钥被称之为隐秘钥(Secret-key)。
一对用户共享一个隐秘钥,并确保该密钥的私有性控制在他们之间。
用一个隐秘钥进行加密的数据只能使用相同的密钥进行解密。
目前使用最广泛的为DES(DataEncryptionStandard)、3DES等算法,这些算法为美国联邦数据安全标准。
见图示:
图2DES算法示意图
3.4.3.摘要算法
摘要算法是一种方法,它将一个任意长度的数据变换为一个定长的数据串,这一定长的数据串被称为消息摘要,也有数据指纹之称。
合格的摘要算法必须满足下列条件:
找出具有相同摘要的消息集合在技术上是不可能的;
对一给定的消息摘要,反向计算出消息本身在技术上是不可行的。
数据发送方在数据发送前,首先用摘要算法对数据计算消息摘要,然后将数据和消息摘要一起发送给接受方。
接受方用相同的摘要算法对数据重新计算消息摘要,通过对二个消息摘要的比较,可以明确地判断出数据在传输过程中是否被篡改。
结果相同表示数据未被修改,而结果不同表明数据被修改或数据被丢失,从而保证数据在传输过程中的完整性。
常用的摘要算法有MD2和MD5,它是由RSA实验室发明的,具体算法请参阅RFC1319和RFC1321。
见图示:
图3摘要算法示意图
3.4.4.数字签名
数字签名实际上是非对称密码算法和消息摘要算法的一种组合应用,其目的在于:
如某人张三对一段消息进行了数字签名,那么其它的人都能验证这个签名确实是张三签的,同时也能验证张三签名后数据是否被篡改。
下面的例子将详细介绍Alice如何对一份合同M进行数字签名,同时Bob又是如何来验证她所签的合同。
见图示:
图4数字签名示意图
●Alice准备了一份合同M;
●Alice用摘要算法计算出该合同M的消息摘要MD;
●Alice用非对称算法和自己的私钥对合同消息摘要MD进行加密,该密文S就是合同的数字签名;
●Alice将合同M和合同的数字签名S合并在一起,通过网络传送到合同的接受者Bob;
●Bob收到Alice的合同M及合同的数字签名S;
●Bob用Alice的公钥对合同签名S进行解密,得到Alice计算的合同摘要MD;
●Bob采用相同摘要算法对收到的合同重新计算消息摘要MD';
●Bob比较MD与MD'是否相等?
●如结果相等,根据摘要算法的特性表明合同在传输过程中未被篡改。
同时由于非对称加密算法的特性可以断定合同确实是Alice发送的,因为用Alice公钥能解密成功的数据只有Alice用她自己私钥对其进行加密才能产生,而她的私钥其它人是无法获取的。
3.4.5.数字信封
数字信封是一种非对称密码算法和对称密码算法组合应用,用于通信双方间的安全文件交换。
下面的例子将详细介绍Alice如何利用数字信封将合同安全地传送给Bob。
见图示:
图5数字信封过程示意图
●Alice准备了一份合同M;
●Alice生成一个随机数;
●Alice选用该随机数作为密钥对合同M进行对称加密,生成密文合同;
●Alice选用Bob公钥对随机数进行非对称加密,生成信封;
●Alice将密文合同和信封一起发送给Bob;
●Bob接受Alice发送的密文合同和信封;
●Bob选用自己的私钥对信封进行解密,得到对称密钥(随机数);
●Bob使用该对称密钥(随机数)对密文合同进行解密,得到合同M。
3.5.客户端NetPayClient在各系统下的安装及调用
3.5.1.说明
NetPayClient是一个安装在ChinaPay商户会员侧的应用编程接口函数库(APILIB)。
它与商户网上柜面系统相集成,实现消费者、商户和银行间的网上安全支付。
提供如下功能:
●商户对订单关键信息进行数字签名
●商户验证ChinaPay发送的交易应答
●商户对一段字符串的签名
●商户对一段字符串的签名验证
3.5.2.NetPayClientforJava使用说明
3.5.2.1核心文件清单
名称
放置的路径
用途
netpayclinet.jar
根据项目工程的需要放置对应路径下
用于提供数字签名的方法调用
MerPrk.key
可以放置到任意路径下,但是需要调用方法指定文件位置和名称
商户签名私钥
PgPubk.key
可以放置到任意路径下,但是需要调用方法指定文件位置和名称
ChinaPay签名公钥
3.5.2.2方法说明
●创建公/私钥对象buildKey
方法说明:
publicbooleanbuildKey(StringMerId,intKeyUsage,StringKeyFile)
作用:
用于创建私/公钥的对象,用于签名或者验证签名。
参数说明:
StringMerId商户号,长度为15个字节的数字串,由ChinaPay分配。
intKeyUsage使用私/公钥的方式,固定为0。
StringKeyFile私/公钥的文件路径(包含文件名称)。
例如:
"d:
\\MerPrk.key”
返回值:
true表示找到正确的私/公钥文件,并且可以调用签名方法签名或者签名验证方法验证签名,false
表示创建私/公钥对象失败,不可以使用签名方法和签名验证方法。
注:
该方法在类chinapay.PrivateKey中。
●订单签名函数signOrder
方法说明:
publicStringsignOrder(StringMerId,StringOrdId,StringTransAmt,StringCuryId,StringTransDate,StringTransType)
作用:
对传入的参数进行数字签名。
参数说明:
StringMerId商户号,长度为15个字节的数字串,由ChinaPay分配。
StringOrdId订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。
StringTransAmt交易金额,长度为12个字节的数字串,例如:
数字串"000000001234"表示12.34元。
StringCuryId货币代码,长度为3个字节的数字串,目前只支持人民币,取值为"156"。
StringTransDate交易日期,长度为8个字节的数字串,表示格式为:
YYYYMMDD。
StringTransType交易类型,长度为4个字节的数字串,取值范围为:
"0001"和"0002",其中"0001"表示消费交易,"0002"表示退货交易。
返回值:
StringCheckValue[256]即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的字符串。
注:
该方法在类chinapay.SecureLink中。
●验证交易应答函数verifyTransResponse
方法说明:
publicbooleanverifyTransResponse(StringMerId,StringOrdId,StringTransAmt,StringCuryId,StringTransDate,StringTransType,StringOrderStatus,StringCheckValue)
作用:
验证传入参数的数字签名是否正确。
参数说明:
StringMerId商户号,长度为15个字节的数字串,由ChinaPay分配。
StringOrdId订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。
StringTransAmt交易金额,长度为12个字节的数字串,例如:
数字串"000000001234"表示12.34元。
StringCuryId货币代码,长度为3个字节的数字串,目前只支持人民币,取值为"156"。
StringTransDate交易日期,长度为8个字节的数字串,表示格式为:
YYYYMMDD。
StringTransType交易类型,长度为4个字节的数字串,取值范围为:
"0001"和"0002",其中"0001"表示消费交易,"0002"表示退货交易。
StringOrderStatus交易状态,长度为4个字节的数字串。
详见交易状态码说明。
StringCheckValue校验值,即ChinaPay对交易应答的数字签名,长度为256字节的字符串。
返回值:
true表示成功,即该交易应答为ChinaPay所发送,商户根据“交易状态”进行后续处理;否则表示失败,即无效应答,商户可忽略该应答。
注:
该方法在类chinapay.SecureLink中。
●对一段字符串的签名函数Sign
方法说明:
publicStringSign(StringSignMsg)
作用:
对传入的参数字符串进行数字签名。
参数说明:
StringSignMsg用于要签名的字符串
返回值:
StringCheckValue[256]即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的字符串。
注:
该方法在类chinapay.SecureLink中。
●对一段字符串的签名验证函数verifyAuthToken
方法说明:
publicbooleanverifyAuthToken(StringPlainData,StringCheckValue)
作用:
验证目标字符串的数字签名是否正确。
参数说明:
StringPlainData用于数字签名的字符串。
StringCheckValue校验值,要验证的字符串的数字签名,长度为256字节的字符串。
返回值:
true表示验证通过成功;否则表示失败。
注:
该方法在类chinapay.SecureLink中。
3.5.3.1使用示例代码
(以下代码未经测试,仅供参考)
●签名示例代码
//初始化key文件:
chinapay.PrivateKeykey=newchinapay.PrivateKey();
chinapay.SecureLinkt;
booleanflag;
StringMerId,OrdId,TransAmt,CuryId,TransDate,TransType,ChkValue;
StringplainData,ChkValue2;
flag=key.buildKey(MerId,0,"app/usr/chinapay/keys/MerPrk.key");
if(flag==false)
{
System.out.println("buildkeyerror!
");
return;
}
t=newchinapay.SecureLink(key);
//对订单的签名
ChkValue=t.signOrder(MerId,OrdId,TransAmt,CuryId,TransDate,TransType);
//对一段字符串的签名
plainData="testsigndata";
ChkValue2=t.sign(plainData);
●验证签名示例代码
chinapay.PrivateKeykey=newchinapay.PrivateKey();
chinapay.SecureLinkt;
booleanflag;
booleanflag1;
StringMerId,OrdId,TransAmt,CuryId,TransDate,TransType,ChkValue;
StringplainData,ChkValue2
flag=key.buildKey("999999999999999",0,"c:
\\winnt\\PgPubk.key");
if(flag==false)
{
msg="buildkeyerror!
";
return;
}
t=newchinapay.SecureLink(key);
flag1=t.verifyTransResponse(MerId,OrdId,TransAmt,CuryId,TransDate,TransType,OrderStatus,ChkValue);//ChkValue为ChinaPay应答传回的域段
if(flag1!
=0){
//签名验证错误处理
}
//对一段字符串的签名验证
plainData="testsigndata";
flag1=t.verifyAuthToken(plainData,ChkValue2);//ChkValue2为ChinaPay应答传回的域段
if(flag1){
//签名验证错误处理
}
3.5.3.NetPayClientforWin32使用说明
3.5.3.2核心文件清单
名称
安装后所在的路径
用途
ChinaPay.dll
安装时自选(如c:
\netpay)
采用COM方式对netpay.dll的方法封装,需要用regsvr32注册
netpay.dll
与Chinapay.dll同一个目录下
也可放在在windows系统路径下的system32目录下(c:
\windows\systemforwin95,98,etc)
提供定单签名及验证ChinaPay签名的函数
netpay.lib
安装时自选(如c:
\netpay)
程序调用netpay.dll函数编译时须连接此文件
MerPrk.key
可拷贝至windows路径下,如:
c:
\winntforNT或c:
\windowsf
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- NetPayClient 用户手册