腾讯财付通开放小钱包平台,第三方应用可以有机会进驻QQ小钱包(转)

http://open.tenpay.com

 

http://open.tenpay.com/main/cftController.jhtm?method=gotodevsdkjava&&sdk_tab=2

 

Java SDK下载

当前版本发布日期下载链接文件大小
1.0.02010-6-30openapi-JAVA-SDK-1.0.0.zip
 
129k
sdk-javadoc.zip128k

样例代码下载

当前版本发布日期下载链接文件大小
1.0.02010-6-30appdemo-movieticket-1.0.0.zip1.28M

引言

文档概述

本文描述了财付通开放平台的JAVA SDK,帮助开发者轻松实现在线支付、收付款等功能。文档详细介绍了财付通开放平台的工作方式和开发过程,可以帮助开发人员快速入门并掌握开发技能,同时 也可以作为日后接口参数以及参数类型的速查手册。

阅读对象

具有WEB程序开发背景,了解JAVA语言。

业务术语

类名说明
ISV独立软件供应商 / Independent Software Vendor,可以是商户、个人或者第三方中介开发者
财付通APP指ISV使用财付通开放平台SDK开发的WEB应用程序,运行于第三方服务器上为最终用户提供服务
商户指财付通的商户,商家可以是ISV。
开放平台财付通提供给ISV的开发注册、应用管理、沙箱测试平台。
最终用户指通过财付通开放平台使用财付通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共享登录用户信息

共享登录用户信息接口:

  1. 用户跳转到应用时,初始化ShareLoginState对 象,ShareLoginState.getUserId()即可获得当前用户的id

支付接口,常见开发步骤如下:

  1. 初始化请求对象PayRequest
  2. 设置请求系统级参数(应用ID等),例如PayRequest.setAppid(应用ID)
  3. 设置请求业务级参数,例如PayRequest.setParameters(参数名称, 参数值)
  4. 生成跳转URL,例如PayRequest.getURL()
  5. 将用户重定向到跳转URL,例如Servlet/JSP中的重定向方法 response.sendRedirect()或用Javascript进行页面跳转

通知查询或订单查询,常见开发步骤如下:

  1. 初始化请求对象,例如NotifyQueryRequest或OrderQueryRequest
  2. 设置请求系统级参数(应用ID等),例如NotifyQueryRequest.setAppid(应用ID)
  3. 设置请求业务级参数,例如NotifyQueryRequest.setParameters(参数名称, 参数值)
  4. 通过NotifyQueryRequest.send()方法将请求发送到接口并获得响应对象,例如 NotifyQueryResponse response = NotifyQueryRequest.send()
  5. 判断订单支付状态,例如NotifyQueryResponse.isPaySuccessful()
  6. 从响应对象中获取参数值,进行相应处理,例如 NotifyQueryResponse.getParameter(参数名)

后台通知交互模式,常见开发步骤如下:

  1. 构造一个Servlet或JSP接收开放平台的回调
  2. 初始化响应对象PayResponse
  3. 判断订单支付状态,例如PayResponse.isPaySuccessful()
  4. 从响应对象中获取参数值,进行相应处理,例如PayResponse.getParameter(参数名)
SDK调用过程

支付类
支付跳转
·业务功能

买家在财付通APP中下订单后付款,财付通APP调用财付通开放平台支付接口生成支付URL,页面跳转到财付通支付中心或 银行。用户完成支付后,财付通把用户引导回财付通APP指定的页面(return_url),并通过回调支付请求中的notify_url反馈支付结果。

·接口调用方向

开发者开发应用调用财付通开放接口

·请求
    com.tenpay.api.NotifyQueryRequest        通知查询请求
    方法列表
    /**
    * 构造方法
    * @param secretKey
    */
    public NotifyQueryRequest(String secretKey);
    /**
    * 设置应用ID
    * 
    * @param appid
    *            应用ID
    */
    public void setAppid(String appid);

    /**
    * 设置是否在沙箱环境
    * 
    * @param inSandBox
    *            true表示请求发送到沙箱环境,false表示请求发送到正式环境
    */
    public void setInSandBox(boolean inSandBox);

    /**
    * 设置业务参数
    * 
    * @param key
    *            参数名称
    * @param value
    *            参数值
    */
    public void setParameter(String key, String value);

    /**
    * 调用开放平台接口发送请求,获取响应
    * 
    * @return 接口调用的返回结果
    * @throws Exception
    */
    public CommonResponse send() throws Exception;
            

参数名称详见下表

参数名称必填类型说明
notify_idString(64)支付成功后,财付通系统反馈的通知ID此参数来源详见3.1.2.5章节参数列表中的 notify_id
sign_key_indexInt多密钥支持的密钥序号,默认1
sign_typeString(8)签名类型,取值:MD5、RSA,默认:MD5,暂只支持MD5
service_versionString(8)版本号,默认为1.0
·返回结果
    com.tenpay.api.NotifyQueryResponse通知查询响应
    方法列表
    /**
     * 判断支付结果
     * 
     * @return true表示支付成功,false表示支付处于其他状态,需要调用getPayInfo()方法获取详细说明
     */
    public boolean isPaySuccessful();

    /**
     * 获取支付结果信息
     * 
     * @return 支付结果说明
     */
    public String getPayInfo();

    /**
     * 获取响应参数
     * 
     * @param key 参数名称
     * @return 参数值
     */
    public String getParameter(String key);
            

参数名称详见下表

参数名称必填类型说明
total_feeInt用户实际支付的金额,单位为分,如果 discount有值,通知的total_fee + discount = 请求的total_fee
transaction_idString(28)财付通交易号
out_trade_noString(32)财付通APP系统的订单号,与请求一致。
time_endString(14)支付完成时间,格式为yyyymmddhhmmss,如2009年12月27日9点10分10秒表示为 20091227091010。时区为GMT+8 beijing。该时间取自财付通服务器
input_charsetString(8)字符编码,取值:GBK、UTF-8,默认:GBK。
sign_key_indexInt多密钥支持的密钥序号,默认1
attachString(64)商家数据包,原样返回
bank_typeString(16)银行类型,默认为“DEFAULT”-财付通,其余参照第4.1节银行编码
fee_typeInt现金支付币种,目前只支持人民币,默认值是1-人民币
transport_feeInt物流费用,单位分,默认0。如果有值,必须保证transport_fee + procedure_fee = total_fee
procedure_feeInt物品费用,单位分。如果有值,必须保证transport_fee + procedure_fee=total_fee
discountInt折扣价格,单位分,如果有值,通知的total_fee + discount = 请求的total_fee
buyer_aliasString(64)对应买家账号的一个加密串
sign_typeString(8)签名类型,取值:MD5、RSA,默认:MD5,暂只支持MD5
service_versionString(8)版本号,默认为1.0
·样例
    // 应用ID
    String appid = "0000000155";
    // 密钥
    String secretKey = "123456";
    // 是否沙箱测试
    boolean isSandBox = true;

    // 初始化通知查询请求
    NotifyQueryRequest request = new NotifyQueryRequest(secretKey);
    request.setAppid(appid);// 设置应用ID
    request.setInSandBox(isSandBox);// 请求发送到沙箱
    // 设置业务参数
    request.setParameter("notify_id", "xxxxxxxxxxxxxxx");// 通知查询ID,此ID来源于支付之后的回调

    try {
    // 发起接口调用
    NotifyQueryResponse response = request.send();
    if (response.isPaySuccessful()) {
    // 支付成功
    // 处理业务逻辑
    // ......
    } else {
    // 支付处于其他状态
    System.out.println(response.getPayInfo()); // 获取详细状态说明
    }
    } catch (Exception e) {
    // 异常处理
    }
            
订单查询
·业务功能

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

·接口调用方向

开发者开发应用调用财付通开放接口。

·请求
    com.tenpay.api.OrderQueryRequest订单查询请求
    方法列表
        /**
     * 构造方法
     * @param secretKey
     */
    public OrderQueryRequest(String secretKey);

    /**
     * 设置应用ID
     * 
     * @param appid
     *            应用ID
     */
    public void setAppid(String appid);

    /**
     * 设置是否在沙箱环境
     * 
     * @param inSandBox
     *            true表示请求发送到沙箱环境,false表示请求发送到正式环境
     */
    public void setInSandBox(boolean inSandBox);

    /**
     * 设置业务参数
     * 
     * @param key
     *            参数名称
     * @param value
     *            参数值
     */
    public void setParameter(String key, String value);

    /**
     * 调用开放平台接口发送请求,获取响应
     * 
     * @return 接口调用的返回结果
     * @throws Exception
     */
    public CommonResponse send() throws Exception;
            

参数名称详见下表

参数名称必填类型说明
out_trade_no二者必填
其一
String(32)财付通APP内部的订单号, out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先
transaction_idString(28)财付通交易号, out_trade_no和transaction_id至少一个必填,同时存在时transaction_id优先
sign_key_indexInt多密钥支持的密钥序号,默认1
sign_typeString(8)签名类型,取值:MD5、RSA,默认:MD5,暂只支持MD5
service_versionString(8)版本号,默认为1.0
·返回结果

订单查询返回结果与通知查询返回结果相同,参见“3.3.1.5返回结果”

·样例
    // 签名密钥: 开发者注册时,由财付通分配
    String secretKey = "64507558218450442324574381315452";
    // 初始化订单查询请求
    OrderQueryRequest req = new OrderQueryRequest(secretKey);
    // 设置在沙箱中运行:正式环境请设置为false
    req.setInSandBox(true);
    // 设置财付通App-id
    req.setAppid("0000000201");
    // 设置财付通App订单号:财付通APP的订单号
    req.setParameter("out_trade_no", "test000000001");
    // 发送请求,并获取返回对象
    OrderQueryResponse res = req.send();
    if (res.isPayed()) {// 已经支付
          // 已经支付财付通app订单号
          System.out.println("支付成功,应用订单号:" + res.getParameter("out_trade_no"));
           // 财付通app订单号对应的财付通订单号
          System.out.println("财付通订单号:" + res.getParameter("transaction_id"));
          // 支付金额,单位:分
          System.out.println("支付金额:" + res.getParameter("total_fee") + "分");
          // 支付完成时间,格式为yyyymmddhhmmss,如20091227091010
          System.out.println("支付完成时间:" + res.getParameter("time_end"));
    }
    else {// 未正常支付,或者调用异常,如调用超时、网络异常
          System.out.println("支付未成功状态说明:" + res.getPayInfo());
    }
            
其他类
共享登录
·业务功能

买家转到APP中时,系统将买家的ID传入APP,方便用户订单生成、用户状态更新等相关操作。

·交互模式

买家点击跳转到APP时,id等相关信息将签名后通过url一起发往APP。

·样例
    // 签名密钥: 开发者注册时,由财付通分配
    String secretKey = "64507558218450442324574381315452";
    //创建共享登陆态对象
    ShareLoginState state = new ShareLoginState(req, secretKey);
    // 获取用户id
    String userID =  state.getUserId();
            

枚举类型

银行编码

编码含义说明
DEFAULT财付通,支持的各类支付方式包括(银行,财付通账户,一点通等) 
ICBC中国工商银行支持信用卡
CMB招商银行支持信用卡
CCB中国建设银行支持信用卡
ABC中国农业银行支持信用卡
SPDB上海浦东发展银行支持信用卡
SDB深圳发展银行支持信用卡
CIB兴业银行不支持信用卡
BOB北京银行支持信用卡
CEB中国光大银行支持信用卡
CMBC中国民生银行支持信用卡
CITIC中信银行支持信用卡
GDB广东发展银行支持信用卡
PAB平安银行支持信用卡
BOC中国银行支持信用卡
COMM交通银行支持信用卡
ICBCB2B中国工商银行(企业)企业网银
CMBB2B招商银行(企业)企业网银
POSTGC中国邮政储蓄银行(银联) 
BOC_EPOS中行EPOS 
ICBC_EPOS工行EPOS 
CCB_EPOS建行EPOS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
财付 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 方法列表 /** * 构造方法
毕业设计,基于SpringBoot+Vue+MySQL开发的影城管理系统,源码+数据库+论文答辩+毕业论文+视频演示 随着现在网络的快速发展,网上管理系统也逐渐快速发展起来,网上管理模式很快融入到了许多生活之中,随之就产生了“小徐影城管理系统”,这样就让小徐影城管理系统更加方便简单。 对于本小徐影城管理系统的设计来说,系统开发主要是采用java语言技术,在整个系统的设计中应用MySQL数据库来完成数据存储,具体根据小徐影城管理系统的现状来进行开发的,具体根据现实的需求来实现小徐影城管理系统网络化的管理,各类信息有序地进行存储,进入小徐影城管理系统页面之后,方可开始操作主控界面,主要功能包括管理员:首页、个人中心、用户管理、电影类型管理、放映厅管理、电影信息管理、购票统计管理、系统管理、订单管理,用户前台;首页、电影信息、电影资讯、个人中心、后台管理、在线客服等功能。 本论文主要讲述了小徐影城管理系统开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的小徐影城管理系统状况,提高管理效率。 关键词:小徐影城管理系统;Spring Boot框架,MySQL数据库
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值