




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通联互联网支付网关商户接口规范通联支付网络服务股份有限公司商户接口说明版本v1.0通联支付网络服务股份有限公司2012年10月16日文件修改记录修改说明版本变更审核批准时间变更人时间审核人时间批准人新建1.02012.10.16邬海艳重整原有网关文档内容、增加订单批量查询接口说明1.12013.01.06邬海艳修改单笔分账业务示例1.1.12013.04.03邬海艳完善请求报文格式说明1.1.22013.08.19邬海艳增加手机网关接入地址说明1.1.32013-11-28沈仕人完善通联网关接入文档内容,新增手续费收取业务说明1.1.42013-12-01邬海艳调整签名方式说明更正分账业务说明增加订单唯一性说明1.1.52014-2-25沈仕人调整订单过期时间说明1.162014-4-18沈仕人目录1.目的52.通联互联网支付网关业务简介52.1 名词解释52.2 商户与通联合作程序52.3 支付业务流程52.3.1通联互联网支付网关的网银支付流程52.3.2通知支付结果处理流程62.3.3清算结算流程62.3.4退货流程63.商户系统接入接口定义63.1 页面订单提交接口63.2 支付结果返回接口93.3 单笔订单查询接口103.4 单笔订单查询结果返回接口103.5 批量订单查询接口113.6 批量订单查询结果返回接口113.7 单笔订单退款接口123.8 单笔订单退款结果返回接口123.9 业务扩展字段extTL介绍133.9.1单笔分账业务 格式参数说明 分账示例143.9.2单笔手续费收取业务格式 规则说明 手续费示例144.签名及验签机制154.1 进行MD5加密的签名源串及顺序154.2 签名154.3 验签165.开发165.1 开发步骤165.1.1Java环境165.1.2ASP和dotNet环境175.1.3PHP环境175.2 示例代码(Java)175.2.1商户网站对交易订单的报文组装关键代码175.2.2商户网站对交易结果的签名验证关键代码206.商户接入常见问题与解决Q&A217.附录227.1系统错误码227.2系统异常码247.3证件类型257.4B2C支持银行代码257.5B2B支持银行代码267.6WAP支付支持银行267.7外卡支付支持银行267.8币种类型261. 目的本文档为使用通联互联网支付网关的商户开发者编写。本文档为通联互联网支付网关的开发者和相关人员提供有效的指引和帮助。本文档的目标读者为技术人员。2. 通联互联网支付网关业务简介2.1 名词解释客户、持卡人:是指支付过程中的付款方,通常分为“个人客户”和“公司客户”。商户:是指支付过程中的收款方,商户需要向我司相关部门申请后获得商户身份,完成商户开户后会分配一个商户号给该商户。通联支付网关(Payment Gateway):是银行金融网络系统和Internet网络之间的接口,本文档中的通联支付网关是通联处理商家支付信息和顾客的支付指令并连接各银行完成支付业务的银行前置系统。2.2 商户与通联合作程序1. 商户与通联签订商户接入协议,通联为商户在通联支付网关系统开户2. 通联为该商户提供测试环境地址、商户号、KEY值及证书,同时向商户提供支付网关的开发包与接入开发指南3. 商户系统加载开发包,完成客户端开发并与通联支付网关测试系统进行联机测试4. 商户测试环境联调成功后,通联向商户发放生产商户号、KEY值、正式证书1) 通联业务人员配置商户证书基本信息,生成商户证书2) 通联业务人员审核允许商户下载证书3) 商户登录通联商户服务网站下载证书5. 商户参数配置1) 商户在通联注册的商户号2) 交易类型3) 通知接收地址4) 加密方式5) 其他支付参数6. 通联为商户开通互联网支付网关的接入权限7. 投入生产8. 清算结算及差错处理9. 报表下载2.3 支付业务流程2.3.1 通联互联网支付网关的网银支付流程1. 客户在商户网站选择商品,商户网站创建一个订单支付请求,支付参数采用HTTP表单(FORM)方式提交(订单上送格式参见3.1小节页面订单提交接口)2. 客户点击支付按钮,将订单发送到通联互联网支付网关的支付页面,支付页面路径如下:http(s):/通联支付网关地址/gateway/index.do3. 支付网关验证订单支付请求,显示支付页面4. 客户在支付页面上选择网银支付5. 网关把客户浏览器转发到网银系统完成支付6. 网关接收到网银系统的支付结果,如果成功,网关根据商户支付订单请求中的通知数据配置发送支付结果信息给商户网站(支付结果返回数据参见3.2小节支付结果返回接口)2.3.2 通知支付结果处理流程1. 持卡人付款成功后,支付网关接收到银行支付结果,服务端将支付结果通知给商户,有两种通知方式:页面通知和后台通知2. 商户上送订单支付请求中有receiveUrl(商户上送的后台通知地址)和pickupUrl(商户上送的页面通知地址)两字段,如果两个参数都填写,则服务端后台通知到receiveUrl地址,页面跳转方式通知到pickupUrl地址。3. 如果商户网站提交的支付请求中没有receiveUrl参数,只有pickupUrl参数,则以页面跳转方式通知到pickupUrl地址,从网关服务器发起到商户网站的pickupUrl连接请求,再把客户的浏览器转向到pickupUrl地址,将支付结果post到pickupUrl地址所在页面,同时服务端后台也通知到pickupUrl地址。4. 如果商户网站提交的支付请求中没有pickupUrl参数,只有receiveUrl参数,则以后台方式通知商户到receiveUrl地址,从网关服务器发起到商户网站的receiveUrl连接请求,将支付结果post到receiveUrl地址,同时页面也会跳转到receiveUrl地址。5. 一般建议商户两个地址都上送,分别处理后台通知和页面跳转通知。6. 商户网站接收到连接请求,处理对应的订单结果,支付结果返回报文格式(参见3.2小节支付结果返回接口)7. 只要通知成功则停止通知,若从网关服务器发起的到商户网站的url连接请求失败,则把对应的url连接请求发送到系统重发队列中,最多重发3次。2.3.3 清算结算流程2.3.4 退货流程3. 商户系统接入接口定义3.1 页面订单提交接口商户网站创建的订单支付请求报文是符合HTTP表单(Form)的形式,采用MD5签名(参见第4小节签名机验签机制),商户上送的form参数不允许含有空格字符,因此保证各参数头尾空格trim。注意:1、 通联通过merchantId 、orderDatetime 和orderNo 确定一笔订单,且同一笔订单的订单金额必须相同,如果是同一笔订单多次支付建议上述3个值上送时候保持不变。2、 每笔订单可以设定过期时间,超过过期时间(最大时间9999分钟后)的订单将被作废不允许支付。超过过期时间的订单要再支付的话,商户需要跟换订单号(或订单时间,但更建议跟换订单号)。接入互联网网关地址:测试环境:/gateway/index.do生产环境:/gateway/index.do接入手机网关提交地址:测试环境: /mobilepayment/mobile/SaveMchtOrderServlet.action生产环境: /mobilepayment/mobile/SaveMchtOrderServlet.action参数名称参数含义长度是否必填参数说明inputCharset字符集2不可空默认填1;1代表UTF-8、2代表GBK、3代表GB2312;pickupUrl付款客户的取货url地址100可为空客户的取货地址,pickupUrl和receiveUrl两个参数不能同时为空,建议两个地址都填写receiveUrl服务器接受支付结果的后台地址100可为空通知商户网站支付结果的url地址,pickupUrl和receiveUrl两个参数不能同时为空,建议两个地址都填写version网关接收支付请求接口版本10不可空默认填v1.0,固定选择值:v1.0、v2.0;注意为小写字母,无特殊需求请一律填写v1.0该字段决定payType、issuerId是否参与签名language网关页面显示语言种类2可为空默认填1,固定选择值:1;1代表简体中文、2代表繁体中文、3代表英文signType签名类型2不可空默认填1,固定选择值:0、1;0表示订单上送和交易结果通知都使用MD5进行签名1表示商户用使用MD5算法验签上送订单,通联交易结果通知使用证书签名Asp商户不使用通联dll文件签名验签的商户填0merchantId商户号30不可空数字串,商户在通联申请开户的商户号payerName付款人姓名32可为空英文或中文字符,当payType为3、issuerId为telpshx“直连模式”时,该值不可空,为办理银行卡时的所使用的姓名payerEmail付款人邮件联系方式50可为空字符串payerTelephone付款人电话联系方式16可为空数字串,当payType为3、issuerId不为空“直连模式”时,该值不可空,为付款人支付时所使用的手机号码payerIDCard付款人证件号22可为空数字串pid合作伙伴的商户号30可为空用于商户与第三方合作伙伴拓展支付业务,Partner merchantIdorderNo商户订单号50不可空字符串,只允许使用字母、数字、- 、_,并以字母或数字开头;每商户提交的订单号,必须在当天的该商户所有交易中唯一orderAmount商户订单金额10不可空整型数字,金额与币种有关如果是人民币,则单位是分,即10元提交时金额应为1000如果是美元,单位是美分,即10美元提交时金额为1000orderCurrency订单金额币种类型3不可空默认填00和156代表人民币、840代表美元、344代表港币orderDatetime商户订单提交时间14不可空日期格式:yyyyMMDDhhmmss,例如:20121116020101orderExpireDatetime订单过期时间14可为空整形数字,单位为分钟。 最大值为9999分钟。如填写则以商户上送时间为准,如不填写或填0或填非法值,则服务端默认该订单9999分钟后过期。productName商品名称256可为空英文或中文字符串,请勿首尾有空格字符productPrice商品价格20可为空整型数字productNum商品数量8可为空整型数字,默认传1productId商品代码20可为空字母、数字或- 、_ 的组合;用于使用产品数据中心的产品数据,或用于市场活动的优惠productDesc商品描述400可为空英文或中文字符串ext1扩展字段1128可为空英文或中文字符串,支付完成后,按照原样返回给商户ext2扩展字段2128可为空英文或中文字符串,支付完成后,按照原样返回给商户extTL业务扩展字段1024可为空参见接口技术规范文档3.9节介绍payType支付方式2不可空固定选择值:0、1、4、10、11、12、21、22接入手机网关时,该值填固定填0接入互联网关时,默认为间连模式,填0若需接入外卡支付,只支持直连模式,即固定上送payType=23,issuerId=visa或mastercard0代表未指定支付方式,即显示该商户开通的所有支付方式1个人网银支付4企业网银支付10 wap支付11信用卡支付12快捷付21认证支付23外卡支付非直连模式,设置为0;直连模式,值为非0的固定选择值该字段在version=v1.0时参与签名,version =v2.0 时不参与签名issuerId发卡方代码8可为空银行或预付卡发卡机构代码,用于指定支付使用的付款方机构。接入手机网关时,该值请留空该字段在version =v2.0 时不参与签名,version=v1.0时参与签名payType为0时,issuerId必须为空显示该商户支持的所有支付类型和各支付类型下支持的全部发卡机构payType为非0时,若issuerId为空显示该商户所填payType支付类型下的全部发卡机构payType为非0时,若issuerId不为空直接跳转到该商户所填payType下指定的发卡机构网银页面,支持发卡机构详见附录机构代码pan付款人支付卡号19可为空数字串,目前交行B2B直连模式才必填,并使用公钥加密(PKCS1)后进行Base64编码tradeNature贸易类型2可为空固定选择值:GOODS或SERVICES当币种为人民币时选填当币种为非人民币时必填,GOODS表示实物类型,SERVICES表示服务类型signMsg签名字符串1024不可空为防止非法篡改要求商户对请求内容进行签名,供服务端进行校验;签名串生成机制:按上述顺序所有非空参数与密钥key组合,经加密后生成signMsg;3.2 支付结果返回接口客户支付成功后,网关返回支付结果到商户网站,页面返回地址是商户提供的receiveUrl或pickupUrl地址。参数名称参数含义长度可否为空参数说明merchantId商户号30不可空数字串,与提交订单时的商户号保持一致version网关返回支付结果接口版本10不可空固定选择值:v1.0、v2.0;注意为小写字母language网页显示语言种类2可空固定值:1;1代表中文显示signType签名类型2不可空固定选择值:0、1,与提交订单时的签名类型保持一致payType支付方式2可空字符串,返回用户在实际支付时所使用的支付方式issuerId发卡方机构代码8可空字符串,返回用户在实际支付时所使用的发卡方机构代码paymentOrderId通联订单号50不可空字符串,通联订单号orderNo商户订单号50不可空字符串,与提交订单时的商户订单号保持一致orderDatetime商户订单提交时间14不可空数字串,与提交订单时的商户订单提交时间保持一致orderAmount商户订单金额10不可空整型数字,金额与币种有关如果是人民币,则单位是分,即10元提交时金额应为1000如果是美元,单位是美分,即10美元提交时金额为1000payDatetime支付完成时间14不可空日期格式:yyyyMMDDhhmmss,例如:20121116020101payAmount订单实际支付金额10不可空整型数字,实际支付金额,用户实际支付币种为人民币;以分为单位,例如10元返回时应为1000分ext1扩展字段1128可空字符串,与提交订单时的扩展字段1保持一致ext2扩展字段2128可空字符串,与提交订单时的扩展字段2保持一致payResult处理结果2不可空1:支付成功0:未付款仅在支付成功时通知商户。商户可以通过查询接口查询订单状态。errorCode错误代码10可空失败时返回的错误代码,可以为空。returnDatetime结果返回时间14不可空系统返回支付结果的时间,日期格式:yyyyMMDDhhmmsssignMsg签名字符串1024不可空以上所有非空参数按上述顺序与密钥组合,经加密后生成该值。3.3 单笔订单查询接口商户可以根据此接口进行单笔订单查询,单笔订单页面查询地址为http(s):/通联支付网关地址/gateway/index.do测试环境:/gateway/index.do生产环境:/gateway/index.do参数名称参数含义长度可否为空参数说明merchantId商户号30不可空数字串,与提交订单时的商户号保持一致version网关查询接口版本10不可空固定值:v1.5signType签名类型2不可空固定选择值:0、1;与客户提交订单填写的值保持一致orderNo商户订单号50不可空字母、数字、-、_ 及其组合,与提交订单时的商户订单号保持一致orderDatetime商户订单提交时间14不可空数字串,与提交订单时的商户订单提交时间保持一致,仅支持查询(当前时间-31天)以内的订单queryDatetime商户提交查询的时间14不可空此时间不能与系统当前时间相差15分钟signMsg签名字符串1024不可空以上所有非空参数按上述顺序与密钥key组合,经加密后生成该值。3.4 单笔订单查询结果返回接口单笔查询只返回支付成功的订单,单笔订单查询的结果有两种处理方式:1、 异步方式将交易结果通知到原交易发起时上送的receiveUrl,接口与“支付结果返回接口”完全相同,参见第3.2小节。2、 同步返回结果,通过解析通联返回的字符串,验证签名信息再判断支付结果,可参考范例代码(JAVA:merchantOrderQuery.html &merchantOrderQuery.jsp; ASP:参考ETSClientDemo工程)3.5 批量订单查询接口商户可以根据此接口进行批量订单查询,批量订单页面查询地址为http(s):/通联支付网关地址/mchtoq/index.do测试环境:/mchtoq/index.do生产环境:/mchtoq/index.do参数名称参数含义长度可否为空参数说明version网关批量查询接口版本10不可空固定值:v1.6merchantId商户号30不可空数字串,与提交订单时的商户号保持一致beginDateTime查询订单的开始时间14不可空与endDateTime必须为同一天,日期填写格式:yyyymmddhh,例如:2013011600,目前只支持对当天订单进行查询endDateTime查询订单的结束时间14不可空与beginDateTime必须为同一天,日期填写格式:yyyymmddhh,例如:2013011623,查询时间范围为当天的00:00:0023:59:59pageNo查询页码2不可空从1开始,必须为数字signType签名类型2不可空固定值:1signMsg签名字符串1024不可空以上所有非空参数按上述顺序与密钥key组合,经加密后生成该值。3.6 批量订单查询结果返回接口批量查询只返回支付成功的订单,以文本同步方式返回,每页返回最大笔数为500笔,如果有下一页请用户调用查询接口做下一页查询。每页最多返回500笔订单记录,批量查询结果返回格式:汇总信息+交易明细+换行+签名信息,商户根据首行的【是否有下一页(Y/N)】来判断是否要做下一页查询,处理结果:1代表支付成功;0代表未支付。如果查询结果无记录,则只有汇总信息(商户号,笔数为0,页码为0,是否有下一页为N)+换行+签名信息(签名信息与上行之间有一空行)汇总信息:商户号|当页笔数|当前页码|是否有下一页交易明细:商户号|通联订单号|商户订单号|商户订单提交时间|商户订单金额|支付完成时间|订单实际支付金额|扩展字段1|扩展字段2|处理结果签名信息:对汇总信息+交易明细+换行用证书签名所得值成功响应报文示例:100020091218001|1|1|N 100020091218001|20130108100811000|NO20130108020644452|20130108000000|100|2013-01-08|100|1 KjZSXMf1nH6Q/wD22xI59ImN8Wzix15UcqA18pZeaWp7vQevMOA4UXTTX/mbqDAiTSEIwp3hQ8bVZnAoXi4TRseAUu6hTrdqpLTAO/E8+A/7OTCww0ifixPkD654RkTYQSiEZndW4Tx1l5xcGsxBrAJuEm8KrhCemZcAB8JlqRo=异常响应报文:ERRORCODE=错误编码&ERRORMSG=错误信息,详见系统异常码ps:响应报文都是Base64编码后的内容,客户端接收到响应内容后需要先解码,详见提供的demo3.7 单笔订单退款接口商户可根据此接口进行订单退款申请,支持部分退款申请,即退款金额=订单金额,联机退款提交地址为http(s):/通联支付网关地址/gateway/index.do测试环境:/gateway/index.do生产环境:/gateway/index.do参数名称参数含义长度可否为空参数说明version网关联机退款接口版本10不可空固定值:v1.3signType签名类型2不可空固定值:0,0表示用md5签名merchantId商户号30不可空数字串,与提交订单时的商户号保持一致orderNo商户订单号50不可空字母、数字、-、_ 及其组合,与提交订单时的商户订单号保持一致refundAmount退款金额10不可空整型数字,金额与币种有关如果是人民币,则单位是分,即10元提交时金额应为1000如果是美元,单位是美分,即10美元提交时金额为1000系统支持部分退款,但需保证退款金额=订单金额orderDatetime商户订单提交时间14不可空数字串,与提交订单时的商户订单提交时间保持一致signMsg签名字符串1024不可空以上所有非空参数按上述顺序与密钥key组合,经加密后生成该值。3.8 单笔订单退款结果返回接口商户根据通联返回的订单退款结果进行验签,查询订单退款状态;退款申请应答报文通联固定采用MD5签名,故商户收到退款申请应答报文使用MD5验签。参数名称参数含义长度可否为空参数说明merchantId商户号30不可空数字串,与提交订单时的商户号保持一致version网关联机退款接口版本10不可空固定值:v1.3signType签名类型2不可空固定选择值:0、1;与客户提交订单填写的值保持一致orderNo商户订单号50不可空字母、数字、-、_ 及其组合,与提交订单时的商户订单号保持一致orderAmount商户订单金额10不可空整型数字,金额与币种有关,以十分之一厘为单位如果是人民币,即10元返回时金额应为100000如果是美元,即10美元返回时金额应为100000单位请商户自行转化orderDatetime商户订单提交时间14不可空数字串,与提交订单时的商户订单提交时间保持一致refundAmount退款金额10不可空整型数字,金额与币种有关,以十分之一厘为单位如果是人民币,即10元返回时金额应为100000如果是美元,即10美元返回时金额应为1000单位请商户自行转化refundDatetime退款受理时间14不可空数字串、退款申请受理的时间日期格式:yyyyMMDDhhmmss 如20121116143030refundResult退款结果10不可空成功:20 其他为失败errorCode错误编码10可空失败时返回的错误代码,可以为空。请参见系统错误码returnDatetime结果返回时间14不可空数字串、退款申请完成的时间日期格式:yyyyMMDDhhmmss 如20121116143030signMsg签名字符串1024不可空以上所有非空参数按上述顺序与密钥组合,经加密后生成该值。商户退款申请交易使用MD5验签3.9 业务扩展字段extTL介绍在页面订单提交接口报文中含有extTL字段,该字段用于扩展通联业务需求而设置的,商户可以在该字段设置多个业务组合,目前通联的扩展业务有单笔分账业务和单笔手续费收取业务。格式:业务规则A业务规则N3.9.1单笔分账业务与通联签约单笔分账业务的商户,可通过该字段上送分账配置。 格式业务名:A00001业务规则:分账类型|通联账户号1,固定金额或比例|通联账户号2,固定金额或比例|参数说明参数名称长度参数说明分账类型1固定值1表示按固定金额分账2表示按比例分账通联账户号20由通联分配的账户号。商户登录通联商户服务平台绑定分账账户,系统为每个账户分配一个唯一的通联账户号。比例或固定金额14分账类型为1时,该值单位为分,整型,如:1000表示10元分账类型为2时,该值单位为百分比,数值型,保留两位有效小数,如:5.5 表示5.5%补充说明:1) 按固定金额分账时,总金额不超过该笔订单金额;按比例分账时,总百分比不超过100%;2) 最多可配置10个通联账户号;3) 因分账配置不合法导致无法正常分账的,该笔订单金额将划至商户的余额账户中。4) 用A00001表示分账业务 分账示例1) 1|10203040506070809001,1000|10203040506070809002,200表示按固定金额分账,通联账户10203040506070809001分10元,通联账户10203040506070809002分2元。2) 2|10203040506070809001,10|10203040506070809002,0.5表示按比例分账,通联账户10203040506070809001分10%,通联账户10203040506070809002分0.5%。Eg:当商户开通了单笔分账业务,那么需在扩展字段extTL中上送:2|10203040506070809001,10|10203040506070809002,单笔手续费收取业务通常情况商户接入通联网关,通联默认是向商户收取手续费,但为满足向持卡人收取手续费的需求,商户在上送订单时可在extTL字段中设置手续费收取对象。首先运营人员向该商户针对指定支付方式和银行设置手续费收取对象,可配置向商户和持卡人收取,默认都是向商户收取;若需向持卡人收取手续费,商户则按规则在extTL字段上送手续费,仅支持直连银行方式(payType为非0,issuerId不为空),支持的支付方式包括:个人网银b2c、信用卡支付、企业网银支付、wap支付。格式业务名:U00010业务规则:商户订单原始金额(不包括手续费)|用户手续费金额单位分,原订单金额+用户手续费金额= orderAmount值 规则说明1)若向商户收取手续费,则extTL字段不上送2)若向持卡人收取手续费,则在extTL字段上送手续费规则3)若向持卡人收取手续费,需指定支付方式和银行发卡机构4)手续费规则遵循签订合同约定,支持:按每笔交易金额比率、按每笔固定手续费用、按每笔交易上下限额5)手续费金额和原订单金额单位均为分,整数型,若计算出不满足需四舍五入取整 手续费示例Eg:按每笔交易金额比率,每笔0.5%:100000|500按每笔固定手续费用,每笔1元:100000|100按每笔交易上下限额,每笔0.5%;当手续费10元则每笔收10元:100000|500,10000|100,300000|10004. 签名及验签机制4.1 进行MD5加密的签名源串及顺序为防止非法篡改要求商户对请求内容进行签名,按第3小节中接口报文参数说明,签名源串是由除signMsg字段以外的所有非空字段内容按照报文字段的先后顺序依次按照“字段名=字段值”的方式用“&”符号连接。举例说明:商户开发页面订单提交接口时,签名源串signSrc为:inputCharset=1&pickupUrl=/demo/eshop/display-pay-result/display.do&receiveUrl=/demo/eshop/recv-pay-result/recv.do&version=v1.0&language=1&signType=1&merchantId=100020091218001&payerName=mc&payerEmail=&payerTelephoneorderNo=NO20100716131226&orderAmount=1&orderCurrency=0&orderDatetime=20100716131226&productName=Dell&productPrice=100&productNum=1&productId=P1005001&productDesc=Good&ext1=ext1&ext2=ext2注意事项:a.只有字段值为非空的字段内容才按上述格式放到签名字符串中参与签名;b.签名字符串头部与尾部需要连接字符串“&”;c.如果有字段内容为汉字,则必须按照指定的或者默认的字符集编码;4.2 签名签名是为了防止从商户系统提交的支付请求被非法篡改。签名方法采用标准的MD5算法来计算签名字符串的消息摘要。签名规则:在签名源串末尾增加MD5密钥(key),其中密钥商户可以在通联支付网关商户服务网站上设置和维护,然后使用MD5算法(MessageDigest md = MessageDigest.getInstance(MD5)方法),生成的字节再转换成十六进制字符串,从而得到该签名字符串的消息摘要,signMsg的值即此消息摘要。举例说明:inputCharset=1&pickupUrl=/demo/eshop/display-pay-result/display.do&receiveUrl=/demo/eshop/recv-pay-result/recv.do&version=v1.0&language=1&signType=1&merchantId=100020091218001&payerName=mc&payerEmail=&payerTelephoneorderNo=NO20100716131226&orderAmount=1&orderCurrency=0&orderDatetime=20100716131226&productName=Dell&productPrice=100&productNum=1&productId=P1005001&productDesc=Good&ext1=ext1&ext2=ext2&key=1234567890使用MD5算法对签名字符串计算摘要,MD5中的字母需转换为大写字母,例如上面的签名字符串所计算出的摘要为CCFFF9C33B70FC6037677B3E9BA1A2CC,此值即为signMsg的字段值。md5算法和十六进制转换代码示例:public static String MD5Encode(String aData) throws SecurityException String resultString = null;try MessageDigest md = MessageDigest.getInstance(MD5);resultString = bytes2HexString(md.digest(aData.getBytes(UTF-8); catch (Exception e) e.printStackTrace();throw new SecurityException(MD5运算失败);return resultString;public static String bytes2HexString(byte b) String ret = ;for (int i = 0; i b.length; i+) String hex = Integer.toHexString(bi & 0xFF);if (hex.length() = 1) hex = 0 + hex;ret += hex.toUpperCase();return ret;4.3 验签验签是商户为了验证接收到的报文数据确实是通联支付系统发送的。商户接收到通联返回的应答报文,解析报文中的signType字段,若signType为0则使用MD5算法进行验签;若signType为1则使用通联提供的公钥证书进行验签。使用MD5算法验签:若signType为0,在签名字符串末尾增加MD5密钥,密钥是在通联支付网关会员服务网站上设置,使用MD5算法计算该签名字符串的消息摘要,将生成的摘要与通联返回的signMsg进行比对,如果相等则验签通过,反之不通过。使用通联公钥证书验签:若signType为1,则使用通联的公钥证书进行验签,调用通联提供的allinpay-security-xxx.jar中的verify()方法。5. 开发5.1 开发步骤5.1.1 Java环境1) 环境准备,JDK1.4以上。2) 安装MPI:拷贝allinpay-security-xxx.jar、及与JDK版本对应的bcprov-jdkxx-xxx.jar到开发环境的classpath目录下。5.1.2 ASP和dotNet环境1) 环境准备。2) 安装MPI:确保 Microsoft .NET Framework2.0已安装;执行regasm /codebase 命令向操作系统注册ETSClient.dll文件,并将BouncyCastle.Crypto.dll文件放在与ETSClient.dll相同的目录下;配置文件证书(可采用任一配置方式):方式一、商户指定证书路径,验签时需对PaymentResult对象设置证书路径,paymentResult.setCertPath(“指定证书TLCert.cer路径”);方式二、若未指定证书路径,也可拷贝TLCert.cer到%System%system32目录下,商户需确保有权限访问system32下证书信息;方式三、或者编辑tlprop.ini文件,并保存到%system%目录下,并根据ini文件设置拷贝证书文件到相应目录,tlprop.ini文件内容参看开发包示例。5.1.3 PHP环境windows环境在apache2.0.59 + php4.4.7+mysql下测试通过linux环境在apache2.2.3 + php5.2.13下测试通过确保Apache、php、mysql已正确安装。确保Apache可以正确调用php环境解析php文件。Linux环境下,需导入php高精度函数库,编译php时请加上enable-bcmat参数。如不加此参数,系统可能提示:bcmul() 函数不可用,因为php的高精度函数,需要在编译php的时候加入bcmat模块,在编译脚本里增添“enable-bcmath”后重新编译、重启apache即可。拷贝php-rsa.php文件到应用系统。注意文件的调用配置,本示例中所有的文件都在相同目录下。post.html为样例入口页面,请商户自行修改“通联支付网关地址”,修改pickupUrl和receiveUrl为接受结果地址。参数修改请参考样例中的注释。5.2 示例代码(Java)示例代码对应的订单处理流程:5.2.1 商户网站对交易订单的报文组装关键代码%/页面编码要与参数inputCharset一致,否则服务器收到参数值中的汉字为乱码而导致验证签名失败。request.setCharacterEncoding(UTF-8); String msg=;String key=request.getParameter(key);String version=request.getParameter(version);String language=request.getParameter(language);String inputCharset= request.getParameter(inputCharset);String merchantId=request.getParameter(merchantId);String pickupUrl=request.getParameter(pickupUrl);String receiveUrl=request.getParameter(receiveUrl);String payType=request.getParameter(payType);String signType=request.getParameter(signType);String orderNo=request.getParameter(orderNo);String orderAmount=request.getParameter(orderAmount);String orderDatetime=request.getParameter(orderDatetime);String orderCurrency=request.getParameter(orderCurrency);String orderExpireDatetime=request.getParameter(orderExpireDatetime);String payerTelephone=request.getParameter(payerTelephone);String payerEmail=request.getParameter(payerEmail);String payerName=request.getParameter(payerName);String payerIDCard=request.getParameter(payerIDCard);String pid=request.getParameter(pid);String productName=request.ge
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 63522-32:2025 EN-FR Electrical relays - Tests and measurements - Part 32: Acoustic noise
- 2025年药剂师执业资格考试试卷及答案
- 2025年网络营销师考试卷及答案
- 2025年地理信息系统应用与开发知识测验试题及答案
- 2025年动物医学专业基础考试试卷及答案
- 2025年茶艺师职业资格考试卷及答案
- 2025年环境科学与工程专业考试题及答案的复习卷
- 2025年互联网经济与金融创新考试试卷及答案
- 2025年搪瓷制品相关日用品生产设备合作协议书
- 万安保安考试题及答案大全
- 租赁换电定制合同协议
- 玻璃高空吊装合同协议
- 2025标准技术咨询服务合同模板
- 1.3 科学的世界观和方法论 课件-高中政治统编版必修四哲学文化
- 慢性肾脏病肌少症诊断治疗与预防专家共识(2024年版)解读
- 砸墙拆除合同
- 初级会计师考试历年真题试题及答案
- 汽车制造业产品质量管理措施
- 中国老年患者术后谵妄防治专家共识
- 科学上海会考试卷及答案
- 大模型备案-落实算法安全主体责任基本情况-XX集团有限公司
评论
0/150
提交评论