NetPayClient商户支付接入用户手册(境外商户试行版)V0.1.12.doc_第1页
NetPayClient商户支付接入用户手册(境外商户试行版)V0.1.12.doc_第2页
NetPayClient商户支付接入用户手册(境外商户试行版)V0.1.12.doc_第3页
NetPayClient商户支付接入用户手册(境外商户试行版)V0.1.12.doc_第4页
NetPayClient商户支付接入用户手册(境外商户试行版)V0.1.12.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

http:/www.ChinaP NetPayClient用户手册 NetPayClient用户手册(境外商户试行版)(Version: 0.1.12)修订历史记录日期版本说明作者2010-11-150.1.12修改“支付接口实现”和“退款接口实现”中返回地址的值,将原来的chinapay和XXX改为example叶青青2010-9-20.1.11修改NetPayClient for Java版本中对一段字符串签名函数的函数名,将sign改成Sign;将查询接口中,签名字段拼接表中的“OrderId”改成“OrdId”.叶青青2010-8-230.1.10增加NetPayClient for C# 使用说明部分;叶青青增加NetPayClient for Java/Win32/C的使用示例代码;将所有“同上”,“参考”的内容补充详细;修改“ChinaPay交易状态代码表”状态码1003的状态信息改为“退款提交成功”,增加状态码1005,状态信息为“退款撤销成功”2010-8-170.1.9修改“交易提交数据内容”,删除“提交页面表单”中字段“GateId”的value值;叶青青2010-7-290.1.8修改Win32验签函数返回值类型定义叶青青2010-7-160.1.7修改“支付接入地址”中测试环境和生产环境地址,“退款接入地址”中测试环境地址叶青青2010-7-160.1.7修改“退款商户(页面返回)”章节中的“退款验证交易应答函数”,调整函数中签名字段的拼接顺序,并增加字段“ChkValue”叶青青2010-7-160.1.7修改“查询”章节交易数据的数字签名,增加被签名字段的拼接顺序表叶青青2009-11-190.1.6修改“查询”章节FORM提交的action的内容。将action中的“control”改成“console”张希运2009-11-180.1.5因公司搬迁,更新公司的地址及联系方式张希运2009-11-100.1.41、文档中章节中的“安装程序”部分,现有的NetPayClinet for Win32的压缩包中不再含有setup.exe文件,所以在此章节进行了简单说明张希运2、增加了“修订历史记录”表格2009-11-60.1.3做了内容结构上的修改及调整张希运上海银联电子支付服务有限公司地址:上海浦东新区东方路800号 宝安大厦29楼-30楼 (200122)Tel: (86-021)60872088 Fax: (86-021)60872000 Website: http:/www.ChinaPCopyright 2004.08 ChinaPay e-Payment Service Co.,Ltd. All rights reserved目 录目 录31.前言41.1.使用说明41.2.使用对象41.3.使用步骤42.NetPayClient介绍及使用规范42.1.功能说明42.2.版本类型53.NetPayClient不同版本的安装及调用53.1.NetPayClient 的安装53.1.1.NetPayClient for Java 版本53.1.2.NetPayClient for Win32版本83.1.3.NetPayClient for C版本133.1.4.NetPayClient for C# 使用说明173.2.支付接口实现(版本:20080515)213.2.1.支付接入地址213.2.2.支付操作流程213.2.3.商户ChinaPay在线支付213.2.4.ChinaPay在线支付商户(页面返回)233.2.5.ChinaPay在线支付商户(服务器返回)233.3.退款接口实现(版本:20080515)243.3.1.退款接入地址243.3.2.退款操作流程243.3.3.商户ChinaPay在线单笔退款253.3.4.ChinaPay在线单笔退款商户(页面返回)263.3.5.ChinaPay在线单笔退款商户(服务器返回)273.4.查询接口实现(单笔查询,版本:20080515)283.4.1.查询接入地址283.4.2.查询操作流程293.4.3.商户ChinaPay在线单笔查询293.4.4.ChinaPay在线单笔查询商户(服务器返回)304.附录 应答码说明31ChinaPay交易状态码31NetPayClient API函数错误代码31查询,单笔退款错误代码311. 前言ChinaPay商户支付接口接入为ChinaPay商户会员提供完善的网上支付解决方案,让商户更快捷、方便和安心的开展网上交易。目前ChinaPay商户支付接口接入提供如下功能: l 商户消费交易的银行支付l 商户针对成功消费交易的退款l 商户对已有交易(消费)查询1.1. 使用说明本手册的主要使用目的是帮助ChinaPay商户会员使用我们提供的支付服务接口方式。本文主要设计三部分的内容:第一部分:NetPayClient的功能描述及使用规范第二部分:NetPayClient不同版本的安装及调用,并且给出支付、退款及查询操作的示例。第三部分:附录。给出在程序运行过程中出现的常见错误代码。1.2. 使用对象本手册的使用对象为ChinaPay商户会员的网上应用开发人员、维护人员和管理人员。1.3. 使用步骤本手册为方便开发人员快速、准确地进行应用开发,ChinaPay推荐使用以下使用步骤:第一步:选择符合自己实际需求的NetPayClient版本。【详情参考2.2章节】第二步:安装所选用的NetPayClient。【详情参考3.1章节】第三步:选择所需求的功能实现(支付、退款、查询)。【详情参考3.2,3.3,3.4章节】第四步:查询实现过程中出现的应答码。【详情参考4章节】第五步:按照应答码的含义完成操作。2. NetPayClient介绍及使用规范2.1. 功能说明NetPayClient是一个安装在ChinaPay商户会员侧的应用编程接口函数库(API LIB)。 它与商户网上柜面系统相集成,实现消费者、商户和银行间的网上安全支付。提供如下功能: l 商户对订单关键信息进行数字签名 l 商户验证ChinaPay发送的交易应答l 商户对一段字符串的签名l 商户对一段字符串的签名验证2.2. 版本类型商户可根据自己的实际情况,选用合适的开发平台和运行平台。ChinaPay将提供对应的NetPayClient版本。目前ChinaPay的NetPayClient有如下几种:l NetPayClient for Java(以JAR的方式提供,用于Java平台的开发)l NetPayClient for Win32 (以DLL方式提供,用于Windows系统上的开发)l NetPayClient for C (以.so或.a的方式提供,用于类UNIX系统上的开发)3. NetPayClient不同版本的安装及调用3.1. NetPayClient 的安装3.1.1. NetPayClient for Java 版本. 核心文件清单名 称放置的路径用 途netpayclinet.jar根据项目工程的需要放置对应路径下用于提供数字签名的方法调用MerPrk.key可以放置到任意路径下,但是需要调用方法指定文件位置和名称商户签名私钥PgPubk.key可以放置到任意路径下,但是需要调用方法指定文件位置和名称ChinaPay签名公钥. 方法说明l 创建公/私钥对象buildKey方法说明:public boolean buildKey (String MerId, int KeyUsage, String KeyFile) 作用: 用于创建私/公钥的对象,用于签名或者验证签名。参数说明:String MerId 商户号,长度为15个字节的数字串,由ChinaPay分配。 int KeyUsage 使用私/公钥的方式,固定为 0 。String KeyFile 私/公钥的文件路径(包含文件名称)。例如:d:MerPrk.key”返回值:true 表示找到正确的私/公钥文件,并且可以调用签名方法签名或者签名验证方法验证签名, false表示创建私/公钥对象失败,不可以使用签名方法和签名验证方法。注:该方法在类chinapay. PrivateKey中。l 订单签名函数signOrder方法说明:public String signOrder(String MerId, String OrdId, String TransAmt, String CuryId, String TransDate, String TransType) 作用:对传入的参数进行数字签名。参数说明:String MerId 商户号,长度为15个字节的数字串,由ChinaPay分配。 String OrdId 订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。 String TransAmt 交易金额,长度为12个字节的数字串,例如:数字串000000001234表示12.34元。 String CuryId 货币代码, 长度为3个字节的数字串,目前只支持人民币,取值为156 。 String TransDate 交易日期,长度为8个字节的数字串,表示格式为:YYYYMMDD。 String TransType 交易类型,长度为4个字节的数字串,取值范围为:0001和0002, 其中0001表示消费交易,0002表示退货交易。 返回值:String CheckValue256 即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的字符串。注:该方法在类chinapay. SecureLink中。l 验证交易应答函数verifyTransResponse方法说明:public boolean verifyTransResponse(String MerId, String OrdId, String TransAmt, String CuryId, String TransDate, String TransType, String OrderStatus, String CheckValue) 作用:验证传入参数的数字签名是否正确。参数说明:String MerId商户号,长度为15个字节的数字串,由ChinaPay分配。 String OrdId订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。 String TransAmt 交易金额,长度为12个字节的数字串,例如:数字串000000001234表示12.34元。 String CuryId 货币代码, 长度为3个字节的数字串,目前只支持人民币,取值为156 。 String TransDate 交易日期,长度为8个字节的数字串,表示格式为: YYYYMMDD。 String TransType 交易类型,长度为4个字节的数字串,取值范围为:0001和0002, 其中0001表示消费交易,0002表示退货交易。 String OrderStatus 交易状态,长度为4个字节的数字串。详见交易状态码说明。 String CheckValue 校验值,即ChinaPay对交易应答的数字签名,长度为256字节的字符串。 返回值:true 表示成功,即该交易应答为ChinaPay所发送,商户根据“交易状态”进行后续处理;否则表示失败,即无效应答,商户可忽略该应答。注:该方法在类chinapay. SecureLink中。l 对一段字符串的签名函数Sign方法说明:public String Sign (String SignMsg)作用:对传入的参数字符串进行数字签名。参数说明:String SignMsg 用于要签名的字符串返回值: String CheckValue256即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的 字符串。注:该方法在类chinapay. SecureLink中。l 对一段字符串的签名验证函数verifyAuthToken方法说明:public boolean verifyAuthToken (String PlainData, String CheckValue) 作用:验证目标字符串的数字签名是否正确。参数说明:String PlainData 用于数字签名的字符串。 String CheckValue 校验值,要验证的字符串的数字签名,长度为256字节的字符串。 返回值:true 表示验证通过成功;否则表示失败。注:该方法在类chinapay. SecureLink中。. 使用示例代码(以下代码未经测试,仅供参考)l 签名示例代码/初始化key文件: chinapay.PrivateKey key=new chinapay.PrivateKey(); chinapay.SecureLink t; boolean flag; String MerId, OrdId, TransAmt, CuryId, TransDate, TransType,ChkValue;String plainData, ChkValue2 ;flag=key.buildKey(MerId,0,app/usr/chinapay/keys/MerPrk.key); if (flag=false) System.out.println(build key error!); return; t=new chinapay.SecureLink (key); / 对订单的签名ChkValue= t.signOrder(MerId, OrdId, TransAmt, CuryId, TransDate, TransType) ; / 对一段字符串的签名plainData = test sign data ;ChkValue2 = t.Sign(plainData) ;l 验证签名示例代码chinapay.PrivateKey key=new chinapay.PrivateKey(); chinapay.SecureLink t; boolean flag; boolean flag1; String MerId, OrdId, TransAmt, CuryId, TransDate, TransType,ChkValue;String plainData, ChkValue2flag=key.buildKey(999999999999999,0,c:winntPgPubk.key); if (flag=false) msg=build key error!; return; t=new chinapay.SecureLink (key); flag1=t.verifyTransResponse(MerId,OrdId, TransAmt, CuryId, TransDate, TransType, OrderStatus, ChkValue); / ChkValue为ChinaPay应答传回的域段if(flag1!=0) /签名验证错误处理/ 对一段字符串的签名验证plainData = test sign data ;flag1 = t. verifyAuthToken (plainData, ChkValue2) ; / ChkValue2为ChinaPay应答传回的域段if(flag1) /签名验证错误处理3.1.2. NetPayClient for Win32版本. 核心文件清单名 称安装后所在的路径用 途ChinaPay.dll安装时自选(如c:netpay)采用COM方式对netpay.dll的方法封装,需要用regsvr32注册netpay.dll与Chinapay.dll同一个目录下也可放在在windows系统路径下的system32目录下(c:windowssystem for win95,98,etc)提供定单签名及验证ChinaPay签名的函数netpay.lib安装时自选(如c:netpay)程序调用netpay.dll函数编译时须连接此文件MerPrk.key可拷贝至windows路径下,如:c:winnt for NT或c:windows for win95,98也可以放置到任意路径下,但是需要调用方法指定文件位置和名称商户签名私钥PgPubk.key可拷贝至windows路径下c:winnt for NT或c:windows for win95,98也可以放置到任意路径下,但是需要调用方法指定文件位置和名称ChinaPay签名公钥l 安装程序解压NetPayClinet for Win32.rar压缩文件,参考安装说明。 l 手动安装如果安装程序运行后出错 (可能是由于系统环境异常导致),可采用手工安装的方法,具体步骤如下:将核心文件拷贝到相应的目录下;注册ChinaPay.dll (在命令行里键入regsvr32 gensign的路径,此控件需要VC环境。建议是用Dependency Walker看一下系统是否包含有所需的DLL) ;. 方法说明l 设置私钥路径setMerKeyFile方法说明:void setMerKeyFile (String KeyFile) 作用:设置商户私钥所在的位置。参数说明:String KeyFile 秘钥的文件路径(包含文件名称)。例如:d:MerPrk.key”l 取消设置私钥路径unsetMerKeyFilevoid unsetMerKeyFile () 作用:取消原先商户私钥所在的位置。恢复默认路径的秘钥文件位置。参数说明:无l 设置ChinaPay公钥路径setPubKeyFile方法说明:void setPubKeyFile (String KeyFile) 作用:设置ChinaPay公钥所在的位置。参数说明:String KeyFile ChinaPay公钥的文件路径(包含文件名称)。例如:d: PgPubk.key”l 取消设置公钥路径unsetPubKeyFilevoid unsetPubKeyFile () 作用:取消原先调用setPubKeyFile设置的ChinaPay公钥所在的位置。恢复默认路径的公钥文件位置。参数说明:无l 订单签名函数sign方法说明:public String sign (String MerId, String OrdId, String TransAmt, String CuryId, String TransDate, String TransType) 参数说明:String MerId 商户号,长度为15个字节的数字串,由ChinaPay或清算银行分配。 String OrdId 订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。 String TransAmt 交易金额,长度为12个字节的数字串,例如:数字串000000001234表示12.34元。 String CuryId 货币代码, 长度为3个字节的数字串,目前只支持人民币,取值为156 。 String TransDate 交易日期,长度为8个字节的数字串,表示格式为:YYYYMMDD。 String TransType 交易类型,长度为4个字节的数字串,取值范围为:0001和0002, 其中0001表示消费交易,0002表示退货交易。 返回值:String CheckValue256 即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的字符串。注:如果不采用COM方式调用,而采用LoadLibrary装载netpay.dll的调用时方法名称为需要通过Dependency Walker来查看对应名称。l 验证交易应答函数check方法说明:public String check(String MerId, String OrdId, String TransAmt, String CuryId, String TransDate, String TransType, String OrderStatus, String CheckValue) 参数说明:String MerId商户号,长度为15个字节的数字串,由ChinaPay分配。 String OrdId订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。 String TransAmt 交易金额,长度为12个字节的数字串,例如:数字串000000001234表示12.34元。 String CuryId 货币代码, 长度为3个字节的数字串,目前只支持人民币,取值为156 。 String TransDate 交易日期,长度为8个字节的数字串,表示格式为: YYYYMMDD。 String TransType 交易类型,长度为4个字节的数字串,取值范围为:0001和0002, 其中0001表示消费交易,0002表示退货交易。 String OrderStatus 交易状态,长度为4个字节的数字串。详见交易状态码说明。 String CheckValue 校验值,即ChinaPay对交易应答的数字签名,长度为256字节的字符串。 返回值:“0” 表示成功,即该交易应答为ChinaPay所发送,商户根据“交易状态”进行后续处理;否则表示失败,即无效应答,商户可忽略该应答。注: 如果采用COM方式调用,方法返回值为字符串形式的“0”表示验签成功。 如果不采用COM方式调用,而采用LoadLibrary装载netpay.dll的调用时方法名称为需要通过Dependency Walker来查看对应名称。l 对一段字符串的签名函数signData方法说明:public String signData (String MerId, String SignMsg)参数说明:String MerId 商户号,长度为15个字节的数字串,由ChinaPay分配。String SignMsg 用于要签名的字符串返回值: String CheckValue256即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的 字符串。注:如果不采用COM方式调用,而采用LoadLibrary装载netpay.dll的调用时方法名称为需要通过Dependency Walker来查看对应名称。l 对一段字符串的签名验证函数checkData方法说明:public string checkData (String PlainData, String CheckValue) 参数说明:String PlainData 用于数字签名的字符串。 String CheckValue 校验值,要验证的字符串的数字签名,长度为256字节的字符串。 返回值:“0” 表示验证通过成功;否则表示失败。注:如果采用COM方式调用,方法返回值为字符串形式的“0”表示验签成功。如果不采用COM方式调用,而采用LoadLibrary装载netpay.dll的调用时方法名称为需要通过Dependency Walker来查看对应名称。. 使用示例代码以C#为例说明调用方法: 首先将Com类型信息转换为.NET元数据tlbimp ChinaPay.dll /out: ChinaPay_tsl.dll (tlbimp 为提供的工具) 其次项目工程中,在project-add reference里,选择com,将ChinaPay_tsl.dll引入。(以下代码未经测试,仅供参考)l 签名示例代码using System;using ChinaPay_tsl;namespace ConsoleApplication1 class Class1 STAThreadpublic static void Main() /签名 NetPayClientClass a = new NetPayClientClass(); /设置密钥文件地址 a.setMerKeyFile(D: MerPrK.key); / 如果不调用此方法,则按照默认目录处理 String ChkValue; String MerId; /商户号 /对订单的签名 ChkValue= a.sign(MerId,0000000000000001,000000001234,156,20070123,0001); / 对一段字符串的签名 String ChkValue2; String plainData = test sign data ; ChkValue2= a.signData(MerId,plainData); l 验证签名示例代码using System;using ChinaPay_tsl;namespace ConsoleApplication1 class Class1 STAThreadpublic static void Main() /验证签名 NetPayClientClass a = new NetPayClientClass(); /设置密钥文件地址 a.setPubKeyFile(D: PgPubk.key); / 如果不调用此方法,则按照默认目录处理 String ChkValue; String MerId; /商户号/对订单的签名string flag = a.check(MerId,070699060500011,000000010000,156,20070615,0001,1001, ChkValue); / ChkValue 为ChinaPay返回给商户的域段内容/ 对一段字符串的签名String ChkValue2;String plainData = test sign data ;string flag = a. checkData (plainData, ChkValue2); 3.1.3. NetPayClient for C版本. 核心文件清单名 称所在的路径用 途netpayclient.h用户自己决定放置位置用于C等开发语言的引用头文件libnpc.so / libnpc.a用户自己决定放置位置签名数据和验证签名的主体方法库(根据自己情况申请.so还是.a)MerPrk.key设置NPCDIR环境变量指定文件位置,但是不能更改文件名也可以不指定NPCDIR环境变量,但是需要调用方法指定文件位置和名称商户签名私钥PgPubk.key设置NPCDIR环境变量指定文件位置,但是不能更改文件名也可以不指定NPCDIR环境变量,但是需要调用方法指定文件位置和名称ChinaPay签名公钥. 方法说明l 设置私钥路径setMerKeyFile方法说明:void setMerKeyFile (char keyFile256) 作用:设置商户私钥所在的位置。参数说明:char KeyFile 秘钥的文件路径(包含文件名称)。例如:d:MerPrk.key”l 取消设置私钥路径unsetMerKeyFilevoid unsetMerKeyFile () 作用:取消原先商户私钥所在的位置。恢复默认路径的秘钥文件位置。参数说明:无l 设置商户公钥路径setPubKeyFile方法说明:void setPubKeyFile (char keyFile256) 作用:设置ChinaPay公钥所在的位置。参数说明:char keyFile ChinaPay公钥的文件路径(包含文件名称)。例如:d: PgPubk.key”l 取消设置公钥路径unsetPubKeyFilevoid unsetPubKeyFile () 作用:取消原先调用setPubKeyFile设置的ChinaPay公钥所在的位置。恢复默认路径的公钥文件位置。参数说明:无l 订单签名函数signOrder函数说明:int signOrder(char MerId15, char OrdId16, char TransAmt12, char CuryId3, char TransDate8, char TransType4, char CheckValue256) 作用:对传入的参数进行数字签名。参数说明:char MerId15商户号,长度为15个字节的数字串,由ChinaPay分配。 char OrdId16订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。 char TransAmt12交易金额,长度为12个字节的数字串,例如:数字串000000001234表示12.34元。 char CuryId3货币代码, 长度为3个字节的数字串,目前只支持人民币,取值为156 。 char TransDate8交易日期,长度为8个字节的数字串,表示格式为: YYYYMMDD。 char TransType4交易类型,长度为4个字节的数字串,取值范围为:0001和0002, 其中0001表示消费交易,0002表示退货交易。 char CheckValue256校验值,即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的字符串。 返回值:0表示签名成功,否则表示失败。 l 验证交易应答函数verifyTransResponse方法说明:int verifyTransResponse(char MerId15, char OrdId16, char TransAmt12, char CuryId3, char TransDate8, char TransType4, char OrderStatus4, char CheckValue256) 作用:验证传入参数的数字签名是否正确。参数说明:char MerId15商户号,长度为15个字节的数字串,由ChinaPay分配。 char OrdId16订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。 char TransAmt12 交易金额,长度为12个字节的数字串,例如:数字串000000001234表示12.34元。 char CuryId3 货币代码, 长度为3个字节的数字串,目前只支持人民币,取值为156 。 char TransDate8 交易日期,长度为8个字节的数字串,表示格式为: YYYYMMDD。 char TransType4 交易类型,长度为4个字节的数字串,取值范围为:0001和0002, 其中0001表示消费交易,0002表示退货交易。 char OrderStatus4 交易状态,长度为4个字节的数字串。详见交易状态码说明。 char CheckValue256 校验值,即ChinaPay对交易应答的数字签名,长度为256字节的字符串。 返回值:0表示成功,即该交易应答为ChinaPay所发送,商户根据“交易状态”进行后续处理;否则表示失败,即无效应答,商户可忽略该应答。l 对一段字符串的签名函数signData方法说明:int signData (char MerId15,char *SignMsg,char ChkValue256)作用:对传入的参数字符串进行数字签名。参数说明:char MerId15 商户号,长度为15个字节的数字串,由ChinaPay分配。char *SignMsg 用于要签名的字符串char CheckValue256即NetPayClient根据上述输入参数生成的商户数字签名,长度为256字节的 字符串。返回值: 0 表时签名成功,其他为对应错误代码l 对一段字符串的签名验证函数verifySignData方法说明:int verifySignData (char * PlainData, char CheckValue256) 作用:验证目标字符串的数字签名是否正确。参数说明:char* PlainData 用于数字签名的字符串。 char CheckValue256 校验值,要验证的字符串的数字签名,长度为256字节的字符串。返回值:0表示成功,即该交易应答为ChinaPay所发送,商户根据“交易状态”进行后续处理;否则表示失败,即无效应答,商户可忽略该应答。. 使用示例代码l 签名示例代码(以下代码未经测试,仅供参考)#include #include #include netpayclient.hint main (int argc, char* argv)char MerId16; char OrdId17; char TransAmt13; char CuryId4; char TransDate9; char TransType5;char ChkValue257;int flag;setMerKeyFile(/app/netpay/key/MerPrk.key); /如果不设置则按照NPCDIR环境变量取文件/ 对订单的签名flag =signOrder(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, ChkValue);if(flag != 0) /签名失败 / 对一段字符串的签名plainData = test sign data ;flag = signData (MerId ,plainData, ChkValue); / ChkValue为该字符串的签名if(flag != 0) /签名失败l 验证签名示例代码 (以下代码未经测试,仅供参考)#include #include #include netpayclient.hint main (int argc, char* argv)char MerId16; char OrdId17; char TransAmt13; char CuryId4; char TransDate9; char TransType5;char ChkValue257;char OrderStatus5;int flag;setPubKeyFile (/app/netpay/key/PubPrk.key); /如果不设置则按照NPCDIR环境变量取文件/ 取得ChinaPay传回的数据 MerId, OrdId, TransAmt, CuryId, TransDate, TransType OrderStatus ,ChkValue/ 对验证订单的签名flag = verifyTransResponse(MerId, OrdId, TransAmt, CuryId, TransDate, TransType, OrderStatus ,ChkValue);if(flag != 0) /签名失败 / 对一段字符串的签名plainData = test sign data ;flag = verifySignData (plainData, ChkValue); / ChkValue为ChinaPay传回的签名if(flag != 0) /签名失败3.1.4. NetPayClient for C# 使用说明.....1. 核心文件清单名 称放置的路径用 途netpay.dll根据项目工程的需要放置对应路径下用于提供数字签名的方法调用MerPrk.key可以放置到任意路径下,但是需要调用方法指定文件位置和名称商户签名私钥PgPubk.key可以放置到任意路径下,但是需要调用方法指定文件位置和名称ChinaPay签名公钥. 使用说明l 根据项目工程的需要,将netpay.dll放置对应路径下,l 在开发环境中,使用 “添加引用”,将netpay.dll添加到工程中,直接调用。. 方法说明l 创建公/私钥对象buildKey方法说明:public boolean buildKey (String MerId, int KeyUsage, String KeyFile) 作用: 用于创建私/公钥的对象,用于签名或者验证签名。参数说明:String MerId 商户号,长度为15个字节的数字串,由ChinaPay分配。 int KeyUsage 使用私/公钥的方式,固定为 0 。String KeyFile 私/公钥的文件路径(包含文件名称)。例如:d:MerPrk.key”返回值:true 表示找到正确的私/公钥文件,并且可以调用签名方法签名或者签名验证方法验证签名, false表示创建私/公钥对象失败,不可以使用签名方法和签名验证方法。注:该方法在netpay. NETPAY中, 也可通过NetPay.NETPAY.PrivateKeyFlag或者NetPay.NETPAY.PublicKeyFlag判断当前公私钥的状态。l 订单签名函数signOrder方法说明:public String signOrder(String MerId, String OrdId, String TransAmt, String CuryId, String TransDate, String TransType) 作用:对传入的参数进行数字签名。参数说明:String MerId 商户号,长度为15个字节的数字串,由ChinaPay分配。 String OrdId 订单号,长度为16个字节的数字串,由商户系统生成,失败的订单号允许重复支付。 String TransAmt 交易金额,长度为12个字节的数字串,例如:数字串000000001234表示12.34元。 String CuryId 货币代码, 长度为3个字节的数字串,目前只支持人民币,取值为156 。 String TransDate 交易日期,长度为8个字节的数字串,表示格式为:YYYYMMDD。 String TransType 交易类型,长度为4个字节的数字串,取值范围为:0001和0002, 其中0001表示消费交易,0002表示退货交易

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论