财付通接口

目前做的测试版本为无验证支付,只需要输入借记卡,以及开卡基本信息就可以,只要把例子里面的方法改成接口便可

例子下载

http://download.csdn.net/detail/qq873113580/5980471

 

下面是开发指南

 

 

 

财付通无卡支付开发指南

 

 

 


 

 

  

1....引言.......................................................... 4

1.1       文档概述............................................................................ 4

1.2       阅读对象............................................................................ 4

1.3       业务术语............................................................................ 4

2....方案概述...................................................... 5

2.1       行业背景............................................................................ 5

2.2       接口介绍............................................................................ 5

2.3       业务实现流程........................................................................ 6

3....交互模式...................................................... 6

3.1       页面跳转交互模式.................................................................... 6

3.2       后台系统调用交互模式................................................................ 7

3.3       后台通知交互模式.................................................................... 8

4....数据格式...................................................... 8

4.1       GET或POST.......................................................................... 8

4.2       XML数据格式........................................................................ 9

4.3       字符串格式.......................................................................... 9

5....数字签名...................................................... 9

5.1       签名原始串......................................................................... 10

5.2       签名算法........................................................................... 10

5.2.1       MD5签名..................................................................... 10

6....补单机制..................................................... 10

7....接口......................................................... 11

7.1       支付接口........................................................................... 11

7.1.1       业务功能..................................................................... 11

7.1.2       交互模式..................................................................... 11

7.1.3       请求参数列表................................................................. 11

7.1.4       返回结果和通知参数列表....................................................... 13

7.1.5       后台通知结果反馈............................................................. 17

7.2       验证码确认接口..................................................................... 17

7.2.1       业务功能..................................................................... 17

7.2.2       交互模式..................................................................... 17

7.2.3       请求参数列表................................................................. 17

7.2.4       应答参数列表................................................................. 18

7.3       通知查询接口....................................................................... 20

7.3.1       业务功能..................................................................... 20

7.3.2       交互模式..................................................................... 20

7.3.3       请求参数列表................................................................. 20

7.3.4       应答参数列表................................................................. 20

7.4       订单查询接口....................................................................... 22

7.4.1       业务功能..................................................................... 22

7.4.2       交互模式..................................................................... 22

7.4.3       请求参数列表................................................................. 22

7.4.4       应答参数列表................................................................. 23

7.4退款接口............................................................................. 24

7.4.1业务功能....................................................................... 24

7.4.2交互模式....................................................................... 25

7.4.3请求参数列表................................................................... 25

7.4.4       应答参数列表................................................................. 26

7.5退款明细查询接口..................................................................... 28

7.5.1业务功能....................................................................... 28

7.5.2交互模式....................................................................... 28

7.5.3请求参数列表................................................................... 28

7.5.4应答参数列表................................................................... 29

8....实例......................................................... 31

9....注意事项..................................................... 33

1  引言

1.1    文档概述

本文描述了财付通针对合作商户提供的信用卡、借记卡无卡支付方案,帮助商户轻松实现自助收款的功能。文档分别从交互模式、签名、接口、注意事项等方面详细介绍了财付通的工作方式和开发过程,可以帮助开发人员快速入门并掌握开发技能,同时也可以作为日后接口参数以及参数类型的速查手册。

1.2    阅读对象

合作商户系统的技术开发人员,要求具有WEB程序开发背景,了解http和https请求和应答的格式和过程,对XML格式有所掌握。

 

1.3    业务术语

术语

示例

说明

商户号

1900000107

机票平台的账号,只用于记账,由财付通自动分配的10位数字

密钥

9ba2380ad9b2aacb96bca514eda27ac9

为保证通讯不被篡改,财付通与商户之间约定的32位字符串,算签名sign时使用

账户

jpgyf@qq.com

财付通账户号,目前支持三种格式:qq号码和email账户、手机号

金额

100000

金额,默认为RMB,以分为单位。1000表示RMB10.00

2  方案概述

2.1    行业背景

财付通无卡支付是一款网上无磁支付产品,是对传统网上POS产品的优化升级。用户只要身份信息、手机号、卡号在银行端验证通过,就可通过卡号、有效期信息、CVV码或者取款密码即时完成支付。 不需要开通网银、不需要签约、额度大、支持存量卡和联名卡。

应用场景除了电子机票、酒店预订等实名制行业外,还应用于实物,如网上商城上有收货地址的实物交易场景。

2.2    接口介绍

 

接口名

请求URL

功能说明

结果说明

支付接口

https://mch.tenpay.com/cgi-bin/pay_i_access.cgi

调用该接口时指定支付参数,完成买家账户向商家账户的支付,采用后台系统调用交互模式和后台通知交互模式

结果分两路返回:一路为实时返回XML格式的信息;一路为后台在notify_url后添加参数返回,要求后台notify_url收到通知后进行响应。

验证码验证接口

https://mch.tenpay.com/cgi-bin/pay_i_verify.cgi

调用该接口验证验证码的有效性

验证结果以XML格式实时返回

通知查询接口

https://mch.tenpay.com/cgi-bin/fpay_querynotifyid.cgi

商户在收到后台通知后根据通知ID向财付通发起通知内容的查询,采用后台系统调用交互模式

财付通把具体的通知内容按XML格式实时返回

订单查询接口

https://mch.tenpay.com/cgi-bin/fpay_queryorder.cgi

商户在后台对任意一笔订单发起查询,采用后台系统调用交互模式

根据订单号以XML格式返回具体的订单内容和状态

退款接口

https://mch.tenpay.com/refundapi/gateway/refund.xml

商户在后台对一笔已支付订单发起退款,采用后台系统调用交互模式

退款成功、失败或者退款流程中的结果实时返回

退款明细查询接口

https://gw.tenpay.com/gateway/normalrefundquery.xml

根据退款ID查询具体的退款明细

退款明细数据实时返回

 

2.3    业务实现流程

2.3.1   电话回呼流程:

2.3.2       验证码验证流程:

3  交互模式

3.1    页面跳转交互模式

页面跳转交互模式是指商户系统与财付通系统的数据交互通过用户浏览器中转进行,是一种非实时的异步交互。

如买家下单买一个商品,商户系统会生成一个支付链接,此链接通过用户的浏览器跳转到财付通系统,财付通通过此链接获取支付请求的参数,这个支付请求用的就是页面跳转交易模式。

用户在财付通页面完成支付后,财付通通过return_url跳转到商户系统。

3.2    后台系统调用交互模式

后台系统调用交互模式是指商户系统向财付通系统发送请求数据,并同步等待财付通系统处理完毕后返回的响应数据。数据交互是商户服务器与财付通服务器直接通信,一般请求采用http的get或post,应答采用xml数据格式。

如用户在商户系统查询时,商户要确认用户某个订单是否支付成功,可以在服务器上发送一个查询请求,财付通收到请求后把查询结果以xml格式返回给商户,商户处理结果后再显示给用户。

3.3    后台通知交互模式

后台通知交互模式是指财付通系统主动向商户系统发送通知数据,并同步等待商户系统处理完毕后返回的响应数据。数据交互是财付通服务器与商户服务器直接通信,一般请求采用http的get或post,应答用字符串格式。

如用户在财付通支付成功后,财付通会在后台通过notify_url向商户系统发起通知,商户处理后成功返回success,失败返回fail或其他字符。

4  数据格式

4.1    GETPOST

采用HTTPS标准的GET或POST协议,为了保证接收方接收数据正确,传递的参数如果存在特殊字符(如&、=等)需要进行URL Encode

GETPOST一般用于页面跳转交互模式的请求和通知、后台系统调用模式的请求、后台通知模式的请求。

4.2    XML数据格式

采用标准XML协议,所有参数只存在一级节点中,不采用多级节点嵌套。

<?xmlversion="1.0" encoding="gb2312" ?>

<root>

    <retcode>0</retcode>

    <retmsg></retmsg>

    <partner>1900000109</partner>

<status>0</status>

<sign>8DB4A013A8B515349C307F1E448CE836</sign>

</root>

一般有返回码retcode参数,0表示调用成功;非0表示调用失败,失败时结果不签名,只有retcode和返回信息retmsg。

XML一般用于后台系统调用模式的应答。

4.3    字符串格式

直接以简单字符串作为数据内容,一般用于后台通知模式的接口反馈,表示处理是否成功。

 

返回结果

结果说明

success

处理成功,财付通系统收到此结果后不再进行后续通知

fail或其他字符

处理不成功,财付通收到此结果或者没有收到任何结果,系统通过补单机制(详见第6节)再次通知

 

 

5  数字签名

为了保证数据传输过程中的数据真实性和完整性,我们需要对数据进行数字签名,在接收签名数据之后进行签名校验。

数字签名有两个步骤,先按一定规则拼接要签名的原始串,再选择具体的算法和密钥计算出签名结果。

一般失败的结果不签名。

5.1    签名原始串

无论是用get、post还是xml,签名原始串组串方式都一致,除sign字段外,待签名参数按照字段名的ascii码从小到大排序后使用QueryString的格式(即key1=value1&key2=value2…)拼接而成,空值不传递,不参与签名。

    签名时字段名和字段值都采用原始值,不进行URL Encode。

    签名的字段包括请求中有所的get或post字段,除了接口中描述的字段外,还应包括请求中出现的其它字段。

5.2    签名算法

目前暂只支持MD5签名

5.2.1       MD5签名

MD5 是一种摘要生成算法,通过在签名原始串后加上商户通信密钥的内容,进行MD5运算,形成的摘要字符串即为签名结果。为了方便比较,签名结果统一转换为大写字符。

MD5签名计算公式:

sign = Md5(原字符串&key=商户密钥). toUpperCase

如:

  签名原始串是:input_charset=GBK&partner=1900000109&total_fee=1

商户密钥是:8db4a013a8b515349c307f1e448ce836

签名的结果为:

sign=md5(input_charset=GBK&partner=1900000109&total_fee=1&key=8934e7d15453e97507ef794cf7b0519d)=8DB4A013A8B515349C307F1E448CE836

6  补单机制

对后台通知交互模式,如果财付通收到商户的应答不是success或超时,财付通认为通知失败,财付通会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但财付通不保证通知最终能成功。

由于存在重新发送后台通知的情况,因此同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。

财付通推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回success。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。

7  接口

7.1    支付接口

7.1.1       业务功能

买家在商户网站拍下商品后,商户系统调用财付通无卡支付接口,财付通处理扣款后直接返回结果(XML),同时服务器后台通知商户(notify_url)支付结果。

7.1.2       交互模式

后台调用交互模式+后台通知交互模式

7.1.3       请求参数列表

请求url:https://mch.tenpay.com/cgi-bin/pay_i_access.cgi

通过post请求

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

银行类型

bank_type

String(16)

银行类型,工行:ICBC,建行CCB,详情见9节银行列表

商品描述

body

String(32)

商品描述

附加数据

attach

String(255)

附加数据,原样返回

通知URL

notify_url

String(255)

接收财付通通知的URL,需给绝对路径,255字符内,格式如:http://wap.tenpay.com/ tenpay.asp

买方财付通账号

buyer_id

String(64)

买方的财付通账户(QQ 或EMAIL)。若商户没有传该参数,则在财付通支付页面,买家需要输入其财付通账户。

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

商户订单号

out_trade_no

String(32)

商户系统内部的订单号,32个字符内、可包含字母,确保在商户系统唯一

总金额

total_fee

Int

订单总金额,单位为分

币种

fee_type

Int

现金支付币种,取值:1(人民币),默认值是1,暂只支持1

用户IP

spbill_create_ip

String(15)

订单生成的机器IP,指用户浏览器端IP,不是商户服务器IP

交易起始时间

time_start

String(14)

订单生成时间,格式为yyyymmddhhmmss,如2009年12月25日9点10分10秒表示为20091225091010。时区为GMT+8 beijing。该时间取自商户服务器

交易结束时间

time_expire

String(14)

订单失效时间,格式为yyyymmddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。时区为GMT+8 beijing。该时间取自商户服务器。默认最长时间为24小时。

物流费用

transport_fee

Int

物流费用,单位为分。如果有值,必须保证transport_fee +  product_fee=total_fee

商品费用

product_fee

Int

商品费用,单位为分。如果有值,必须保证transport_fee + product_fee=total_fee

商品标记

goods_tag

String(32)

   

补充信息

additional_info

String(255)

该字段填写内容为:

机票:乘机人(姓名、证件类型和证件号码)、航班信息(名称、时间)、乘机人或联系人联系方式,共计6项内容。保险、旅游类的暂同机票类填写实际受保人或旅客的姓名,证件类型,证件号码,联系方式和商品名称。

说明:多张机票多个乘机人,填写其中一个的对应信息。

例:

格式为:行业类型^实际附加信息(都用^号分隔) 

例如: 1^XXX姓名^身份证^410101XXXXX身份证号^北京--上海^2011-10-09^189XXXXXXXX手机号码

 

配送信息

delivery_info

String(255)

配送信息

卡类型

account_type

string(4)

银行类型:1 借记卡;2 信用卡

银行卡号

account_no

String(32)

银行卡号

客户姓名

account_name

String(64)

客户姓名

信用卡有效期

credit_valid

String(6)

若银行类型为信用卡,则必填。信用卡有效期,YYMM

证件类型

cert_type

Int

1身份证;2护照;3军官证;4士兵证;5回乡证;6临时身份证;7户口簿;8警官证;9台胞证;10营业执照;11其它证件

证件号码

cert_id

String(32)

证件号码

手机号码

mobile_number

String(32)

持卡人登记的手机号码,为裸号,不带国家码和地区号,如:13812345678

拨打号码

call_number

String(32)

持卡人的拨打号码,不带国家码

信用卡安全码

credit_cvv2

String(10)

信用卡CVV,3位数字

开户地区

account_area

string(6)

财付通提供的开户地区编码,暂时无需填写

开户城市

account_city

string(6)

财付通提供的开户城市编码,暂时无需填写

操作员

op_user_id

Int

操作员帐号,默认为商户号

操作员密码

op_user_passwd

String(32)

操作员密码,默认为商户后台登录密码,需MD5加密。

验证方式

 

verify_type

Int

支付渠道标识,取值0 默认指定方式,会转化为以下方式中的一种;

1 不校验,(此验证方式少量由于风控因素有可能转化为2);

2 通过商户获取验证码校验;

3 电话支付回呼;

 

 

7.1.4       返回结果和通知参数列表

数据按XML的格式实时返回,后台通知通过请求中的notify_url通知,采用get或post

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

返回状态码

retcode

Int

返回状态码,0表示成功,其他错误。

XML数据返回时才有此字段,且是一定返回。

返回信息

retmsg

String(64)

返回信息,如非0,为错误原因。

XML数据返回时才有此字段

交易状态

trade_state

Int

支付结果:

0 支付成功;

1 等待验证;

2 失败

交易结果信息

pay_info

String(64)

交易结果信息

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

付款银行

bank_type

String(16)

银行类型

银行订单号

bank_billno

String(32)

银行订单号,若为财付通余额支付则为空

总金额

total_fee

Int

支付金额,单位为分,如果discount有值,通知的total_fee + discount = 请求的total_fee

币种

fee_type

Int

现金支付币种,目前只支持人民币,默认值是1-人民币

财付通订单号

transaction_id

String(28)

财付通交易号

商户订单号

out_trade_no

String(32)

商户系统的订单号,与请求一致。

商家数据包

attach

String(64)

商家数据包,原样返回

支付完成时间

time_end

String(14)

支付完成时间,格式为yyyymmddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。时区为GMT+8 beijing。该时间取自财付通服务器

物流费用

transport_fee

Int

物流费用,单位分,默认0。如果有值,必须保证transport_fee +  product_fee  = total_fee

物品费用

product_fee

Int

物品费用,单位分。如果有值,必须保证transport_fee +  product_fee=total_fee

折扣价格

discount

Int

折扣价格,单位分,如果有值,通知的total_fee + discount = 请求的total_fee

验证方式

 

verify_type

Int

支付渠道标识,与原传值可能发生变化,已返回为准;

1 不校验,(此验证方式少量由于风控因素有可能转化为2);

2 通过商户获取验证码校验;

3 电话支付回呼;

 

 

通知中参数,包含如下内容:

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

交易状态

trade_state

Int

支付结果:

0 支付成功;

1 等待验证;

交易结果信息

pay_info

String(64)

交易结果信息

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

付款银行

bank_type

String(16)

银行类型

银行订单号

bank_billno

String(32)

银行订单号,若为财付通余额支付则为空

总金额

total_fee

Int

支付金额,单位为分,如果discount有值,通知的total_fee + discount = 请求的total_fee

币种

fee_type

Int

现金支付币种,目前只支持人民币,默认值是1-人民币

通知ID

notify_id

String(64)

支付结果通知id,对于某些特定商户,只返回通知id,要求商户据此查询交易结果

财付通订单号

transaction_id

String(28)

财付通交易号

商户订单号

out_trade_no

String(32)

商户系统的订单号,与请求一致。

商家数据包

attach

String(64)

商家数据包,原样返回

支付完成时间

time_end

String(14)

支付完成时间,格式为yyyymmddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。时区为GMT+8 beijing。该时间取自财付通服务器

物流费用

transport_fee

Int

物流费用,单位分,默认0。如果有值,必须保证transport_fee +  product_fee  = total_fee

物品费用

product_fee

Int

物品费用,单位分。如果有值,必须保证transport_fee +  product_fee=total_fee

折扣价格

discount

Int

折扣价格,单位分,如果有值,通知的total_fee + discount = 请求的total_fee

验证方式

   

 

verify_type

Int

支付渠道标识,与原传值可能发生变化,已返回为准;

1 不校验,(此验证方式少量由于风控因素有可能转化为2);

2 通过商户获取验证码校验;

3 电话支付回呼;

 

7.1.5       后台通知结果反馈

财付通后台通过notify_url通知商户,商户做业务处理后,需要以字符串的形式反馈处理结果,内容如下:

 

返回结果

结果说明

success

处理成功,财付通系统收到此结果后不再进行后续通知

fail或其它字符

处理不成功,财付通收到此结果或者没有收到任何结果,系统通过补单机制(详见第6节)再次通知

 

7.2    验证码确认接口

7.2.1       业务功能

商户接收到用户的验证码后,可以通过此接口发送验证码给财付通,财付通验证正确后完成支付。

7.2.2       交互模式

后台系统调用交互模式

7.2.3       请求参数列表

请求url:https://mch.tenpay.com/cgi-bin/pay_i_verify.cgi

通过get或post请求

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

验证码

verify_id

String(10)

短信验证码

商户订单号

out_trade_no

String(32)

商户系统内部的订单号, out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先

财付通订单号

transaction_id

String(28)

财付通交易号, out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先。对于采用财付通其他支付接口(非本文档7.1接口),查询时只能使用transaction_id,不能使用out_trade_no

手机号码

mobile_number

String(32)

用户获取验证码的手机号码,为裸号,不带国家码和地区号,如:13812345678

操作员

op_user_id

Int

操作员帐号,默认为商户号

操作员密码

op_user_passwd

String(32)

操作员密码,默认为商户后台登录密码,需MD5加密。

 

7.2.4       应答参数列表

数据按XML的格式实时返回

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

返回状态码

retcode

Int

返回状态码,0表示成功,其他错误

XML数据返回时才有此字段,且是一定返回

返回信息

retmsg

String(64)

返回信息,如非0,为错误原因。

XML数据返回时才有此字段

交易状态

trade_state

Int

支付结果:

0 支付成功;

1 等待验证;

2 失败

交易结果信息

pay_info

String(64)

交易结果信息

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

付款银行

bank_type

String(16)

银行类型

银行订单号

bank_billno

String(32)

银行订单号,若为财付通余额支付则为空

总金额

total_fee

Int

支付金额,单位为分,如果discount有值,通知的total_fee + discount = 请求的total_fee

币种

fee_type

Int

现金支付币种,目前只支持人民币,默认值是1-人民币

财付通订单号

transaction_id

String(28)

财付通交易号

商户订单号

out_trade_no

String(32)

商户系统的订单号,与请求一致。

商家数据包

attach

String(64)

商家数据包,原样返回

支付完成时间

time_end

String(14)

支付完成时间,格式为yyyymmddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。时区为GMT+8 beijing。该时间取自财付通服务器

物流费用

transport_fee

Int

物流费用,单位分,默认0。如果有值,必须保证transport_fee +  product_fee  = total_fee

物品费用

product_fee

Int

物品费用,单位分。如果有值,必须保证transport_fee +  product_fee=total_fee

折扣价格

discount

Int

折扣价格,单位分,如果有值,通知的total_fee + discount = 请求的total_fee

 

 

7.3    通知查询接口

7.3.1       业务功能

(客户通过之后直接返回,后台再去干点啥,会返回一个ID区查到是否对应支付,然后在返回)

商户接收到财付通的支付成功通知后,可以通过此接口查询通知的具体内容,以确保通知是从财付通发起的,没有被伪造或篡改过。

7.3.2       交互模式

后台系统调用交互模式

7.3.3       请求参数列表

请求url:https://mch.tenpay.com/cgi-bin/fpay_querynotifyid.cgi

通过get或post请求

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

通知ID

notify_id

String(64)

支付成功后,财付通系统反馈的通知ID

操作员

op_user_id

Int

操作员帐号,默认为商户号

操作员密码

op_user_passwd

String(32)

操作员密码,默认为商户后台登录密码,需MD5加密。

 

7.3.4       应答参数列表

数据按XML的格式实时返回

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

返回状态码

retcode

Int

返回状态码,0表示成功,其他错误

XML数据返回时才有此字段,且是一定返回

返回信息

retmsg

String(64)

返回信息,如非0,为错误原因。

XML数据返回时才有此字段

交易状态

trade_state

Int

支付结果:

0 支付成功;

1 等待验证;

2 失败

交易结果信息

pay_info

String(64)

交易结果信息

商户号

partner

String(10)

商户号

付款银行

bank_type

String(16)

银行类型

银行订单号

bank_billno

String(32)

银行订单号,若为财付通余额支付则为空

总金额

total_fee

Int

支付金额,单位为分,如果discount有值,通知的total_fee + discount = 请求的total_fee

币种

fee_type

Int

现金支付币种,目前只支持人民币,默认值是1-人民币

财付通订单号

transaction_id

String(28)

财付通交易号

商户订单号

out_trade_no

String(32)

商户系统的订单号,与请求一致。

商家数据包

attach

String(64)

商家数据包,原样返回

支付完成时间

time_end

String(14)

支付完成时间,格式为yyyymmddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。时区为GMT+8 beijing。该时间取自财付通服务器

物流费用

transport_fee

Int

物流费用,单位分,默认0。如果有值,必须保证transport_fee + product_fee = total_fee

物品费用

product_fee

Int

物品费用,单位分。如果有值,必须保证transport_fee +  product_fee=total_fee

折扣掉价格

discount

Int

折扣掉价格,单位分,如果有值,通知的total_fee + discount = 请求的total_fee

验证方式

verify_type

Int

支付渠道标识,取值0默认指定方式,会转化为以下方式中的一种;

1 不校验,(此验证方式少量由于风控因素有可能转化为2);

2 通过商户获取验证码校验;

3 电话支付回呼;

 

 

7.4    订单查询接口

7.4.1       业务功能

根据商户订单号或者财付通订单号查询财付通侧记录的具体订单信息。

7.4.2       交互模式

后台系统调用交互模式

7.4.3       请求参数列表

请求url:https://mch.tenpay.com/cgi-bin/fpay_queryorder.cgi

通过get或post请求

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

商户订单号

out_trade_no

String(32)

商户系统内部的订单号, out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先

财付通订单号

transaction_id

String(28)

财付通交易号, out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先。对于采用财付通其他支付接口(非本文档7.1接口),查询时只能使用transaction_id,不能使用out_trade_no

 

7.4.4       应答参数列表

数据按XML的格式实时返回

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

接口版本

service_version

String(8)

版本号,默认为1.0

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

返回状态码

retcode

Int

返回状态码,0表示成功,其他错误

XML数据返回时才有此字段,且是一定返回

返回信息

retmsg

String(64)

返回信息,如非0,为错误原因。

XML数据返回时才有此字段

交易状态

trade_state

Int

支付结果:

0 支付成功;

1 等待验证;

2 失败   

交易结果信息

pay_info

String(64)

交易结果信息

商户号

partner

String(10)

商户号

付款银行

bank_type

String(16)

银行类型,默认为“DEFAULT”-财付通,其余参照第9节银行编码

银行订单号

bank_billno

String(32)

银行订单号,若为财付通余额支付则为空

总金额

total_fee

Int

支付金额,单位为分,如果discount有值,通知的total_fee+ discount = 请求的total_fee

币种

fee_type

Int

现金支付币种,目前只支持人民币,默认值是1-人民币

财付通订单号

transaction_id

String(28)

财付通交易号

商户订单号

out_trade_no

String(32)

商户系统的订单号,与请求一致。

是否分账

is_split

boolean

是否分账,false无分账,true分账

是否退款

is_refund

boolean

是否退款,false无退款,true退款

商家数据包

attach

String(64)

商家数据包,原样返回

支付完成时间

time_end

String(14)

支付完成时间,格式为yyyymmddhhmmss,如2009年12月27日9点10分10秒表示为20091227091010。时区为GMT+8 beijing。该时间取自财付通服务器

物流费用

transport_fee

Int

物流费用,单位分,默认0。如果有值,必须保证transport_fee + product_fee = total_fee

物品费用

product_fee

Int

物品费用,单位分。如果有值,必须保证transport_fee +  product_fee = total_fee

折扣掉价格

discount

Int

折扣价格,单位分,如果有值,通知的

total_fee + discount = 请求的total_fee

验证方式

 

verify_type

Int

支付渠道标识,取值0默认指定方式,会转化为以下方式中的一种;

1 不校验,(此验证方式少量由于风控因素有可能转化为2);

2 通过商户获取验证码校验;

3 电话支付回呼;

 

 

7.5退款接口

7.5.1业务功能

商户针对某一个已经成功支付的订单发起退款,操作结果在同一会话中同步返回。

一、退款方式

1.退款到支付所用的信用卡,财付通商户管理系统上显示退款方式为“信用卡退款”

2.当退银行时,如果退银行失败,资金会退到商户号的现金账号中,商户可以登录mch.tenpay.com手工处理或调用转账退款接口退给指定财付通账号。

说明:退到银行卡则是非实时的,每个银行的处理速度不同,一般发起退款后1-10个工作日内到账。

二、退款限制

商户在退款操作时应该注意退款限制,避免发起不会成功的退款请求,下面是主要的退款限制:

1.在财付通系统中,只要退款累计金额不超过交易单支付总额,一笔交易单可以多次退款,退款申请单号(退款接口中有此参数)唯一确定一次退款,而不是交易单号确定一次退款。退款申请单号由商户生成,所以商户一定要保证退款申请单的唯一性。商家在退款过程中要特别注意,只有在能确定退款失败的情况下,才能重新发起另一笔退款。

2.目前大多数银行都支持全额退款和部分退款,但是也有少数银行不支持全额退款或部分退款,或者不支持退款。在这种情况下,商户可以与买家协调,退到指定的财付通帐号。

7.5.2交互模式

后台系统调用交互模式

7.5.3请求参数列表

请求url:https://mch.tenpay.com/refundapi/gateway/refund.xml

通过get或post请求

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

商户订单号

out_trade_no

String(32)

商户系统内部的订单号, out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先

财付通订单号

transaction_id

String(28)

财付通交易号, out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先

商户退款单号

out_refund_no

String(32)

商户退款单号,32个字符内、可包含字母,确保在商户系统唯一。同个退款单号多次请求,财付通当一个单处理,只会退一次款。如果出现退款不成功,请采用原退款单号重新发起,避免出现重复退款。

总金额

total_fee

Int

订单总金额,单位为分

退款金额

refund_fee

Int

退款总金额,单位为分,可以做部分退款

操作员

op_user_id

Int

操作员帐号,默认为商户号

操作员密码

op_user_passwd

String(32)

操作员密码,默认为商户后台登录密码。

接收人帐号

recv_user_id

String(64)

转账退款接收退款的财付通帐号。

一般无需填写,只有退银行失败,资金转入商户号现金账号时(即状态为转入代发,查询返回的refund_status是7或11),填写原退款单号并填写此字段,资金才会退到指定财付通账号。其他情况此字段忽略

接收人姓名

reccv_user_name

String(32)

转账退款接收退款的姓名(需与接收退款的财付通帐号绑定的姓名一致)

 

7.5.4应答参数列表

数据按XML的格式实时返回

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

业务参数

返回状态码

retcode

Int

返回状态码,0表示成功,其他未定义

返回信息

retmsg

String(64)

返回信息,如非空,为错误原因。

商户号

partner

String(10)

商户号

财付通订单号

transaction_id

String(28)

财付通交易号

商户订单号

out_trade_no

String(32)

商户系统内部的订单号

商户退款单号

out_refund_no

String(32)

商户退款单号

财付通退款单号

refund_id

String(28)

财付通退款单号

退款渠道

refund_channel

Int

退款渠道,0:退到财付通、1:退到银行

退款金额

refund_fee

Int

退款总金额,单位为分,可以做部分退款

退款状态

refund_status

Int

退款状态

1:待审批

2:审批流程中

3:审批失败

4:退款成功

5:退款失败

6:资料重填

7:转入代发

8:暂不处理

9:退款流程中

10:转入代发成功

11:转入代发中

12:分账回退中

13:分帐回退成功

接收人帐号

recv_user_id

String(64)

转账退款接收退款的财付通帐号

接收人姓名

reccv_user_name

String(32)

转账退款接收退款的姓名(需与接收退款的财付通帐号绑定的姓名一致)

 

7.6退款明细查询接口

7.6.1业务功能

根据商户订单号、财付通订单号、商户退款单号、财付通退款单号查询退款记录的具体信息。

7.6.2交互模式

后台系统调用交互模式

7.6.3请求参数列表

请求url: https://gw.tenpay.com/gateway/normalrefundquery.xml

通过get或post请求

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

密钥序号

sign_key_index

Int

多密钥支持的密钥序号,默认1

业务参数

商户号

partner

String(10)

商户号,由财付通统一分配的10位正整数(120XXXXXXX)号

商户订单号

out_trade_no

String(32)

商户系统内部的订单号, out_trade_no和transaction_id、out_refund_no、refund_id至少一个必填,同时存在时以优先级高为准,优先级为:

refund_id>out_refund_no>transaction_id>out_trade_no

财付通订单号

transaction_id

String(28)

财付通订单号, out_trade_no和transaction_id、out_refund_no、refund_id至少一个必填,同时存在时以优先级高为准,优先级为:

refund_id>out_refund_no>transaction_id>out_trade_no

商户退款单号

out_refund_no

String(32)

商户退款单号, out_trade_no和transaction_id、out_refund_no、refund_id至少一个必填,同时存在时以优先级高为准,优先级为:

refund_id>out_refund_no>transaction_id>out_trade_no

财付通退款单号

refund_id

String(28)

财付通退款单号, out_trade_no和transaction_id、out_refund_no、refund_id至少一个必填,同时存在时以优先级高为准,优先级为:

refund_id>out_refund_no>transaction_id>out_trade_no

 

7.6.4应答参数列表

数据按XML的格式实时返回

 

字段名

变量名

必填

类型

说明

协议参数

签名方式

sign_type

String(8)

签名类型,取值:MD5、RSA,默认:MD5

字符集

input_charset

String(8)

字符编码,取值:GBK、UTF-8,默认:GBK。

签名

sign

String(32)

签名

业务参数

返回状态码

retcode

Int

返回状态码,0表示成功,其他未定义

返回信息

retmsg

String(64)

返回信息,如非空,为错误原因。

商户号

partner

String(10)

商户号

商户订单号

out_trade_no

String(32)

商户系统内部的订单号

财付通订单号

transaction_id

String(28)

财付通交易号

退款笔数

refund_count

Int

退款记录数

商户退款单号

out_refund_no_$n

String(32)

商户退款单号,32个字符内、可包含字母,确保在商户系统唯一

财付通退款单号

refund_id_$n

String(28)

财付通退款单号

退款渠道

Refund_channel_$n

Int

退款渠道,0退到财付通、1退到银行

退款金额

refund_fee_$n

Int

退款总金额,单位为分,可以做部分退款

退款状态

refund_state_$n

Int

退款状态

1:待审批

2:审批流程中

3:审批失败

4:退款成功

5:退款失败

6:资料重填

7:转入代发

8:暂不处理

9:退款流程中

10:转入代发成功

11:转入代发中

12:分账回退中

13:分帐回退成功

接收人帐号

recv_user_id_$n

Int

转账退款接收退款的财付通帐号

接收人姓名

reccv_user_name_$n

String(32)

转账退款接收退款的姓名(需与接收退款的财付通帐号绑定的姓名一致)

 

PS:

    $n表示记录的序号,取值为0~($ refund_count -1),例如refund_count指示返回的退款记录有2条。第一条序号为“0”,第二条序号为“1”。

8  注意事项

1、out_trade_no需要保证在商户号下全局唯一,建议使用“日期+序列号”的方式。如果out_trade_no相同,其它核心信息不同,财付通会拒绝支付;如果out_trade_no相同,其它核心信息也相同,财付通会当同个订单处理。

2、所有涉及到金额的单位都是分,最小的单位是1分,不能有小数出现

3、notify_url是财付通服务器从后台直接发起请求到商户服务器,商户处理时不能检查用户的cookie或session;商户更新DB等发货流程需要完整在notify_url完成,以确保掉单时,财付通补单能成功补上

4、notify_url有可能重复通知,商户需要做去重处理,避免多次发货

5、notify_url收到的通知,商户处理成功或检查订单已经处理,需要返回处理成功的标志“success”,以告知财付通不再通知

6、notify_id的有效期是2分钟,请商户收到通知后尽快发起查询

9  银行列表

 

银行

直接扣款

短信扣款

回呼扣款

是否开通

额度

是否开通

额度

是否开通

额度

信用卡

工商银行 ICBC

Y

5000

Y

5000

-

-

农业银行 ABC

Y

5000

Y

5000

-

-

建设银行 CCB

Y

5000

Y

5000

-

-

中国银行 BOC

Y

5000

Y

5000

-

-

光大银行 CEB

Y

5000

Y

5000

-

-

平安银行 PAB

Y

5000

Y

5000

-

-

农业银行ABC

Y

5000

Y

5000

Y

5000

建设银行 CCB

Y

5000

Y

5000

-

-

光大银行 CEB

Y

5000

Y

5000

-

-

交通银行COMM

-

-

-

-

Y

5000

招商银行 CMB

-

-

-

-

Y

5000

中信银行 CITIC

-

-

-

-

Y

5000

5000元是标准开放额度,具体额度可根据商户价值另行商量。

 

 

 

{notify_url}?bank_billno=208168976312&fee_type=1&notify_id=87FACA9B64178BE121BF2FA90923A0E607DCF77831B79949C366AFBFFCB929DB2724DF66446890651E6456CF6FBDEC0F&out_trade_no=2013081609530A&partner=1900000109&product_fee=1&time_end=2013-08-16+09%3A39%3A39&total_fee=1&trade_state=0&transaction_id=1900000109201308160339227905&transport_fee=0&sign=f9887a89d7f5b1b86678e14dae6f8a38

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
财付 API 接口文档样例代码 引言 文档概述 本文描述了财付开放平台的 JAVA SDK,帮助开发者轻松实现在线支付、收付款等功能。文档 详细介绍了财付开放平台的工作方式和开发过程,可以帮助开发人员快速入门并掌握开发技能,同时也 可以作为日后接口参数以及参数类型的速查手册。 阅读对象 具有 WEB 程序开发背景,了解 JAVA 语言。 业务术语 术语 ISV 说明 独立软件供应商 / Independent Software Vendor,可以是商户、个人或者第三方中介开发者 指 ISV 使用财付开放平台 SDK 开发的 WEB 应用程序, 运行于第三方服务器上为最终用户提供 服务 指财付的商户,商家可以是 ISV。 财付提供给 ISV 的开发注册、应用管理、沙箱测试平台。 指财付开放平台使用财付 APP 的财付用户 财付 APP 商户 开放平台 最终用户 接口业务流程 支付流程 支付流程中, 用户在财付 APP 中购买业务, 财付支付平台进行支付。 典型业务流程如下: 买家在财付 APP 上浏览下单购买一个商品,财付 APP 会生成一个支付链接,此链接过用 户的浏览器跳转到财付开放平台,财付过此链接获取支付请求的参数,引导用户完成支付过程。 用户在财付完成支付后, 财付过 return_url 将用户浏览重新定向到财付 APP, 财付 APP 向用户提示订单状态和后续操作。同时,财付过后台回调财付 APP 的 notify_url,财付 APP 在 收到支付结果知后可以根据知 ID 查询知内容,在确保支付成功后再进行业务逻辑处理(例如发货) , 这样可以进一步提高安全性,防止伪支付成功结果的诈骗。 知查询/订单查询流程 知查询/订单查询是指财付 APP 向财付系统发送查询请求,并同步等待财付系统处理完 毕后返回的响应数据。数据交互是财付 APP 与财付服务器直接信。 例如用户在财付 APP 查询时,财付 APP 要确认用户某个订单是否支付成功,可以向财付 发送一个查询请求,财付收到请求后返回查询结果,财付 APP 处理结果后再显示给用户。 后台知流程 后台知是指财付系统主动向财付 APP 发送知数据,并同步等待财付 APP 处理完毕后 返回的响应数据。数据交互是财付服务器与财付 APP 直接信,一般请求采用 http 的 get 或 post, 应答用字符串格式。 用户在财付支付成功后,财付会在后台过 notify_url 向财付 APP 发起知,财付 APP 处理后成功返回 success,失败返回 fail 或其他字符。 补单机制 对后台知流程, 如果财付收到财付 APP 的应答不是 success 或由于网络异常超时, 财付 认为知失败,财付过一定的策略(如1分钟、2分钟、4分钟、8分钟、16分钟、32分钟,共6次) 定期重新发起知,尽可能提高知的成功率,但财付不保证知最终能成功。 由于上述原因,可能存在同样的知多次发送给财付 APP 的情况。财付 APP 必须能够正确 处理,在收到重复的后台知不重复引发业务流程(例如发货) 。 财付推荐的做法是,当收到财付发送的知消息时,需要检查本系统内订单的状态,判断该 知是否已经处理过。为防止并发产生的问题,在对业务数据进行状态检查和处理之前,要求采用加锁判 断进行并发控制。 功能划分 财付 APP 负责与之业务相关的代码和页面。 财付开放平台提供支付相关的业务功能和页面。具体业务功能请参照后面章节 SDK 说明 支付页面如下: 在小钱包中: 在普浏览器中: SDK 说明 概述 API 说明 类名 com.tenpay.api.PayRequest com.tenpay.api.PayResponse com.tenpay.api.OrderQueryRequest com.tenpay.api.OrderQueryResponse com.tenpay.api.NotifyQueryRequest com.tenpay.api.NotifyQueryResponse com.tenpay.api.ShareLoginState 共享登录用户信息接口: ? 用户跳转到应用时,初始化 ShareLoginState 对象,ShareLoginState.getUserId()即可获得当前用 说明 支付请求 支付响应 订单查询请求 订单查询响应 知查询请求 知查询响应 共享登录用户信息 户的 id 支付接口,常见开发步骤如下: ? ? ? ? ? 初始化请求对象 PayRequest 设置请求系统级参数(应用 ID 等) ,例如 PayRequest.setAppid(应用 ID) 设置请求业务级参数,例如 PayRequest.setParameters(参数名称, 参数值) 生成跳转 URL,例如 PayRequest.getURL() 将用户重定向到跳转 URL,例如 Servlet/JSP 中的重定向方法 response.sendRedirect()或用 Javascript 进行页面跳转 知查询或订单查询,常见开发步骤如下: ? ? ? 初始化请求对象,例如 NotifyQueryRequest 或 OrderQueryRequest 设置请求系统级参数(应用 ID 等) ,例如 NotifyQueryRequest.setAppid(应用 ID) 设置请求业务级参数,例如 NotifyQueryRequest.setParameters(参数名称, 参数值) ?? 过 NotifyQueryRequest.send() 方 法 将 请 求 发 送 到 接 口 并 获 得 响 应 对 象 , 例 如 NotifyQueryResponse response = NotifyQueryRequest.send() ?? 判断订单支付状态,例如 NotifyQueryResponse.isPaySuccessful() ?? 从响应对象中获取参数值,进行相应处理,例如 NotifyQueryResponse.getParameter(参数名) 后台知交互模式,常见开发步骤如下: ?? 构造一个 Servlet 或 JSP 接收开放平台的回调 ?? 初始化响应对象 PayResponse ?? 判断订单支付状态,例如 PayResponse.isPaySuccessful() ?? 从响应对象中获取参数值,进行相应处理,例如 PayResponse.getParameter(参数名) 调用过程 支付类 支付跳转 ·业务功能 买家在财付 APP 中下订单后付款,财付 APP 调用财付开放平台支付接口生成支付 URL, 页面跳转到财付支付中心或银行。用户完成支付后,财付把用户引导回财付 APP 指定的页面 (return_url) ,并过回调支付请求中的 notify_url 反馈支付结果。 ·接口调用方向 开发者开发应用调用财付开放接口 ·请求 com.tenpay.api.NotifyQueryRequest 方法列表 /** * 构造方法

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值