Giter Club home page Giter Club logo

rongpay.github.io's Introduction

融付接口文档(v.191220)

文档内容最后更新于:2019-12-20 

特别注意:

  1. 时间戳为秒级,非毫秒级,毫秒级请/1000
  2. returnUrl/notifyUrl 为完整地址,含有协议+端口。如果回调通知地址(notifyUrl)不传,平台不会发起异步回调,需要调用查询接口确认订单状态。
  3. 金额为整数,非小数,以分为单位,不能包含有“·”号,例:123 即 1.23 元。
  4. 商户编号需要从商户后台首页获取,并非登陆账号,商户密钥(apikey)每次刷新都会重新随机生成,保存好最后一次刷新的密钥进行对接即可。
  5. 商户接收异步通知时,不要写死固定参数接收,请使用通用的json/map 对象接收,这样可接收完整参数,然后对json/map 里面的参数进行签名校验。如果只接收固定参数,会导致签名验证失败。后期如果通知增加参数,也可以不用修改代码
  6. 商户测试时如果要确认能不能回调以及验证签名是否成功,可生成订单后直接取消,取消后系统便会有通知。测试完取消通过后,再联系客服测试成功订单

更新记录

  1. 2019.12.20
    1. 订单状态新增 -20(暂无渠道) ,该状态下无支付信息(支付状态,支付成功时间,支付编号为空)

接口规范

  1. 字符编码:UTF-8
  2. Content-Type:application/json
  3. URL 传输参数需要对参数进行 UrlEncode

接口调用所需条件

  1. 网关地址:请联系客服
  2. 商户编号(merchantNo)
  3. 商户密钥(apiKey)

签名(sign)算法

BCrypt(Base64(SHA-256(apiKey+originalStr+apiKey)))
  1. originalStr: 除sign参数外其他参数值非空(空值或者空字符串)的参数按参数名称字母正序排序然后以name=UrlEncode(value)形式组合, 通过&拼接不同参数。
    1. 注:空值(空值或者空字符串)不参与签名。
    2. 注:value需要进行UrlEncode编码
  2. BCrypt(Base64(SHA-256(apiKey+originalStr+apiKey)))
    1. 用SHA-256算法将“apiKey+originalStr+apiKey”进行签名得到签名信息(二进制,有些工具会生成16进制)
    2. 使用Base64编码对SHA-256二进制签名信息进行编码
    3. 使用BCrypt对编码字符串进行签名得到最终签名字符串
  3. php demo
  4. java demo
  5. c# demo

同步通知 (returnUrl)

当创建订单时传入返回地址,订单结束后,用户点击“返回商户”,会在返回链接带上参数(returnUrl?urlparams)。参数内容参考统一返回参数,可通过签名算法计算签名的正确性。例:

returnUrl?
    amount=100&
    payMode=100001&
    ts=1575948756&
    orderStatus=50&
    payNo=20191209194326631108714792&
    payStatus=30&
    payTime=1575948756&
    merchantNo=20191204192421307122140114&
    orderNo=201912081855183951ab02e&
    sign=%242a%2410%24JwOX9nmVHrE6o8vcoSmyd.T69Yl7n322tVLmz.pVkRUz%2f.tRCjELS

异步回调 (notifyUrl)

当创建订单时传入异步回调地址时,订单结束后(用户取消订单(-30)、用户支付超时(-40)、订单失败(-50)、订单已完成(50))进行通知,总共通知3次,每次间隔10 分钟,超时时间为10s,处理成功后返回 success,返回其他字符表示处理失败,会继续进行后续通知。通知内容参考统一返回参数,可通过签名算法计算签名的正确性 示例:

curl -X POST "回调地址"
  -H 'content-type: application/json' 
  -d '{
    "amount":100,
    "payMode":"100001",
    "ts":1575948756,
    "orderStatus":50,
    "payNo":"20191209194326631108714792",
    "payStatus":30,
    "payTime":1575948756,
    "merchantNo":"20191204192421307122140114",
    "orderNo":"201912081855183951ab02e",
    "sign":"$2a$10$JwOX9nmVHrE6o8vcoSmyd.T69Yl7n322tVLmz.pVkRUz/.tRCjELS"
}'

接口内容

  1. 创建订单接口
    1. 使用场景:当用户充值时,根据下面参数,商户生成跳转链接,返回给用户进行跳转到支付页面。

    2. 请求方式:页面跳转

    3. 请求地址:网关地址+/pay-order/#/?urlparams

    4. 请求参数

      参数名称 必须 数据类型 示例 参数说明
      amount 整数 100 金额,以分为单位;最小值100,即1元
      merchantNo 字符串 20191204192421307122140114 商户编号
      orderNo 字符串(<50) 201912081855183951ab02e 商户订单编号
      payMode 字符串 100001 支付模式,请登陆商户后台获取
      ts 整数 1575948756 商户订单时间戳(秒级)
      notifyUrl 字符串 https://www.baidu.com/notify 后台通知地址
      returnUrl 字符串 https://www.baidu.com 支付完成用户返回地址
      sign 字符串 $2a$10$JwOX9nmVHrE6o8vcoSmyd.T6... 参数签名,请按照签名算法生成
    5. 响应

    6. 示例

    网关地址+/pay-order/#/?amount=100&merchantNo=20191204192421307122140114&orderNo=1575730270288&payMode=100001&ts=1575730270&sign=%242a%2410%24JwOX9nmVHrE6o8vcoSmyd.T69Yl7n322tVLmz.pVkRUz%2F.tRCjELS
    
  2. 查询订单接口
    1. 使用场景:当商户需要对特定订单查询时

    2. 请求方式:POST

    3. 请求地址:网关地址+ /any-pay/open/order/query

    4. 请求参数

      参数名称 必须 数据类型 示例 参数说明
      merchantNo 字符串 20191204192421307122140114 商户编号
      orderNo 字符串(<50) 201912081855183951ab02e 商户订单编号
      ts 整数 1575948756 商户订单时间戳(秒级)
      sign 字符串 $2a$10$JwOX9nmVHrE6o8vcoSmyd.T6... 参数签名,请按照签名算法生成
    5. 响应(参考统一返回参数

    6. 示例

    请求: curl -X POST "网关地址+/any-pay/open/order/query"  -H  "accept:*/*"  -H  "Content-Type:application/json" -d "{\"merchantNo\":\"20191204192421307122140114\",\"orderNo\":\"201912081855183951ab02e\",\"sign\":\"$2a$10$JwOX9nmVHrE6o8vcoSmyd.T69Yl7n322tVLmz.pVkRUz/.tRCjELS\",\"ts\":1575948756}"
    响应: 
    

统一返回参数

  1. 参数内容

    参数名称 必须 数据类型 示例 参数说明
    amount 整数 100 金额,以分为单位
    merchantNo 字符串 20191204192421307122140114 商户编号
    orderNo 字符串(<50) 201912081855183951ab02e 商户订单编号
    payMode 字符串 100001 支付模式
    ts 整数 1575948756 商户订单时间戳(秒级)
    orderStatus 整数 50 订单状态,请参考订单状态枚举
    payNo 字符串 20191209194326631108714792 支付订单编号
    payStatus 整数 30 支付状态,请参考支付状态枚举
    payTime 整数 1575948756 支付成功时间(秒级)
    sign 字符串 $2a$10$JwOX9nmVHrE6o8vcoSmyd.T6... 参数签名,使用BCrypt校验方法校验
  2. 订单状态(orderStatus)枚举

    说明
    -20 暂无渠道,此状态下无支付状态
    30 支付等待中
    -30 用户取消订单
    -40 用户支付超时
    -50 订单失败
    50 订单已完成
  3. 支付状态(payStatus)枚举

    说明
    10 等待支付
    -10 支付超时
    -20 支付取消
    30 支付成功
    -30 支付失败

以订单状态为主进行判断,支付超时后状态可能会收到支付成功状态通知,请注意处理

rongpay.github.io's People

Contributors

rongpay avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.