SDK & DEMO ================ JAVA 版 DEMO -------------------------- `DEMO 下载 <_static/lib/java_demo.zip>`_ DEMO 分别提供了页面浏览器调用方式的快捷支付 APP 版接口和后台系统调用方式的 APP 支付接口调用示例。使用 DEMO 之前商户需要申请 CFCA 加解签证(商户在汇付开户后,会有邮件通知下载) **硬件需求** 服务可以部署在 linux 和 windows 等具有 JVM 环境的服务容器内,比如 jboss,tomcat 等(暂提供 jboss)。安装 JDK1.7 并配置好 JDK 的环境变量。 **部署服务** 将证书文件放到服务器 $path 目录下,上传 war 包到服务器。 **启动服务器** - Windows服务器下执行**/jboss/bin/standalone.bat -DmerCertPath=#商户证书地址.pfx -DpfxparTest=#密码 -DhsCertPath=#汇付证书地址.cer 如:**/jboss/bin/standalone.bat -DpfxFile="/app/etc/product/888888-NEW.pfx" -DpfxFilePwd="123456" -DcerFile="/app/etc/product/CFCA_ACS_TEST_OCA31.cer" - Linux服务器下,执行**/jboss/bin/standalone.sh -DmerCertPath=#商户证书地址.pfx -DpfxparTest=#密码 -DhsCertPath=#汇付证书地址.cer 如:**/jboss/bin/standalone.sh -DpfxFile="/app/etc/product/888888-NEW.pfx" -DpfxFilePwd="123456" -DcerFile="/app/etc/product/CFCA_ACS_TEST_OCA31.cer" +---------------------+----------------------+----------------------------------------------------+----------------------------+ |**接口** | **调用方式** | **访问地址** | **说明** | +=====================+======================+====================================================+============================+ | 快捷支付 APP 版接口 | 页面浏览器提交 | http://ip:port/service-demo/quickPay/pay.json | 请求后跳转快捷支付页面 | +---------------------+----------------------+----------------------------------------------------+----------------------------+ | APP 支付接口 | 后台系统调用 | http://ip:port/service-demo/appPay/pay?pay_type=10 | 请求后返回APP支付参数 | +---------------------+----------------------+----------------------------------------------------+----------------------------+ 手机 SDK -------------------------- APP+ SDK 提供了多种主流支付渠道,商户只需要一次接入即可完成多个渠道的接入。APP+ SDK 包括客户端 SDK 和服务端 SDK 两部分,适配了 Android、iOS 移动端平台。 相关组件下载 `Android SDK <_static/lib/chinapnrpay_sdk_Android_v1.1.0.zip>`_ `iOS SDK <_static/lib/chinapnrpay_sdk_iOS_v1.1.0.zip>`_ `服务端 DEMO <_static/lib/java_service_demo_20180909.zip>`_ 流程说明 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. image:: _static/images/sdk_flow.png 接入步骤 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - 第一步:下载客户端 SDK ; - 第二步:商户 APP 嵌入客户端 SDK ; - 第三步:商户服务端提供 2 个 HTTP 接口,分别是快捷支付接口和 APP 支付接口; - 第四步:商户服务端添加异步回调处理 ,用于接收交易结果的事件通知; - 第五步:商户客户端可以添加轮询处理,向后端获取交易结果(后台可调用交易状态查询接口获取交易结果); 快捷支付接口 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 商户服务端提供此接口给客户端 SDK 调用。当商户 APP 发起快捷支付时,客户端 SDK 会调用此接口,跳转到汇付的快捷支付页面,用户完成支付后跳转支付结果页面。 调用方式:页面提交方式 **请求参数** +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | **参数中文名称** | **参数名称** | **数据格式** | **是否必须** | **说明** | +===================+==================+==============+==============+=======================================================================================================+ | 设备号 | device_info | 变长32位 | 可选 | | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | IP地址 | ip_addr |变长20位 | 可选 | | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 经纬度 | location_val | 变长20位 | 可选 | | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 设备信息 | dev_info_json | 变长2000位 | 可选 | 该字段是由客户端 SDK 调用商户此接口时,传过来的。服务端请将该参数透传给快捷支付( APP 版)接口 | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 支付参数 | self_param_info | | 可选 | 该字段是商户的 APP 调用 客户端 SDK 时传的参数,再由客户端 SDK 透传给此接口。此字段内容商户可以自定义 | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 扩展域 | extension | 变长512位 | 可选 | 用于扩展请求参数 | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ **返回参数** 返回结果页面 注:如果商户服务端请求支快捷支付时传的 ret_url 不为空,则跳转到商户的 ret_url,由商户解签处理快捷支付结果。否则跳转到 APP+ 的结果页面,商户不需要处理快捷支付同步接口,只需要接收并处理异步消息。 APP 支付接口 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 商户服务端提供此接口给客户端 SDK 调用。当商户 APP 发起微信或者支付宝支付时,客户端 SDK 会调用此接口,获取微信或者支付宝的支付参数,然后再唤起微信或者支付宝支付。 调用方式:系统调用 **请求参数** +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | **参数中文名称** | **参数名称** | **数据格式** | **是否必须** | **说明** | +===================+==================+==============+==============+=======================================================================================================+ | 设备号 | device_info | 变长32位 | 可选 | | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | IP地址 | ip_addr | 变长20位 | 可选 | | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 经纬度 | location_val | 变长20位 | 可选 | | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 设备信息 | dev_info_json | 变长2000位 | 可选 | 该字段是由客户端 SDK 调用商户此接口时,传过来的。服务端请将该参数透传给 APP 支付接口 | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 支付类型 | pay_type | 定长2位 | 必须 | 15:支付宝;10 : 微信APP支付; | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 支付参数 | self_param_info | | 可选 | 该字段是商户的 APP 调用 客户端 SDK 时传的参数,再由客户端 SDK 透传给此接口。此字段内容商户可以自定义 | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ | 扩展域 | extension | 变长512位 | 可选 | 用于扩展请求参数 | +-------------------+------------------+--------------+--------------+-------------------------------------------------------------------------------------------------------+ **返回参数** +-------------------+---------------+---------------------+----------------+-------------------------------------------------------------------------------------+ | **参数中文名称** | **参数名称** | **数据格式** | **是否必须** | **说明** | +===================+===============+=====================+================+=====================================================================================+ | 应答返回码 | resp\_code | 定长6位String | 必须 | 218002:请求已受理;218003:交易失败;218098:系统超时;其他请参考 APP支付返回码_ | +-------------------+---------------+---------------------+----------------+-------------------------------------------------------------------------------------+ | 应答返回描述 | resp\_desc | 变长String | 必须 | 返回码的对应中文描述 | +-------------------+---------------+---------------------+----------------+-------------------------------------------------------------------------------------+ | 支付地址 | pay_url | 变长1024位 | 必须 | 用于支付宝支付 | +-------------------+---------------+---------------------+----------------+-------------------------------------------------------------------------------------+ | 支付信息 | pay_info | 定长16位String | 必须 | 用于微信APP支付 | +-------------------+---------------+---------------------+----------------+-------------------------------------------------------------------------------------+ | 扩展域 | extension | 变长512位的String | 可选 | | +-------------------+---------------+---------------------+----------------+-------------------------------------------------------------------------------------+ .. _APP支付返回码: appsiteapi_trans.html#id112 注意事项: 1、请将返回参数以 json 格式写入到 response 对象的 body 区,且 body 区只有返回参数,如果是 java 开发则可以添加注解@ResponseBody body区格式: .. code:: json %7B%22pay_url%22%3A%22%22%2C%22resp_desc%22%3A%22%E4%BA%8C%E7%BA%A7%E5%95%86%E6%88%B7%E5%8F%B7%E4%B8%8D%E5%AD%98%E5%9C%A8%22%2C%22platform_seq_id%22%3A%22%22%2C%22resp_code%22%3A%22218748%22%2C%22pay_info%22%3A%22%22%2C%22token_id%22%3A%22%22%2C%22order_id%22%3A%22TEST1513827504986%22%2C%22order_date%22%3A%2220171221%22%7D .. 2、为了防止乱码,返回参数需要做URLEncoder转码