API 文档简介

Ping++ API 采用 REST 风格设计。所有接口请求地址都是可预期的以及面向资源的。使用规范的 HTTP 响应代码来表示请求结果的正确或错误信息。使用 HTTP 内置的特性,如 HTTP Authentication 和 HTTP 请求方法让接口易于理解。所有的 API 请求都会以规范友好的 JSON 对象格式返回(包括错误信息)。

官方 SDK

Ping++ 提供多语言多平台的 官方客户端和服务端 SDK

定义

GET
https://api.pingxx.com

认证

在调用 API 时,必须提供 API Key 作为每个请求的身份验证。你可以在管理平台内管理你的 API Key。API Key 是商户在 Ping++ 系统中的身份标识,请安全存储,确保其不要被泄露。如需获取或更新 API Key ,也可以在管理平台的「企业设置」->「开发设置」内进行操作

Ping++ API 使用 HTTP Basic Auth 进行认证。 将 API Key 作为 basic auth 的用户名。不需要填写密码。

API Key 分为 live 和 test 两种模式。分别对应真实交易环境和模拟测试交易环境并且可以实时切换。测试模式下的 API Key 会模拟交易等请求,但是不会产生任何真实交易行为和费用,便于调试和接入。 所有的 API 请求必须通过 HTTPS 发送,使用 HTTP 会被 Ping++ 服务器拒绝。

请求示例

curl https://api.pingxx.com/v1/charges \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

请将示例中的 sk_test_ibbTe5jLGCi5rzfH4OqPW9KC 替换成你自己的 API Key。

错误

Ping++ API 使用 HTTP 状态码 (status code) 来表明一个 API 请求的成功或失败状态。返回 HTTP 2XX 表明 API 请求成功。返回 HTTP 4XX 表明在请求 API 时提供了错误信息,例如参数缺失、参数错误、支付渠道错误等。返回 HTTP 5XX 表明 API 请求时,Ping++ 服务器发生了错误。

HTTP 返回状态码

状态码
200 - OK 一切正常。
400 - Bad Request 一般由缺失参数,参数格式不正确等引起。
401 - Unauthorized 没有提供正确的 API Key。
402 - Request Failed 参数格式正确但是请求失败,一般由业务错误引起。
403 - Forbidden 调用接口超过 Ping++ 套餐的并发限制,请 升级套餐 或限流。
404 - Not Found 请求的资源不存在。
500, 502, 503, 504 - Server Errors Ping++ 服务器出错。

错误汇总

返回属性
type 错误类型,可以是 invalid_request_errorapi_errorchannel_errorcard_error
message 返回具体的错误描述。
code optional 错误码,由第三方支付渠道返回的错误代码。
param optional 当发生参数错误时返回具体的参数名,如 id。

错误类型 (type)

错误类型
invalid_request_error 请求错误,传入了不正确的地址,参数或值。
api_error Ping++ 服务器出现的异常错误。
channel_error 第三方支付渠道出现的错误导致请求出现错误。通常你需要对这些可能出现的情况进行处理或者联系我们。

错误码 (code)

错误码
charge_closed 支付订单已结束,不能进行后续操作。
charge_unexpected_status 支付返回意外的状态码。
refund_wait_operation 退款需要等待用户进一步操作。
refund_refused 退款失败,被支付渠道拒绝。
refund_retry 退款失败,需要重新发起退款。
refund_manual_intervention 退款失败,需要通过线下或转账进行退款。
refund_unexpected_status 退款返回意外的状态码。
channel_connection_error 支付渠道通讯异常。
channel_request_error 请求支付渠道接口失败。
channel_parse_error 支付渠道返回意外的数据格式发生的解析错误。
channel_sign_error 支付渠道返回的数据没有通过签名验证。
channel_unexpected_error 支付渠道遇到未知错误。
channel_parameter_error 支付渠道参数错误。
channel_auth_error 支付渠道参数错误
channel_response_code_fail 支付渠道响应码错误。
channel_parameters_consistency_error 支付渠道参数一致性检测失败。
channel_not_support_red_envelope 您的微信参数版本不支持发送红包。请联系微信升级为新版本。
channel_not_support_transfer 您的微信参数版本不支持发送企业付款。请联系微信升级为新版本。
channel_request_info 来自渠道的信息
query_right_error 支付渠道查询权限错误,请登录支付宝在线人工窗口,免费签约“账务明细”接口和“交易查询”接口。
channel_notify_id_error 支付渠道的NOTIFY ID非法或已失效
charge_order_no_used 订单号已使用。请用新的订单号发起交易。
transfer_wait_operation 转账需要打开地址进行下一步付款操作
refund_refused_msg 退款已被支付渠道拒绝。
refund_pending 退款状态未明,请稍后查询。
refund_failed 退款失败
refund_info_from_channel 来自渠道的退款信息。
refund_not_found 未在渠道查找到相应退款信息。
red_system_busy 支付渠道系统繁忙,请稍后用同一商户单号再次调用。只会发送一个红包。
transfer_system_busy 支付渠道系统繁忙,请稍后用同一商户单号再次调用。只会发送一笔转账。
qgbc_term_amount_too_small 订单金额过小,不支持分期。

分页

所有的 Ping++ 资源都可以被 list API 方法支持,例如分页 chargesrefunds。这些 list API 方法拥有相同的数据结构。Ping++ 是基于 cursor 的分页机制,使用参数 starting_after 来决定列表从何处开始,使用参数 ending_before 来决定列表从何处结束。

请求参数
limit optional 限制每页可以返回多少对象,限制范围是从 1-20 项,默认是 10 项。
starting_after optional 在分页时使用的指针,决定了列表的第一项从何处开始。假设你的一次请求返回列表的最后一项的 idobj_end ,你可以使用 starting_after = obj_end 去获取下一页。
ending_before optional 在分页时使用的指针,决定了列表的最末项在何处结束。假设你的一次请求返回列表的最后一项的 idobj_start ,你可以使用 ending_before = obj_start 去获取上一页。
created optional 对象的创建时间,用 Unix 时间戳表示。具体参考下表 created 参数。
created 参数
created [ gt ] optional int 大于 charge 对象的创建时间,用 Unix 时间戳表示。
created [ gte ] optional int 大于或等于 charge 对象的创建时间,用 Unix 时间戳表示。
created [ lt ] optional int 小于 charge 对象的创建时间,用 Unix 时间戳表示。
created [ lte ] optional int 小于或等于 charge 对象的创建时间,用 Unix 时间戳表示。
返回
object string 值为 "list"
url string 表明获取该列表所使用的 URL。
has_more boolean 表明获取列表之后是否还有更多的元素实体。如果值为 false ,表明当前页是最后一页。
data array 包含一个由请求参数分页后的返回元素实体。

请求示例

curl https://api.pingxx.com/v1/charges/?limit=3 \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
  "object": "list",
  "url": "/v1/charges",
  "has_more": false,
  "data": [
    {
      "id": "ch_Hm5uTSifDOuTy9iLeLPSurrD",
      "object": "charge",
      "created": 1410767648,
      "livemode": true,
      "paid": false,
      "refunded": false,
      "app": "app_1Gqj58ynP0mHeX1q",
      "channel": "upacp",
      "order_no": "123456789012",
      "client_ip": "127.0.0.1",
      "amount": 900,
      "amount_settle": 0,
      "currency": "cny",
      "subject": "Your Subject",
      "body": "Your Body",
      "time_expire": 1410771248,
      "time_settle": null,
      "transaction_no": null,
      "refunds": {
        "object": "list",
        "url": "/v1/charges/ch_Hm5uTSifDOuTy9iLeLPSurrD/refunds",
        "has_more": false,
        "data": [ ]
      },
      "amount_refunded": 0,
      "failure_code": null,
      "failure_msg": null,
      "metadata": {},
      "credential": {},
      "description": null
    }
  ]
}

可展开对象

Ping++ 内有很多对象包含了其他对象的 id,如果这些对象带有 expandable 展开特性,你可以在请求参数后加入额外的展开参数来展开子对象。例如在创建 charge 对象时,使用 expand[]=app 参数来展开返回 charge 对象内部的 app 对象。

请求示例

curl https://api.pingxx.com/v1/charges/ch_Hm5uTSifDOuTy9iLeLPSurrD?expand[]=app \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

元数据

一些 Ping++ 对象支持加入用户指定的 metadata 参数。你可以使用键值对的形式来构建自己的 metadata,例如 metadata[color] = red,你可以在每一个 charge 对象中加入订单的一些详情,如颜色、型号等属性,在查询时获得更多信息。每一个对象的 metadata 最多可以拥有 10 个键值对,数据总长度在 1000 个 Unicode 字符以内。

属性
phone_number optional,string 手机号(11位)。
user_id optional,string 用户 ID,商户 App 内用户的唯一标识。

请求示例

  curl https://api.pingxx.com/v1/charges \
  -u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
  -d order_no=123456789 \
  -d amount=100 \
  -d app[id]=app_1Gqj58ynP0mHeX1q \
  -d channel=upacp \
  -d currency=cny \
  -d client_ip=127.0.0.1 \
  -d subject="Your Subject" \
  -d body="Your Body" \
  -d metadata[color]=red
  -d metadata[phone_number]=13918651111

返回示例

{
  "id": "ch_Hm5uTSifDOuTy9iLeLPSurrD",
  "object": "charge",
  "created": 1410775686,
  "livemode": true,
  "paid": false,
  "refunded": false,
  "app": "app_1Gqj58ynP0mHeX1q",
  "channel": "upacp",
  "order_no": "123456789",
  "client_ip": "127.0.0.1",
  "amount": 100,
  "amount_settle": 0,
  "currency": "cny",
  "subject": "Your Subject",
  "body": "Your Body",
  "time_expire": 1410779286,
  "time_settle": null,
  "transaction_no": null,
  "refunds": {
    "object": "list",
    "url": "/v1/charges/ch_Hm5uTSifDOuTy9iLeLPSurrD/refunds",
    "has_more": false,
    "data": []
  },
  "amount_refunded": 0,
  "failure_code": null,
  "failure_msg": null,
  "metadata": {
    "color": "red",
    "phone_number": "13918651111"
  },
  "credential": {
    "object": "credential",
    "upacp": {
      "tn": "201409151808060000000",
      "mode": "01"
    }
  },
  "description": null
}

Charges 支付

你可以创建一个 charge 对象向用户收款。 charge 是一个支付凭据对象,所有和支付相关的要素信息都存储在这个对象中,你的服务端可以通过发起支付请求来创建一个新的 charge 对象,也可以随时查询一个或者多个 charge 对象的状态。每个 charge 对象都拥有一个标识 id,该 id 在 Ping++ 系统内唯一。

属性
id string 由 Ping++ 生成的支付对象 ID, 27 位字符串。
object string 值为 "charge"。
created timestamp 支付创建时的 Unix 时间戳。
livemode boolean 是否处于 live 模式。
paid boolean 是否已付款。
refunded boolean 是否存在退款信息,无论退款是否成功。
app expandable string 支付使用的 app 对象的 id ,expandable 可展开,查看 如何获取App ID
channel string 支付使用的第三方支付渠道,详情参考 支付渠道属性值
order_no string 商户订单号,适配每个渠道对此参数的要求,必须在商户系统内唯一。( alipay : 1-64 位, wx : 2-32 位, bfb : 1-20 位, upacp : 8-40 位, yeepay_wap :1-50 位, jdpay_wap :1-30 位, qpay :1-30 位, cmb_wallet :10 位纯数字字符串。注:除 cmb_wallet 外的其他渠道推荐使用 8-20 位,要求数字或字母,不允许特殊字符)。
client_ip ip address 发起支付请求客户端的 IP 地址,格式为 IPv4 整型,如 127.0.0.1。
amount int 订单总金额(必须大于0),单位为对应币种的最小货币单位,人民币为分。如订单总金额为 1 元, amount 为 100,么么贷商户请查看申请的借贷金额范围。
amount_settle int 清算金额,单位为对应币种的最小货币单位,人民币为分。
currency string 3 位 ISO 货币代码,人民币为 cny
subject string 商品标题,该参数最长为 32 个 Unicode 字符,银联全渠道( upacp / upacp_wap )限制在 32 个字节。
body string 商品描述信息,该参数最长为 128 个 Unicode 字符, yeepay_wap 对于该参数长度限制为 100 个 Unicode 字符。
extra object 特定渠道发起交易时需要的额外参数,以及部分渠道支付成功返回的额外参数,详细参考 支付渠道 extra 参数说明
time_paid timestamp 订单支付完成时的 Unix 时间戳。(银联支付成功时间为接收异步通知的时间)
time_expire timestamp 订单失效时的 Unix 时间戳。时间范围在订单创建后的 1 分钟到 15 天,默认为 1 天,创建时间以 Ping++ 服务器时间为准。 微信对该参数的有效值限制为 2 小时内;银联对该参数的有效值限制为 1 小时内。
time_settle timestamp 订单清算时间,用 Unix 时间戳表示。(仅针对个人开发者)
transaction_no string 支付渠道返回的交易流水号。
refunds list 退款详情列表,详见 Refunds 退款
amount_refunded int 已退款总金额,单位为对应币种的最小货币单位,例如:人民币为分。
failure_code string 订单的错误码,详见 错误 中的错误码描述。
failure_msg string 订单的错误消息的描述。
metadata hash 详见 元数据
credential object 支付凭证,用于客户端发起支付。
description string 订单附加说明,最多 255 个 Unicode 字符。

对象示例

{
  "id": "ch_Hm5uTSifDOuTy9iLeLPSurrD",
  "object": "charge",
  "created": 1410778843,
  "livemode": true,
  "paid": false,
  "refunded": false,
  "app": "app_1Gqj58ynP0mHeX1q",
  "channel": "upacp",
  "order_no": "123456789",
  "client_ip": "127.0.0.1",
  "amount": 100,
  "amount_settle": 100,
  "currency": "cny",
  "subject": "Your Subject",
  "body": "Your Body",
  "extra":{},
  "time_paid": null,
  "time_expire": 1410782443,
  "time_settle": null,
  "transaction_no": null,
  "refunds": {
    "object": "list",
    "url": "/v1/charges/ch_Hm5uTSifDOuTy9iLeLPSurrD/refunds",
    "has_more": false,
    "data": []
  },
  "amount_refunded": 0,
  "failure_code": null,
  "failure_msg": null,
  "credential": {
    "object": "credential",
    "upacp": {
      "tn": "201409151900430000000",
      "mode": "01"
    }
  },
  "description": null
}

创建 Charge 对象

发起一次支付请求时需要创建一个新的 charge 对象,获取一个可用的支付凭据用于客户端向第三方渠道发起支付请求。如果使用测试模式的 API Key,则不会发生真实交易。当支付成功后,Ping++ 会发送 Webhooks 通知。

请求参数
order_no required 商户订单号,适配每个渠道对此参数的要求,必须在商户系统内唯一。( alipay : 1-64 位, wx : 2-32 位, bfb : 1-20 位, upacp : 8-40 位, yeepay_wap :1-50 位, jdpay_wap :1-30 位, qpay :1-30 位, cmb_wallet :10 位纯数字字符串。注:除 cmb_wallet 外的其他渠道推荐使用 8-20 位,要求数字或字母,不允许特殊字符)。
app [ id ] expandable required 支付使用的 app 对象的 idexpandable 可展开,查看 如何获取App ID
channel required 支付使用的第三方支付渠道。参考 支付渠道属性值
amount required 订单总金额(必须大于0),单位为对应币种的最小货币单位,人民币为分。如订单总金额为 1 元, amount 为 100,么么贷商户请查看申请的借贷金额范围。
client_ip required 发起支付请求客户端的 IPv4 地址,如: 127.0.0.1。
currency required 三位 ISO 货币代码,目前仅支持人民币 cny
subject required 商品的标题,该参数最长为 32 个 Unicode 字符,银联全渠道( upacp / upacp_wap )限制在 32 个字节。
body required 商品的描述信息,该参数最长为 128 个 Unicode 字符,yeepay_wap 对于该参数长度限制为 100 个 Unicode 字符。
extra optional 特定渠道发起交易时需要的额外参数,以及部分渠道支付成功返回的额外参数,详细参考 支付渠道 extra 参数说明
time_expire optional 订单失效时间,用 Unix 时间戳表示。时间范围在订单创建后的 1 分钟到 15 天,默认为 1 天,创建时间以 Ping++ 服务器时间为准。 微信对该参数的有效值限制为 2 小时内;银联对该参数的有效值限制为 1 小时内。
metadata optional 参考 元数据
description optional 订单附加说明,最多 255 个 Unicode 字符。

返回

返回一个支付凭据 charge 对象。鉴于支付渠道对 order_no 的合法性要求,为了保证支付请求的正确处理,请务必保证对于同一支付渠道下,不同支付产品间 order_no 的唯一性。例如:已在微信公众号下使用的 order_no 则无法在微信支付以及微信公众号扫码下重复使用,该规则同样适用于其他同类渠道。如果发生错误,则会返回错误码和错误详情,详见 错误

定义

POST https://api.pingxx.com/v1/charges

请求示例

curl https://api.pingxx.com/v1/charges \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d order_no=123456789 \
-d amount=100 \
-d app[id]=app_1Gqj58ynP0mHeX1q \
-d channel=upacp \
-d currency=cny \
-d client_ip=127.0.0.1 \
-d subject="Your Subject" \
-d body="Your Body"

返回示例

{
  "id": "ch_L8qn10mLmr1GS8e5OODmHaL4",
  "object": "charge",
  "created": 1410834527,
  "livemode": true,
  "paid": false,
  "refunded": false,
  "app": "app_1Gqj58ynP0mHeX1q",
  "channel": "upacp",
  "order_no": "123456789",
  "client_ip": "127.0.0.1",
  "amount": 100,
  "amount_settle": 100,
  "currency": "cny",
  "subject": "Your Subject",
  "body": "Your Body",
  "extra":{},
  "time_paid": null,
  "time_expire": 1410838127,
  "time_settle": null,
  "transaction_no": null,
  "refunds": {
    "object": "list",
    "url": "/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4/refunds",
    "has_more": false,
    "data": [ ]
  },
  "amount_refunded": 0,
  "failure_code": null,
  "failure_msg": null,
  "metadata": {},
  "credential": {
    "object": "credential",
    "upacp": {
      "tn": "201409161028470000000",
      "mode": "01"
    }
  },
  "description": null
}

查询 Charge 对象

你可以在后台异步通知之前,通过查询接口确认支付状态。通过charge对象的id查询一个已创建的charge对象。

请求参数
id required 查询的 charge 对象 id

返回

返回一个已存在的 charge 对象或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/charges/{CHARGE_ID}

请求示例

curl https://api.pingxx.com/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4 \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
  "id": "ch_L8qn10mLmr1GS8e5OODmHaL4", 
  "object": "charge", 
  "created": 1410834527, 
  "livemode": true, 
  "paid": false, 
  "refunded": false, 
  "app": "app_1Gqj58ynP0mHeX1q", 
  "channel": "upacp",
  "order_no": "123456789", 
  "client_ip": "127.0.0.1", 
  "amount": 100, 
  "amount_settle": 100, 
  "currency": "cny", 
  "subject": "Your Subject",
  "body": "Your Body",
  "extra":{},
  "time_paid": null,
  "time_expire": 1410838127, 
  "time_settle": null, 
  "transaction_no": null, 
  "refunds": {
    "object": "list", 
    "url": "/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4/refunds", 
    "has_more": false, 
    "data": [ ]
  }, 
  "amount_refunded": 0, 
  "failure_code": null, 
  "failure_msg": null, 
  "metadata": {}, 
  "credential": {
    "object": "credential", 
    "upacp": {
      "tn": "201409161028470000000", 
      "mode": "01"
    }
  }, 
  "description": null
}

查询 Charge 对象列表

返回之前创建过 charge 对象的一个列表。列表是按创建时间进行排序,总是将最新的 charge 对象显示在最前。

请求参数
limit optional 限制有多少对象可以被返回,限制范围是从 1-20 项,默认是 10 项。
starting_after optional 在分页时使用的指针,决定了列表的第一项从何处开始。假设你的一次请求返回列表的最后一项的 idobj_end ,你可以使用 starting_after = obj_end 去获取下一页。
ending_before optional 在分页时使用的指针,决定了列表的最末项在何处结束。假设你的一次请求返回列表的最后一项的 idobj_start ,你可以使用 ending_before = obj_start 去获取上一页。
created optional 对象的创建时间,用 Unix 时间戳表示。具体参考下表 created 参数。
app [ id ] expandable required 支付使用的 app 对象的 id ,expandable 可展开,查看 如何获取App ID
channel optional 支付使用的支付渠道。参考 支付渠道属性值
paid optional 是否已付款。
refunded optional 是否存在退款信息,无论退款是否成功。
created 参数
created [ gt ] optional int 大于 charge 对象的创建时间,用 Unix 时间戳表示。
created [ gte ] optional int 大于或等于 charge 对象的创建时间,用 Unix 时间戳表示。
created [ lt ] optional int 小于 charge 对象的创建时间,用 Unix 时间戳表示。
created [ lte ] optional int 小于或等于 charge 对象的创建时间,用 Unix 时间戳表示。

返回

返回一个已存在的 charge 对象列表或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/charges?expand[]=app

请求示例

curl https://api.pingxx.com/v1/charges/?limit=3&expand[]=app \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
  "object": "list",
  "url": "/v1/charges",
  "has_more": false,
  "data": [
    {
      "id": "ch_L8qn10mLmr1GS8e5OODmHaL4", 
      "object": "charge", 
      "created": 1410834527, 
      "livemode": true, 
      "paid": false, 
      "refunded": false, 
      "app": "app_1Gqj58ynP0mHeX1q", 
      "channel": "upacp",
      "order_no": "123456789", 
      "client_ip": "127.0.0.1", 
      "amount": 100, 
      "amount_settle": 100, 
      "currency": "cny", 
      "subject": "Your Subject",
      "body": "Your Body",
      "extra":{},
      "time_paid": null,
      "time_expire": 1410838127, 
      "time_settle": null, 
      "transaction_no": null, 
      "refunds": {
        "object": "list", 
        "url": "/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4/refunds", 
        "has_more": false, 
        "data": [ ]
      }, 
      "amount_refunded": 0, 
      "failure_code": null, 
      "failure_msg": null, 
      "metadata": {}, 
      "credential": {
        "object": "credential", 
        "upacp": {
          "tn": "201409161028470000000", 
          "mode": "01"
        }
      }, 
      "description": null
    }
  ]
}

Refunds 退款

refund 对象允许你可以对已经支付的 charge 对象发起退款请求。

属性
id string 退款对象 id ,由 Ping++ 生成,27 位长度字符串。
object string 值为 "refund"。
order_no string 退款的订单号,由 Ping++ 生成。
amount int 退款金额大于0,单位为对应币种的最小货币单位,例如:人民币为分(如退款金额为 1 元,此处请填 100)。
succeed boolean 退款是否成功。
status string 退款状态(目前支持三种状态: pending: 处理中; succeeded: 成功; failed: 失败)。
created timestamp 退款创建的时间,用 Unix 时间戳表示。
time_succeed timestamp 退款成功的时间,用 Unix 时间戳表示。
description string 退款详情,最多 255 个 Unicode 字符。
failure_code string 退款的错误码,详见 错误 中的错误码。
failure_msg string 退款消息的描述。
metadata hash 参考 元数据
charge string refund 对象的所在 charge 对象的 id
charge_order_no string 商户订单号,这边返回的是 charge 对象中的 order_no 参数。
transaction_no string 支付渠道返回的交易流水号,部分渠道返回该字段为空。
funding_source string 退款资金来源。取值范围:"unsettled_funds":使用未结算资金退款;"recharge_funds":使用可用余额退款。注:默认值"unsettled_funds",该参数仅适用于所有微信渠道,包括 wx , wx_pub , wx_pub_qr , wx_lite , wx_wap 五个渠道;该参数仅在请求退款,传入该字段时返回。

示例对象

{
  "id": "re_y1u944PmfnrTHyvnL0nD0iD1",
  "object": "refund",
  "order_no": "y1u944PmfnrTHyvnL0nD0iD1",
  "amount": 9,
  "created": 1409634160,
  "succeed": true,
  "status": "succeeded",
  "time_succeed": 1409634192,
  "description": "Refund Description",
  "failure_code": null,
  "failure_msg": null,
  "metadata": {},
  "charge": "ch_L8qn10mLmr1GS8e5OODmHaL4",
  "charge_order_no": "123456789",
  "transaction_no": "2004450349201512090096425284"
}

创建 Refund 对象

通过发起一次退款请求创建一个新的 refund 对象,只能对已经发生交易并且没有全额退款的 charge 对象发起退款。当进行全额退款之前,可以进行多次退款,直至全额退款。当一次退款成功后,会发送 Webhooks 通知。

请求参数
id required charge 对象的 id
amount optional 退款金额大于0, 单位为对应币种的最小货币单位,例如:人民币为分(如退款金额为 1 元,此处请填 100)。必须小于等于可退款金额,默认为全额退款。
metadata optional 参考 元数据
description required 退款详情,最多 255 个 Unicode 字符。
funding_source optional 退款资金来源。取值范围:"unsettled_funds":使用未结算资金退款;"recharge_funds":使用可用余额退款。注:默认值"unsettled_funds",该参数仅适用于所有微信渠道,包括 wx , wx_pub , wx_pub_qr , wx_lite , wx_wap 五个渠道;该参数仅在请求退款,传入该字段时返回。

返回

如果发起退款成功,返回一个退款 refund 对象。如果发生错误,则会返回错误码和错误详情,详见 错误

定义

POST https://api.pingxx.com/v1/charges/{CHARGE_ID}/refunds

请求示例

curl https://api.pingxx.com/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4/refunds \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d description="Refund Description" \
-X POST

返回示例

{
  "id": "re_y1u944PmfnrTHyvnL0nD0iD1",
  "object": "refund",
  "order_no": "y1u944PmfnrTHyvnL0nD0iD1",
  "amount": 9,
  "created": 1409634160,
  "succeed": true,
  "status": "succeeded",
  "time_succeed": 1409634192,
  "description": "Refund Description",
  "failure_code": null,
  "failure_msg": null,
  "metadata": {},
  "charge": "ch_L8qn10mLmr1GS8e5OODmHaL4",
  "charge_order_no": "123456789",
  "transaction_no": "2004450349201512090096425284"
}

查询 Refund 对象

可以通过 charge 对象的查询接口查询某一个 charge 对象的退款列表,也可以通过 refund 对象的 id 查询一个已创建的 refund 对象。可以在 Webhooks 通知之前,通过查询接口确认退款状态。

请求参数
id required 查询的 refund 对象 id
charge required 退款的 charge 对象 id

返回

返回一个已存在的 refund 对象或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/charges/{CHARGE_ID}/refunds/{REFUND_ID}

请求示例

curl https://api.pingxx.com/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4/refunds/re_TmbvDKHiXLCSG0mnj9jnDyjA \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
  "id": "re_y1u944PmfnrTHyvnL0nD0iD1",
  "object": "refund",
  "order_no": "y1u944PmfnrTHyvnL0nD0iD1",
  "amount": 9,
  "created": 1409634160,
  "succeed": true,
  "status": "succeeded",
  "time_succeed": 1409634192,
  "description": "Refund Description",
  "failure_code": null,
  "failure_msg": null,
  "metadata": {},
  "charge": "ch_L8qn10mLmr1GS8e5OODmHaL4",
  "charge_order_no": "123456789",
  "transaction_no": "2004450349201512090096425284"
}

查询 Refund 对象列表

返回之前创建 charge 对象的一个 refund 对象列表。列表是按创建时间进行排序,总是将最新的 refund 对象显示在最前。

请求参数
id required 指定退款所在 charge 对象的 id
limit optional 限制每页可以返回多少对象,范围为 1-20 项,默认是 10 项。
starting_after optional 在分页时使用的指针,决定了列表的第一项从何处开始。假设你的一次请求返回列表的最后一项的 idobj_end ,你可以使用 starting_after = obj_end 去获取下一页。
ending_before optional 在分页时使用的指针,决定了列表的最末项在何处结束。假设你的一次请求返回列表的最后一项的 idobj_start ,你可以使用 ending_before = obj_start 去获取上一页。

返回

根据请求参数返回一个 refund 对象列表,如果列表为空,则返回的 data 为空数组。遇到错误时返回相应错误信息,详见 错误

定义

GET https://api.pingxx.com/v1/charges/{CHARGE_ID}/refunds

请求示例

curl https://api.pingxx.com/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4/refunds?limit=3 \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
  "object": "list",
  "url": "/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4/refunds",
  "has_more": false,
  "data": [
    {
      "id": "re_TmbvDKHiXLCSG0mnj9jnDyjA",
      "object": "refund",
      "order_no": "TmbvDKHiXLCSG0mnj9jnDyjA",
      "amount": 100,
      "created": 1410835214,
      "succeed": true,
      "status": "succeeded",
      "time_succeed": 1410835652,
      "description": "Refund Description",
      "failure_code": null,
      "failure_msg": null,
      "metadata": {},
      "charge": "ch_L8qn10mLmr1GS8e5OODmHaL4",
      "charge_order_no": "123456789",
      "transaction_no": "2004450349201512090096425284"
    }
  ]
}

Batch Refunds 批量退款

支付宝的退款流程比较特殊,需要人工介入(点击退款链接输入商家密码完成退款),所以你可以调用该接口完成支付宝 alipayalipay_wapalipay_pc_direct 三个渠道的订单批量退款;其他渠道的退款,可以通过重复调用退款接口实现。 以下是该退款接口的注意点:

  • 批量退款接口,目前只支持全额退款,若存在部分退款的订单,则会把此类订单的剩余金额全部退完;
  • 目前支持三个渠道的订单 alipay, alipay_wap, alipay_pc_direct
  • 需要发起退款的 charge 列表,不可以有重复的 charge id ,必须全部是已支付并且未全额退款的状态;
  • 批量退款中,任意一笔订单信息不符合以上 3 条规则之一,则批量请求中的所有订单退款均会失败,抛出首个报错的 charge 信息;
  • 批量退款对象创建成功后,需要使用浏览器打开 refund_url 字段所对应的地址,商家进行退款操作并且输入支付宝支付密码;
  • 批量退款成功后,调用批量退款查询接口不会返回退款链接,refund_url字段为空;
  • 批量退款请求中同时有不同的支付宝渠道时,必须是同一套参数(公私钥),否则打开链接跳转后会报错。
  • 查询批量退款列表接口的 GET 请求强制要求签名,必须生成 RSA 签名(SHA256)并在请求头中添加 Pingplusplus-Signature 字段,需在管理平台上配置商户公钥;同时必须在请求头中添加 Pingplusplus-Request-Timestamp 字段,其值为请求接口的 Unix 时间戳;其他接口请求暂不要求强制签名。
属性
id string 批量退款对象 id ,由 Ping++ 生成。
app string 批量退款对应的 app 对象 ID,查看 如何获取App ID
object string 值为 "batch_refund"。
batch_no string 批量退款批次号,3-24位,允许字母和英文。
created int 批量退款创建时间,用 Unix 时间戳表示。
description string 批量退款详情,最多 255 个 Unicode 字符。
metadata hash 参考 元数据
charges array 需要退款的 charge id 列表。
refunds list 退款详情列表,详见 refund 退款
refund_url string 退款 URL,仅在渠道为支付宝时有值,你需要获取该地址,在浏览器中打开并且输入支付宝支付密码才能完成退款。

对象示例

{
    "id": "151608161453545102",
    "app": "app_abcdefghweqzadfs",
    "object": "batch_refund",
    "batch_no": "batchrefund20160801001",
    "created": 1409634192,
    "description": "Batch refund description.",
    "charges": [
        "ch_L8qn10mLmr1GS8e5OODmHaL4",
        "ch_fdOmHaLmLmr1GOD4qn1dS8e5"
    ],
    "refunds": {
        "object": "list",
        "url": null,
        "has_more": false,
        "data": [
            {
                "id": "re_y1u944PmfnrTHyvnL0nD0iD1",
                "object": "refund",
                "order_no": "y1u944PmfnrTHyvnL0nD0iD1",
                "amount": 10,
                "created": 1409634160,
                "succeed": true,
                "status": "succeeded",
                "time_succeed": 1409634192,
                "description": "Batch refund description.",
                "failure_code": null,
                "failure_msg": null,
                "metadata": {},
                "charge": "ch_L8qn10mLmr1GS8e5OODmHaL4",
                "charge_order_no": "123456789",
                "transaction_no": "2004450349201512090096425280"
            },
            {
                "id": "re_nL0nD0iDPmfy1u944HyvnrT1",
                "object": "refund",
                "order_no": "nL0nD0iDPmfy1u944HyvnrT1",
                "amount": 10,
                "created": 1409634160,
                "succeed": true,
                "status": "succeeded",
                "time_succeed": 1409634192,
                "description": "Batch refund description.",
                "failure_code": null,
                "failure_msg": null,
                "metadata": {},
                "charge": "ch_fdOmHaLmLmr1GOD4qn1dS8e5",
                "charge_order_no": "123456789",
                "transaction_no": "2004450349201512090096425281"
            }
        ]
    },
    "refund_url": null
}

创建 Batch Refund 对象

创建一个 batch refund 对象来发起支付宝批量退款。

请求参数
app required 批量退款对应的 app 对象 ID,查看 如何获取App ID
batch_no required 批量退款批次号,3-24位,允许字母和英文。
charges required 需要退款的 charge id 列表,一次最多 100 个。
description optional 批量退款详情,最多 255 个 Unicode 字符。
metadata optional 参考 元数据

返回

返回一个 batch refund 对象或者一个错误,详见 错误

定义

POST https://api.pingxx.com/v1/batch_refunds

请求示例

curl  https://api.pingxx.com/v1/batch_refunds \
-H "Content-Type: application/json" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d '{
    "app": "app_abcdefghweqzadfs",
    "batch_no": "batchrefund20160801001",
    "description": "Batch refund description.",
    "charges": [
        "ch_L8qn10mLmr1GS8e5OODmHaL4",
        "ch_fdOmHaLmLmr1GOD4qn1dS8e5"
    ]
}'

返回示例

{
    "id": "151608161453545122",
    "app": "app_abcdefghweqzadfs",
    "object": "batch_refund",
    "batch_no": "batchrefund20160801001",
    "created": 1409634192,
    "description": "Batch refund description.",
    "charges": [
        "ch_L8qn10mLmr1GS8e5OODmHaL4",
        "ch_fdOmHaLmLmr1GOD4qn1dS8e5"
    ],
    "refunds": {
        "object": "list",
        "url":null,
        "has_more": false,
        "data": [
            {
                "id": "re_y1u944PmfnrTHyvnL0nD0iD1",
                "object": "refund",
                "order_no": "y1u944PmfnrTHyvnL0nD0iD1",
                "amount": 10,
                "created": 1409634160,
                "succeed": true,
                "status": "succeeded",
                "time_succeed": 1409634192,
                "description": "Batch refund description.",
                "failure_code": null,
                "failure_msg": null,
                "metadata": {},
                "charge": "ch_L8qn10mLmr1GS8e5OODmHaL4",
                "charge_order_no": "123456789",
                "transaction_no": "2004450349201512090096425284"
            },
            {
                "id": "re_nL0nD0iDPmfy1u944HyvnrT1",
                "object": "refund",
                "order_no": "nL0nD0iDPmfy1u944HyvnrT1",
                "amount": 10,
                "created": 1409634160,
                "succeed": true,
                "status": "succeeded",
                "time_succeed": 1409634192,
                "description": "Batch refund description.",
                "failure_code": null,
                "failure_msg": null,
                "metadata": {},
                "charge": "ch_fdOmHaLmLmr1GOD4qn1dS8e5",
                "charge_order_no": "123456789",
                "transaction_no": "2004450349201512090096425285"
            }
        ]
    },
    "refund_url": "https://mapi.alipay.com/gateway.do?..."
}

查询 Batch Refund 对象

你可以使用 batch_refund_id 来查询对应的 batch refund 对象信息。

请求参数
id required 批量退款对象 id ,由 Ping++ 生成。

返回

返回一个 batch refund 对象或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/batch_refunds/{BATCH_REFUND_ID} 

请求示例

curl https://api.pingxx.com/v1/batch_refunds/151608161453545122 \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: 

返回示例

{
    "id": "151608161453545102",
    "app": "app_abcdefghweqzadfs",
    "object": "batch_refund",
    "batch_no": "batchrefund20160801001",
    "created": 1409634192,
    "description": "Batch refund description.",
    "charges": [
        "ch_L8qn10mLmr1GS8e5OODmHaL4",
        "ch_fdOmHaLmLmr1GOD4qn1dS8e5"
    ],
    "refunds": {
        "object": "list",
        "url": null,
        "has_more": false,
        "data": [
            {
                "id": "re_y1u944PmfnrTHyvnL0nD0iD1",
                "object": "refund",
                "order_no": "y1u944PmfnrTHyvnL0nD0iD1",
                "amount": 10,
                "created": 1409634160,
                "succeed": true,
                "status": "succeeded",
                "time_succeed": 1409634192,
                "description": "Batch refund description.",
                "failure_code": null,
                "failure_msg": null,
                "metadata": {},
                "charge": "ch_L8qn10mLmr1GS8e5OODmHaL4",
                "charge_order_no": "123456789",
                "transaction_no": "2004450349201512090096425280"
            },
            {
                "id": "re_nL0nD0iDPmfy1u944HyvnrT1",
                "object": "refund",
                "order_no": "nL0nD0iDPmfy1u944HyvnrT1",
                "amount": 10,
                "created": 1409634160,
                "succeed": true,
                "status": "succeeded",
                "time_succeed": 1409634192,
                "description": "Batch refund description.",
                "failure_code": null,
                "failure_msg": null,
                "metadata": {},
                "charge": "ch_fdOmHaLmLmr1GOD4qn1dS8e5",
                "charge_order_no": "123456789",
                "transaction_no": "2004450349201512090096425281"
            }
        ]
    },
    "refund_url": null
}

查询 Batch Refund 对象列表

你可以使用调用该接口来查询对应的 batch refund 对象列表信息。

请求参数
page optional int 页码,取值范围:1~1000000000;默认值为"1"。
per_page optional int 每页数量,取值范围:1~100;默认值为"10"。
created [ gt ] optional int 创建时间大于该值。
created [ gte ] optional int 创建时间大于或等于该值。
created [ lt ] optional int 创建时间小于该值。
created [ lte ] optional int 创建时间小于或等于该值。
app required 批量退款对应的 app 对象 ID,查看 如何获取App ID

返回

返回一个 batch refund 对象列表或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/batch_refunds?app={app_id}

请求示例

curl https://api.pingxx.com/v1/batch_refunds?app={app_id} \
-H "Content-Type: application/json; charset=utf-8" \
-H "Pingplusplus-Signature: SIGNATURE" \
-H "Pingplusplus-Request-Timestamp: 1476067085" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: 

返回示例

{
  "object": "list",
  "url": "/v1/batch_refunds",
  "has_more": true,
  "data": [
      {
          "id": "151608191520130289",
          "object": "batch_refund",
          "app": "app_abcdefghweqzadfs",
          "created": 1471591213,
          "livemode": true,
          "batch_no": "batchrefundw20e8016w00w5",            
          "charges": [
              "ch_m5iTe9vfP4a5nfPuz99OmT48",
              "ch_nLCK8O0yHqP4zDybLGi1GOKS",
              "ch_8K8qL0aLuz1CDCu58K0m9SO4"
          ],
          "refunds": {
              "object": "list",
              "url": null,
              "has_more": false,
              "data": [
                  {
                     "id": "re_480mXL8eDq1KSGOGKSebnTu9",
                     "object": "refund",
                     "order_no": "480mXL8eDq1KSGOGKSebnTu9",
                     "amount": 1,
                     "succeed": false,
                     "status": "pending",
                     "created": 1471591213,
                     "time_succeed": null,
                     "description": "Batch refund description.",
                     "failure_code": null,
                     "failure_msg": null,
                     "metadata": {
                     },
                     "charge": "ch_nLCK8O0yHqP4zDybLGi1GOKS",
                     "charge_order_no": "20160426012",
                     "transaction_no": null
                   },
                   {
                      "id": "re_80unvLij1WTSbLGOGSHmnzP0",
                      "object": "refund",
                      "order_no": "80unvLij1WTSbLGOGSHmnzP0",
                      "amount": 9,
                      "succeed": false,
                      "status": "pending",
                      "created": 1471591213,
                      "time_succeed": null,
                      "description": "Batch refund description.",
                      "failure_code": null,
                      "failure_msg": null,
                      "metadata": {
                      },
                      "charge": "ch_8K8qL0aLuz1CDCu58K0m9SO4",
                      "charge_order_no": "T160226095516pQ",
                      "transaction_no": null
                  },
                  {
                     "id": "re_LCWD8O8GaP441arfb5qn9efP",
                     "object": "refund",
                     "order_no": "LCWD8O8GaP441arfb5qn9efP",
                     "amount": 1,
                     "succeed": false,
                     "status": "pending",
                     "created": 1471591213,
                     "time_succeed": null,
                     "description": "Batch refund description.",
                     "failure_code": null,
                     "failure_msg": null,
                        "metadata": {
                        },
                        "charge": "ch_m5iTe9vfP4a5nfPuz99OmT48",
                        "charge_order_no": "20160125103012",
                        "transaction_no": null
                    }
                ]
            },
            "refund_url": "https://mapi.alipay.com/gateway.do?service=refund_fastpay_by_platform_pwd&partner=2088711316963982&_input_charset=utf-8&notify_url=http%3A%2F%2F218.244.151.190%2Fnotify%2Fbatch_refunds%2F151608191520130289&seller_user_id=2088711316963982&refund_date=2016-08-19%2015%3A20%3A13&batch_no=20160819batchrefundw20e8016w00w5&batch_num=3&detail_data=2016022621001004920228205160%5E0.09%5EBatch%20refund%20description.%232016012521001004920027269239%5E0.01%5EBatch%20refund%20description.%232016042621001004290267984563%5E0.01%5EBatch%20refund%20description.&sign=p431TPLEdayicFAKxwhnBUknZyV7Fe21vAzTimXwMMBcoCa58hEBFaldOVLmMNkUB6NDbu5Uf6CigPkQlIqF8QP4qLtNLnTrwsGvYncTwO6bduTN2kIjSIeQhKYHl%2B%2BbQtb56q9V2JVoGFCz3IfHjcODC4hP2bTfqrL6f26rdNE%3D&sign_type=RSA",
            "description": "Batch refund description.",
            "metadata": {
            }
        },
        {
            "id": "151608191443239949",
            "object": "batch_refund",
            "app": "app_abcdefghweqzadfs",
            "created": 1471589003,
            "livemode": true,
            "batch_no": "batchrefundw20e801600w5",
            "charges": [
                "ch_m5iTe9vfP4a5nfPuz99OmT48"
            ],
            "refunds": {
                "object": "list",
                "url": null,
                "has_more": false,
                "data": [
                    {
                      "id": "re_CC4O44LuXvH8SevvLGSa5y94",
                      "object": "refund",
                      "order_no": "CC4O44LuXvH8SevvLGSa5y94",
                      "amount": 1,
                      "succeed": false,
                      "status": "pending",
                      "created": 1471589003,
                      "time_succeed": null,
                      "description": "Batch refund description.",
                      "failure_code": null,
                      "failure_msg": null,
                      "metadata": {
                     },
                      "charge": "ch_m5iTe9vfP4a5nfPuz99OmT48",
                      "charge_order_no": "20160125103012",
                      "transaction_no": null
                  }
              ]
          },
          "refund_url": "https://mapi.alipay.com/gateway.do?service=refund_fastpay_by_platform_pwd&partner=2088711316963982&_input_charset=utf-8&notify_url=http%3A%2F%2F218.244.151.190%2Fnotify%2Fbatch_refunds%2F151608191443239949&seller_user_id=2088711316963982&refund_date=2016-08-19%2014%3A43%3A23&batch_no=20160819batchrefundw20e801600w5&batch_num=1&detail_data=2016012521001004920027269239%5E0.01%5EBatch%20refund%20description.&sign=HpYKWf4ZJSVN6gShkiCl82kEEKLtGJRuNmlIjrjOdeVJrvW1LjytpME8ivxykwG3U6AzO%2BUDgHrasIdHSokSSQXzEQRC4cmMqt4aSOQYEQ5fmUDkg44WvnjqJqVCBKtU6NugiNXKVm9YSIpk5cCd9szbkOKu04Y2MUK5AS1Fp4o%3D&sign_type=RSA",
          "description": "Batch refund description.",
          "metadata": {
            }
        },
        {...}
    ]
}

Red Envelopes 红包

你可以请求一个 red_envelope 红包对象向你的用户发红包。所有和红包支付相关的要素信息都存储在 red_envelope 对象之中,你可以通过发起红包请求创建新的 red_envelope 对象,也可以随时查看红包对象的状态。每个 red_envelope 对象都拥有一个标识 id ,该 id 在系统内唯一。

属性
id string 红包对象 id ,由 Ping++ 生成,28 位长度字符串。
object string 值为 red_envelope
created timestamp 支付红包的时间,用 Unix 时间戳表示。
received timestamp 红包的接收时间,用 Unix 时间戳表示。
refunded timestamp 红包超过 24 小时未领取的退回时间,用 Unix 时间戳表示。
livemode boolean 支付是否处于 live 模式。
status string 红包状态。目前支持 5 种状态:sending: 发放中; sent: 已发放待领取; failed: 发放失败; received: 已领取; refund: 已退款。
app expandable string 红包使用的 app 对象的 idexpandable 可展开,查看 如何获取App ID
channel string 红包使用的第三方支付渠道。目前仅支持 wx_pub
order_no string 红包使用的商户订单号。 wx_pub 渠道规定为 1 ~ 28 位不能重复的数字。
transaction_no string 第三方支付渠道的交易流水号。
amount int 总金额大于0,单位为对应币种的最小货币单位,例如:人民币为分。 wx_pub 限制在 100 ~ 20000 之间,即 1 ~ 200 元。
amount_settle int 清算金额,单位为对应币种的最小货币单位,例如:人民币为分。
currency string 三位 ISO 货币代码,目前仅支持人民币 cny。
recipient string 接收者 id, 为用户在 wx_pub 渠道下的 open_id
subject string 红包主题名称,最多 32 个字节。
body string 红包祝福语,最多 128 个字节。
description string 备注信息,最多 255 个字节。
metadata hash 参考 元数据
failure_msg string 红包订单的错误消息的描述。
extra object 支付渠道相关的附加参数,具体参考下表 extra 参数说明。
extra 参数
send_name string 商户名称,最多 32 个字节。
scene_id string 发放红包使用场景,红包金额大于 200 时必传。具体属性请看请求参数中的 scene_id 属性值。

示例对象

{
   "id": "red_KCabLO58W5G0rX90iT0az5a9",
   "object": "red_envelope",
   "created": 1428499439,
   "received": null,
   "refunded": null,
   "livemode": true,
   "status": "sending",
   "app": "app_1Gqj58ynP0mHeX1q",
   "channel": "wx_pub",
   "order_no": "123456789",
   "transaction_no": null,
   "amount": 100,
   "amount_settle": 100,
   "currency": "cny",
   "recipient": "Openid",
   "subject": "Your Subject",
   "body": "Your Body",
   "description": "Your Description",
   "failure_msg":null,
   "extra": {
       "send_name": "Send Name"
   }
 }

创建 Red Envelope 对象

发起一次红包请求需要创建一个新的 red_envelope 对象。如果支付失败,请检查错误信息,一般是由于账户余额不足引起的。使用测试模式的 API Key,则不会发生真实交易,且需要主动调用下方的红包查询接口才能刷新红包订单的状态且触发 Webhooks 回调。同步返回交易结果,不会发送 Webhooks 通知。

请求参数
app [ id ] expandable required 红包使用的 app 对象的 idexpandable 可展开,查看 如何获取App ID
channel required 红包使用的第三方支付渠道。目前仅支持 wx_pub
order_no required 红包使用的商户订单号。 wx_pub 渠道规定为 1 ~ 28 位不能重复的数字。
amount required 总金额大于0,单位为对应币种的最小货币单位,例如:人民币为分。 wx_pub 限制在 100 ~ 20000 之间,即 1 ~ 200 元。
currency required 三位 ISO 货币代码,目前仅支持人民币 cny
recipient required 接收者 id, 为用户在 wx_pub 下的 open_id
subject required 红包主题名称,最多 32 个字节。
body required 红包祝福语,最多 128 个字节。
description required 备注信息,最多 255 个字节。
metadata optional 参考 元数据
extra required 支付渠道相关的附加参数,具体参考下表 extra 参数说明。
extra 参数
send_name required 商户名称,最多 32 个字节。
scene_id optional 发放红包使用场景,红包金额大于 200 时必传。具体属性看 scene_id 属性值。
scene_id 参数
PRODUCT_1 string 商品促销
PRODUCT_2 string 抽奖
PRODUCT_3 string 虚拟物品兑奖
PRODUCT_4 string 企业内部福利
PRODUCT_5 string 渠道分润
PRODUCT_6 string 保险回馈
PRODUCT_7 string 彩票派奖
PRODUCT_8 string 税务刮奖

返回

同步返回红包支付结果。如果发生错误,则会返回错误码和错误详情,详见 错误

定义

POST https://api.pingxx.com/v1/red_envelopes

请求示例

curl https://api.pingxx.com/v1/red_envelopes \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d order_no=123456789 \
-d app[id]=app_1Gqj58ynP0mHeX1q \
-d channel=wx_pub \
-d amount=100 \
-d currency=cny \
-d subject="Your Subject" \
-d body="Your Body" \
-d extra[send_name]="Send Name" \
-d reciprent=Openid \
-d description="Your Description"

返回示例

{
  "id": "red_KCabLO58W5G0rX90iT0az5a9",
  "object": "red_envelope",
  "created": 1428499439,
  "received": null,
  "refunded": null,
  "livemode": true,
  "status": "sending",
  "app": "app_1Gqj58ynP0mHeX1q",
  "channel": "wx_pub",
  "order_no": "123456789",
  "transaction_no": null,
  "amount": 100,
  "amount_settle": 100,
  "currency": "cny",
  "recipient": "Openid",
  "subject": "Your Subject",
  "body": "Your Body",
  "description": "Your Description",
  "failure_msg":null,
  "extra": {
    "send_name": "Send Name"
  }
}

查询 Red Envelope 对象

通过 red_envelope 对象的 id 查询一个已创建的 red_envelope 对象。

请求参数
id required 红包 id

返回

返回一个已存在的 red_envelope 对象或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/red_envelopes/{RED_ID}

请求示例

curl https://api.pingxx.com/v1/red_envelopes/red_KCabLO58W5G0rX90iT0az5a9 \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
  "id": "red_KCabLO58W5G0rX90iT0az5a9",
  "object": "red_envelope",
  "created": 1428499439,
  "received": null,
  "refunded": null,
  "livemode": true,
  "status": "sending",
  "app": "app_1Gqj58ynP0mHeX1q",
  "channel": "wx_pub",
  "order_no": "123456789",
  "transaction_no": null,
  "amount": 100,
  "amount_settle": 100,
  "currency": "cny",
  "recipient": "Openid",
  "subject": "Your Subject",
  "body": "Your Body",
  "description": "Your Description",
  "failure_msg":null,
  "extra": {
      "send_name": "Send Name"
  }
}

查询 Red Envelope 对象列表

返回之前创建 red_envelope 对象的一个列表。列表是按创建时间进行排序,总是将最新的 red_envelope 对象显示在最前。

请求参数
limit optional 限制每页可以返回多少对象,范围为 1-20 项,默认是 10 项。
starting_after optional 在分页时使用的指针,决定了列表的第一项从何处开始。假设你的一次请求返回列表的最后一项的 idobj_end ,你可以使用 starting_after = obj_end 去获取下一页。
ending_before optional 在分页时使用的指针,决定了列表的最末项在何处结束。假设你的一次请求返回列表的最后一项的 idobj_start ,你可以使用 ending_before = obj_start 去获取上一页。
app [ id ] expandable required 红包使用的 app 对象的 idexpandable 可展开,查看 如何获取App ID
channel optional 支付使用的第三方支付渠道,目前仅支持 wx_pub
status optional 红包状态。目前支持 5 种状态:sending: 发放中; sent: 已发放待领取; failed: 发放失败; received: 已领取; refund: 已退款。
created optional 对象的创建时间,用 Unix 时间戳表示,具体参考下表 created 参数。
created参数
created [ gt ] optional int 大于 red_envelope 对象的创建时间,用 Unix 时间戳表示。
created [ gte ] optional int 大于或等于 red_envelope 对象的创建时间,用 Unix 时间戳表示。
created [ lt ] optional int 小于 red_envelope 对象的创建时间,用 Unix 时间戳表示。
created [ lte ] optional int 小于或等于 red_envelope 对象的创建时间,用 Unix 时间戳表示。

返回

根据请求参数返回一个 red_envelope 对象列表,如果列表为空,则返回的 data 为空数组。遇到错误时返回相应错误信息,详见 错误

定义

GET https://api.pingxx.com/v1/red_envelopes?expand[]=app

请求示例

curl https://api.pingxx.com/v1/red_envelopes/?limit=3?expand[]=app \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
  "object": "list",
  "url": "/v1/red_envelopes",
  "has_more": true,
  "data": [
      {
        "id": "red_KCabLO58W5G0rX90iT0az5a9",
        "object": "red_envelope",
        "created": 1428499439,
        "received": null,
        "refunded": null,
        "livemode": true,
        "status": "sending",
        "app": "app_1Gqj58ynP0mHeX1q",
        "channel": "wx_pub",
        "order_no": "123456789",
        "transaction_no": null,
        "amount": 100,
        "amount_settle": 100,
        "currency": "cny",
        "recipient": "Openid",
        "subject": "Your Subject",
        "body": "Your Body",
        "description": "Your Description",
        "failure_msg":null,
        "extra": {
          "send_name": "Send Name"
          }
      }
  ]
}

Transfers 企业付款

你可以请求一个 transfer 对象向个人用户或企业账户发起微信(仅支持向个人用户转账)、支付宝或者银行卡的转账。所有与企业付款相关的要素信息都存储在 transfer 对象之中,你可以通过发起企业付款请求创建新的 transfer 对象,也可以随时查看企业付款对象的状态。每个 transfer 对象都拥有一个标识 id ,该 id 在系统内唯一。

注:此接口的支付宝企业付款仅支持支付宝2.0的单笔转账到支付宝账户接口,请查看产品介绍

属性
id string 企业付款对象 id ,由 Ping++ 生成,27 位长度字符串。
object string 值为 "transfer"。
type string 付款类型,转账到个人用户为 b2c,转账到企业用户为 b2b(微信公众号的企业付款,仅支持 b2c)。
created timestamp 创建时间,用 Unix 时间戳表示。
time_transferred timestamp 支付完成时间, 用 Unix 时间戳表示。由第三方支付渠道返回。
livemode boolean 是否是 live 模式。
status string 付款状态。目前支持 5 种状态:pending: 处理中; paid: 付款成功; failed: 付款失败;scheduled:待发送,unionpay渠道的转账会在请求成功后延时5分钟发送,5分钟内处于待发送状态;canceled:取消发送,更新(取消)转账后的订单状态。
app expandable string 转账对应的 app 对象的 idexpandable 可展开,查看 如何获取App ID
channel string 付款使用的第三方支付渠道名称。目前支持 wx_pub (微信)、 alipay (支付宝)和 unionpay 企业付款(银行卡)。
order_no string 付款使用的商户内部订单号。 wx_pub 规定为 1 ~ 50 位不能重复的数字字母组合; alipay 为 1 ~ 64 位不能重复的数字字母组合; unionpay 为1~16位的纯数字。
amount int 付款金额,相关渠道的限额,请查看 帮助中心 。单位为对应币种的最小货币单位,例如:人民币为分。
amount_settle int 清算金额,单位为对应币种的最小货币单位,例如:人民币为分。
currency string 三位 ISO 货币代码,目前仅支持人民币 cny。
recipient string 接收者 id, 微信企业付款时为用户在 wx_pub 下的 open_id ;渠道为 unionpay 时,不需要传该参数;渠道为 alipay 时,若 type 为 b2c,为个人支付宝账号,若 type 为 b2b,为企业支付宝账号。
description string 备注信息,最多 255 个 Unicode 字符。渠道为 unionpay 时,最多 99 个 Unicode 字符;渠道为 wx_pub 时,最多 99 个英文和数字的组合或最多 33 个中文字符,不可以包含特殊字符;渠道为 alipay 时,最多 100 个 Unicode 字符。
metadata hash 参考 元数据
transaction_no string 交易流水号,由第三方渠道提供。
failure_msg string 企业付款订单的错误消息的描述。
extra object transfer 相关的附加参数,详情参考 extra参数说明

示例对象

{
  "id": "tr_HqbzHCvLOaL4La1ezHfDWTqH",
  "object": "transfer",
  "type": "b2c",
  "created": 1432724825,
  "time_transferred": null,
  "livemode": true,
  "status": "pending",
  "app": "app_1Gqj58ynP0mHeX1q",
  "channel": "wx_pub",
  "order_no": "123456789",
  "amount": 100,
  "amount_settle": 100,
  "currency": "cny",
  "recipient": "o7zpMs5MW2-52GAy5hRrjdYVCktU",
  "description": "Your Description",
  "transaction_no": "1000018301201505200184147302",
  "failure_msg":null,
  "extra": {
      "user_name": "User Name",
      "force_check": true
  }
}

创建 Transfer 对象

你可以请求一个新的 transfer 对象发起一次企业付款。如果支付失败,请检查错误信息,一般是由于账户余额不足引起的。使用测试模式的 API Key,则不会发生真实交易。测试模式需要主动查询transfer 对象的状态,Ping++ 才会发送 Webhooks 通知。注:渠道为 unionpayalipay 时,强制要求签名(Pingplusplus-Signature),需在管理平台上配置商户公钥,但无须开启; unionpay 渠道的转账会延时5分钟发送,5分钟内可以调用更新Transfer接口取消该笔转账。

请求参数
app [ id ] expandable required 转账使用的 app 对象的 idexpandable 可展开,查看 如何获取App ID
channel required 付款使用的第三方支付渠道名称。目前支持 wx_pub (微信)、 alipay (支付宝)和 unionpay 企业付款(银行卡)。
order_no required 付款使用的商户内部订单号。 wx_pub 规定为 1 ~ 50 位不能重复的数字字母组合; alipay 为 1 ~ 64 位不能重复的数字字母组合; unionpay 为1~16位的纯数字。
amount required 付款金额,相关渠道的限额,请查看 帮助中心 。单位为对应币种的最小货币单位,例如:人民币为分。
type required 付款类型,转账到个人用户为 b2c,转账到企业用户为 b2b(微信公众号的企业付款,仅支持 b2c)。
currency required 三位 ISO 货币代码,目前仅支持人民币: cny
recipient required 接收者 id, 微信企业付款时为用户在 wx_pub 下的 open_id ;渠道为 unionpay 时,不需要传该参数;渠道为 alipay 时,若 type 为 b2c,为个人支付宝账号,若 type 为 b2b,为企业支付宝账号。
description required 备注信息,最多 255 个 Unicode 字符。渠道为 unionpay 时,最多 99 个 Unicode 字符;渠道为 wx_pub 时,最多 99 个英文和数字的组合或最多 33 个中文字符,不可以包含特殊字符;渠道为 alipay 时,最多 100 个 Unicode 字符。
metadata optional 参考 元数据
extra optional 相关的附加参数,详情参考 extra参数说明

返回

同步返回付款支付结果。如果发生错误,则会返回错误码和错误详情,详见 错误

定义

POST https://api.pingxx.com/v1/transfers

请求示例

curl https://api.pingxx.com/v1/transfers \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d order_no=123456789 \
-d app[id]=app_1Gqj58ynP0mHeX1q \
-d channel=wx_pub \
-d amount=100 \
-d currency=cny \
-d type=b2c \
-d recipient=Openid \
-d description="Your Description"

返回示例

{
  "id": "tr_HqbzHCvLOaL4La1ezHfDWTqH",
  "object": "transfer",
  "type": "b2c",
  "created": 1432724825,
  "time_transferred": null,
  "livemode": true,
  "status": "pending",
  "app": "app_1Gqj58ynP0mHeX1q",
  "channel": "wx_pub",
  "order_no": "123456789",
  "amount": 100,
  "amount_settle": 100,
  "currency": "cny",
  "recipient": "o7zpMs5MW2-52GAy5hRrjdYVCktU",
  "description": "Your Description",
  "transaction_no": "1000018301201505200184147302",
  "failure_msg":null,
  "extra": {
      "user_name": "User Name",
      "force_check": true
     }
}

查询 Transfer 对象

通过 transfer 对象的 id 查询一个已创建的 transfer 对象。

属性
id required 付款对象 id

返回

返回一个已存在的 transfer 对象或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/transfers/{TRANSFER_ID}

请求示例

curl https://api.pingxx.com/v1/transfers/tr_HqbzHCvLOaL4La1ezHfDWTqH \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
    "id": "tr_HqbzHCvLOaL4La1ezHfDWTqH",
    "object": "transfer",
    "type": "b2c",
    "created": 1432724825,
    "time_transferred": null,
    "livemode": true,
    "status": "pending",
    "app": "app_1Gqj58ynP0mHeX1q",
    "channel": "wx_pub",
    "order_no": "123456789",
    "amount": 100,
    "amount_settle": 100,
    "currency": "cny",
    "recipient": "o7zpMs5MW2-52GAy5hRrjdYVCktU",
    "description": "Your Description",
    "transaction_no": "1000018301201505200184147302",
    "failure_msg":null,
    "extra": {
        "user_name": "User Name",
        "force_check": true
    }
}

查询 Transfer 对象列表

返回之前创建过 transfer 对象的一个列表。列表是按创建时间进行排序,总是将最新的 transfer 对象显示在最前。

请求参数
limit optional 限制每页可以返回多少对象,范围为 1-100 项,默认是 10 项。
starting_after optional 在分页时使用的指针,决定了列表的第一项从何处开始。假设你的一次请求返回列表的最后一项的 idobj_end ,你可以使用 starting_after = obj_end 去获取下一页。
ending_before optional 在分页时使用的指针,决定了列表的最末项在何处结束。假设你的一次请求返回列表的最后一项的 idobj_start ,你可以使用 ending_before = obj_start 去获取上一页。
created optional 对象的创建时间,用 Unix 时间戳表示,具体参考下表 created 参数。
app [ id ] expandable required 转账使用的 app 对象的 idexpandable 可展开,查看 如何获取App ID
channel optional 支付使用的第三方支付渠道,目前支持 wx_pub (微信公众号)、 alipay (支付宝)、 unionpay 企业付款(银行卡)。
status optional 付款状态。目前支持 5 种状态:pending: 处理中; paid: 付款成功; failed: 付款失败;scheduled:待发送,unionpay渠道的转账会在请求成功后延时5分钟发送,5分钟内处于待发送状态;canceled:取消发送,更新(取消)转账后的订单状态。
type optional 付款类型,目前仅支持 B2C。
created 参数说明
created [ gt ] optional int 大于 transfer 对象的创建时间,用 Unix 时间戳表示。
created [ gte ] optional int 大于或等于 transfer 对象的创建时间,用 Unix 时间戳表示。
created [ lt ] optional int 小于 transfer 对象的创建时间,用 Unix 时间戳表示。
created [ lte ] optional int 小于或等于 transfer 对象的创建时间,用 Unix 时间戳表示。

返回

返回一个已存在的 transfer 对象的列表或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/transfers?expand[]=app

请求示例

curl https://api.pingxx.com/v1/transfers/?limit=3&expand[]=app
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
  "object": "list",
  "url": "/v1/transfers",
  "has_more": true,
  "data": [
      {
        "id": "tr_HqbzHCvLOaL4La1ezHfDWTqH",
        "object": "transfer",
        "type": "b2c",
        "created": 1432724825,
        "time_transferred": null,
        "livemode": true,
        "status": "pending",
        "app": "app_1Gqj58ynP0mHeX1q",
        "channel": "wx_pub",
        "order_no": "123456789",
        "amount": 100,
        "amount_settle": 100,
        "currency": "cny",
        "recipient": "Openid",
        "description": "Your Description",
        "transaction_no": "1000018301201505200184147302",
        "failure_msg":null,
        "extra": {
           "user_name": "User Name",
           "force_check": true
        }
     }
  ]
}

更新 Transfer对象

你可以调用更新 transfer 对象接口来取消企业付款(银行卡)的转账订单。该接口只适用 unionpay 渠道,该渠道在 transfer 对象请求成功后,延时5分钟发送转账,5分钟内订单处于scheduled的准备发送状态,且可调用该接口通过 transfer 对象的 id 更新一个已创建的 transfer 对象,即取消该笔转账。

请求参数
id required unionpay 渠道的 transfer 对象 id
status required 更新 transfer 的状态,只支持 canceled

返回

返回一个更新成功的 transfer 对象或者一个错误,详见 错误

定义

PUT https://api.pingxx.com/v1/transfers/{TRANSFER_ID}

请求示例

curl https://api.pingxx.com/v1/transfers/tr_0eTi1OGqr9iH0i9CePf1a9C0 \
-H "Pingplusplus-Signature: SIGNATURE" \
-H "Content-Type: application/json" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d '{
    "status":"canceled"
}'

返回示例

{
  "id": "tr_0eTi1OGqr9iH0i9CePf1a9C0",
  "object": "transfer",
  "type": "b2c",
  "created": 1467615446,
  "time_transferred": null,
  "livemode": true,
  "status": "canceled",
  "app": "app_1Gqj58ynP0mHeX1q",
  "channel": "unionpay",
  "order_no": "123456789",
  "amount": 100,
  "amount_settle": 100,
  "currency": "cny",
  "recipient": null,
  "description": "Your Description",
  "transaction_no": "371646",
  "failure_msg": null,
  "extra": {
      "card_number": "6225220317083517",
      "user_name": "张三丰",
      "open_bank_code": "0102"
  }
}

Batch Transfers 批量企业付款

此批量付款接口适用于以下 3 个渠道接口:支付宝 1.0 接口的的企业付款接口比较特殊,需要人工介入(点击付款确认链接输入商户密码完成付款),所以你可以调用该批量企业付款接口完成支付宝的批量企业付款,这样,多笔付款只需要输入一次支付密码即可;支付宝 2.0 接口的企业付款接口则不需要输入密码;此外,调用该接口还可实现批量企业付款到银行卡。以下是该付款接口的注意点:

  • 支付宝 1.0 批量付款手续费率 0.5%,最低 1 元,最高 25 元。手续费按单笔分别计算,批量对象中的手续费 fee 字段会在批量企业付款成功后更新;支付宝 2.0 接口无手续费,详情参考帮助中心

  • 支付宝的批量企业付款状态 status 包含一个特殊的 partially_succeeded 状态,若批量企业付款中存在部分成功,部分失败的情况,批量企业付款对象将处于该状态,对于成功部分的付款也会发送 batch_transfer.succeeded 事件

  • 批量企业付款到银行卡的付款状态 status 包含两个特殊状态:scheduled 为待发送状态,该渠道的企业付款会在请求成功后延时 5 分钟发送,5 分钟内处于待发送状态;canceled 为取消发送状态,更新(取消)企业付款后的订单状态。

  • 批量企业付款对象 batch_transferrecipients 字段里的元素中,会有每笔付款对象的 transfer (对应的 transfer 对象 ID) 和 status(对应的 transfer 对象状态)字段。

  • 批量企业付款接口单次最多只能请求 200 笔企业付款订单。

  • 此接口的所有请求强制要求签名,必须生成 RSA 签名(SHA256)并在请求头中添加 Pingplusplus-Signature 字段,需在管理平台上配置商户公钥;同时必须在请求头中添加 Pingplusplus-Request-Timestamp 字段,其值为请求接口的 Unix 时间戳。(注:强制验签的含义是:你无须开启 Ping++ 管理平台上的验签开关,只需要在管理平台上传公钥,在服务端代码中设置私钥,就可以直接验签。)

属性
id string 由 Ping++ 生成的批量企业付款对象 ID
object string 值为 "batch_transfer"。
app string 创建批量企业付款使用的 app 对象 id ,查看 如何获取App ID
amount int 批量企业付款总金额。
batch_no string 批量企业付款批次号,11 ~ 32 位,允许字母和英文。
channel string 渠道参数,目前支持 alipay (支付宝,包含 1.0 和 2.0 接口)、 wx_pub (微信公众号)和 unionpay (企业付款到银行卡)。
currency string 三位 ISO 货币代码,人民币为 cny
created int 批量企业付款创建时的 Unix 时间戳。
description string 批量企业付款描述。
extra hash 额外信息,当前该字段为空。
failure_msg string 错误消息的描述。首次请求支付宝 1.0 批量企业付款成功时,该字段包含了确认付款的 URL 链接地址,仅在渠道为支付宝时有值,你需要获取该地址,在浏览器中打开并且输入支付宝商户密码才能完成批量企业付款;支付宝 2.0 产品接口无密,所以首次请求的 URL 中无付款链接;批量企业付款到银行卡的接口不需要输入密码。
fee int 批量企业付款手续费。
livemode boolean 是否处于 live 模式。
metadata hash 参考 元数据
recipients array 接收者信息。具体参考下表的 recipients 参数说明。
status string 批量企业付款状态。目前支持 6 种状态,pending: 处理中;succeeded: 成功;failed: 失败;partially_succeeded: 部分成功;scheduled: 待发送;canceled: 取消发送。
time_succeeded int 成功的 Unix 时间戳。
type string 付款类型,取值范围:b2c(打款给个人用户) 和 b2b(打款给企业用户)。 (当前 wx_pub 仅支持: b2c , alipay 和 unionpay 支持:b2b、b2c)
recipients 参数说明
account string 接收者支付宝账号。
amount int 付款金额。
name string 接收者姓名。
description string 批量企业付款描述。
transfer string 对应的单笔 transfer 对象 ID
status string 对应的单笔 transfer 对象状态。
open_bank string 1~50位,开户银行。
open_bank_code string 4位,开户银行编号,详情请参考 企业付款(银行卡)银行编号说明
account_type string 账户类型,alipay 2.0 渠道会用到此字段,字段值:ALIPAY_USERID、ALIPAY_LOGONID。
fee int 单笔 transfer 的渠道手续费。
failure_msg string 单笔 transfer 的错误信息。
order_no string 单笔 transfer 的订单号。
transaction_no string 单笔 transfer 的流水号。
order_no string 订单号,可选字段,如果不传程序就自动生成。

示例对象

{
  "id": "181610101014367590",
  "object": "batch_transfer",
  "app": "app_ribgW1n2SOqcPxn1",
  "amount": 8000,
  "batch_no": "2016101010380007",
  "channel": "alipay",
  "currency": "cny",
  "created": 1476067087,
  "description": "付款说明",
  "extra": {},
  "failure_msg": null,
  "fee": 0,
  "livemode": true,
  "metadata": {},
  "recipients": [
      {
          "account": "account01@alipay.com",
          "amount": 5000,
          "name": "张三",
          "transfer": "tr_jHWfvDnTKG0SiPmbfPbHW1eH",
          "status": "pending"
      },
      {
          "account": "account02@alipay.com",
          "amount": 3000,
          "name": "李四",
          "transfer": "tr_8u1yPK1eHWv9D08OePzDe1CK",
          "status": "pending"
      }
  ],
  "status": "pending",
  "time_succeeded": null,
  "type": "b2c"
}

创建 Batch Transfer 对象

创建一个 batch transfer 对象来发起批量企业付款。

请求参数
app required 批量企业付款对应的 app 对象 id ,查看 如何获取App ID
batch_no required 批量企业付款批次号,11 ~ 32 位,允许字母和英文。
channel required 渠道参数,目前支持 alipay (支付宝,包含 1.0 和 2.0 接口)、 wx_pub (微信公众号)和 unionpay (企业付款到银行卡)。
amount required 批量企业付款总金额。
description required 批量企业付款描述,最多 200 个字节。
metadata optional 参考 元数据
recipients required 接收者信息。具体参考下表的 支付宝批量企业付款 recipients 参数说明、微信公众号企业付款 recipients 参数说明 和 企业付款(银行卡) recipients 参数说明。
currency optional 三位 ISO 货币代码,人民币为 cny
type required 付款类型 (当前 wx_pub 仅支持: b2c, alipay 和 unionpay 支持: b2b、b2c)。
支付宝企业付款 recipients 参数说明
account required 接收者支付宝账号。
amount required 金额,单位为分
name required 接收者姓名。
description optional 批量企业付款描述,最多 200 字节。
account_type optional 账户类型,alipay 2.0 渠道会用到此字段,取值范围: 1、ALIPAY_USERID:支付宝账号对应的支付宝唯一用户号。以2088开头的16位纯数字组成。 2、ALIPAY_LOGONID(默认值):支付宝登录号,支持邮箱和手机号格式。
order_no optional 订单号, 1 ~ 64 位不能重复的数字字母组合。
微信公众号企业付款 recipients 参数说明
open_id required 接收者 id,为用户在 wx_pub 下的 open_id。
amount required 金额,单位为分。
name optional 收款人姓名。当该参数为空,则不校验收款人姓名。
description optional 不填默认使用外层参数中的 description 最多 99 个英文和数字的组合或最多 33 个中文字符,不可以包含特殊字符。
force_check optional 是否强制校验收款人姓名。仅当 name 参数不为空时该参数生效。
order_no optional 订单号,1 ~ 32 位不能重复的数字字母组合。
企业付款(银行卡) recipients 参数说明
account required 接收者银行卡账号。
amount required 付款金额。
name required 接收者姓名。
description optional 批量企业付款描述,最多 200 字节。
open_bank optional 1~50位,开户银行。
open_bank_code optional 4位,开户银行编号,详情请参考 企业付款(银行卡)银行编号说明
order_no optional 订单号,1 ~ 16 位不能重复的数字字母组合。

注: open_bank_codeopen_bank 两个参数必传一个,建议使用 open_bank_code ,若都传参则优先使用 open_bank_code 读取规则。

返回

返回一个 batch transfer 对象或者一个错误,详见 错误

定义

POST https://api.pingxx.com/v1/batch_transfers

请求示例

curl https://api.pingxx.com/v1/batch_transfers \
-H "Content-Type: application/json; charset=utf-8" \
-H "Pingplusplus-Signature: SIGNATURE" \
-H "Pingplusplus-Request-Timestamp: 1476067085" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d '{
    "amount": 8000,
    "app": "app_ribgW1n2SOqcPxn1",
    "batch_no": "2016101010380007",
    "channel": "alipay",
    "description": "付款说明",
    "recipients": [
        {
            "account": "account01@alipay.com",
            "amount": 5000,
            "name": "张三"
        },
        {
            "account": "account02@alipay.com",
            "amount": 3000,
            "name": "李四"
        }
    ],
    "type": "b2c"
}'

返回示例

{
  "id": "181610101014367590",
  "object": "batch_transfer",
  "app": "app_ribgW1n2SOqcPxn1",
  "amount": 8000,
  "batch_no": "2016101010380007",
  "channel": "alipay",
  "currency": "cny",
  "created": 1476067087,
  "description": "付款说明",
  "extra": {},
  "failure_msg": null,
  "fee": 0,
  "livemode": true,
  "metadata": {},
  "recipients": [
      {
          "account": "account01@alipay.com",
          "amount": 5000,
          "name": "张三",
          "transfer": "tr_jHWfvDnTKG0SiPmbfPbHW1eH",
          "status": "pending"
      },
      {
          "account": "account02@alipay.com",
          "amount": 3000,
          "name": "李四",
          "transfer": "tr_8u1yPK1eHWv9D08OePzDe1CK",
          "status": "pending"
      }
  ],
  "status": "pending",
  "time_succeeded": null,
  "type": "b2c"
}

更新批量企业付款(银行卡) Batch Transfer 对象

更新(取消)一个 batch transfer 对象来取消这笔批量企业付款到银行卡。

请求参数
status required 只支持 "canceled"。

返回

返回一个取消状态的 batch transfer 对象或者一个错误,详见 错误

定义

PUT https://api.pingxx.com/v1/batch_transfers/{BATCH_TRANSFER_ID}

请求示例

curl https://api.pingxx.com/v1/batch_transfers/181610101014367590 \
-H "Content-Type: application/json; charset=utf-8" \
-H "Pingplusplus-Signature: SIGNATURE" \
-H "Pingplusplus-Request-Timestamp: 1476067085" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d '{
    "status": "canceled"
}'

返回示例

{
    "id": "181610101014367590",
    "object": "batch_transfer",
    "app": "app_ribgW1n2SOqcPxn1",
    "amount": 8000,
    "batch_no": "2016101010380007",
    "channel": "unionpay",
    "currency": "cny",
    "created": 1476067087,
    "description": "付款说明",
    "extra": {},
    "failure_msg": null,
    "fee": 0,
    "livemode": true,
    "metadata": {},
    "recipients": [
        {
            "account": "3210120312031200",
            "amount": 5000,
            "name": "张三",
            "open_bank": "招商银行",
            "open_bank_code": "0308",
            "transfer": "tr_jHWfvDnTKG0SiPmbfPbHW1eH",
            "status": "canceled"
        },
        {
            "account": "321012031212031200",
            "amount": 3000,
            "name": "李四",
            "open_bank": "招商银行",
            "open_bank_code": "0308",
            "transfer": "tr_8u1yPK1eHWv9D08OePzDe1CK",
            "status": "canceled"
        }
    ],
    "status": "canceled",
    "time_succeeded": null,
    "type": "b2c"
}

查询 Batch Transfer 对象

你可以使用 batch_transfer_id 来查询对应的 batch transfer 对象信息。

请求参数
id string 批量企业付款对象 id ,由 Ping++ 生成。

返回

返回一个 batch transfer 对象或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/batch_transfers/{BATCH_TRANSFER_ID}

请求示例

curl https://api.pingxx.com/v1/batch_transfers/181610101014367590 \
-H "Pingplusplus-Signature: SIGNATURE" \
-H "Pingplusplus-Request-Timestamp: 1476067095" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
    "id": "1818282929292221323",
    "object": "batch_transfer",
    "app": "app_ribgW1n2SOqcPxn1",
    "amount": 8000,
    "batch_no": "1231231231",
    "channel": "alipay",
    "currency": "cny",
    "created": 1111111,
    "description": "付款说明",
    "extra": {},
    "failure_msg": null,
    "fee": 100,
    "livemode": true,
    "metadata": {},
    "recipients": [
        {
            "account": "account01@alipay.com",
            "amount": 5000,
            "name": "张三",
            "transfer": "tr_jHWfvDnTKG0SiPmbfPbHW1eH",
            "status": "pending"
        },
        {
            "account": "account02@alipay.com",
            "amount": 3000,
            "name": "李四",
            "transfer": "tr_8u1yPK1eHWv9D08OePzDe1CK",
            "status": "pending"
        }
    ],
    "status": "pending",
    "time_succeeded": 123123123,
    "type": "b2c"
}

查询 Batch Transfer 对象列表

你可以使用调用该接口来查询对应的 batch transfer 对象列表信息。

请求参数
page optional int 页码,取值范围:1~1000000000;默认值为"1"。
per_page optional int 每页数量,取值范围:1~100;默认值为"10"。
created [ gt ] optional int 创建时间大于该值。
created [ gte ] optional int 创建时间大于或等于该值。
created [ lt ] optional int 创建时间小于该值。
created [ lte ] optional int 创建时间小于或等于该值。
app required 批量企业付款对应的 app 对象 ID,查看 如何获取App ID

返回

返回一个 batch transfer 对象列表或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/batch_transfers?app={app_id}

请求示例

curl https://api.pingxx.com/v1/batch_transfers?app=app_ribgW1n2SOqcPxn1&per_page=3 \
-H "Pingplusplus-Signature: SIGNATURE" \
-H "Pingplusplus-Request-Timestamp: 1476067095" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
    "object": "list",
    "url": "/v1/batch_transfers",
    "has_more": true,
    "data": [
        {
            "id": "181610101014367590",
            "object": "batch_transfer",
            "app": "app_ribgW1n2SOqcPxn1",
            "amount": 8000,
            "batch_no": "2016101010380007",
            "channel": "alipay",
            "currency": "cny",
            "created": 1476067087,
            "description": "付款说明",
            "extra": {},
            "failure_msg": null,
            "fee": 0,
            "livemode": true,
            "metadata": {},
            "recipients": [
                {
                    "account": "account01@alipay.com",
                    "amount": 5000,
                    "name": "张三",
                    "transfer": "tr_jHWfvDnTKG0SiPmbfPbHW1eH",
                    "status": "pending"
                },
                {
                    "account": "account02@alipay.com",
                    "amount": 3000,
                    "name": "李四",
                    "transfer": "tr_8u1yPK1eHWv9D08OePzDe1CK",
                    "status": "pending"
                }
            ],
            "status": "pending",
            "time_succeeded": null,
            "type": "b2c"
        },
        {...},
        {...}
    ]
}

身份证银行卡信息认证接口

独立的第三方接口,根据用户的姓名、身份证号、银行卡号、手机号,鉴别其身份真伪。此接口按照调用次数累加计费,并且调用成功即产生费用(无论认证成功与否)。使用时请预先进行账户充值注意:此接口强制要求签名(Pingplusplus-Signature),需在管理平台上配置商户公钥,但无须开启。

属性
type string 身份证信息或者银行卡信息串,取值范围:"id_card"(身份证信息串);"bank_card"(银行卡信息串)。
app string 应用 ID, 如何获取App ID
result_code int 返回码,详情请参照API文档附录的 认证接口result_code说明
message string 描述信息,接口调用失败时为错误描述,成功时为 "SUCCESS" 。
paid boolean 是否已扣款,扣款为 true ,未扣款为 false
data map 验证数据,包含参数见下表。
data包含参数
id_name string 身份证姓名(1~16位);
id_number string 身份证号码(15位或18位);
card_number string 银行卡号(12~19位) 仅在 type 参数为 "bank_card" 的时候必需要传此参数;
phone_number string 手机号(11位) 仅在 type 参数为 "bank_card" 的时候可以选择是否传此参数,暂不支持178开头的手机号。

示例对象

{
   "type": "id_card",
   "app": "app_LibTW1n1SOq9Pin1",
   "result_code": 0,
   "message": "SUCCESS",
   "paid":true,
   "data": {
       "id_name": "张三",
       "id_number": "320291198811110000"
   }
}

请求认证接口

独立的第三方接口,请求该接口根据用户的姓名、身份证号、银行卡号、手机号,鉴别其身份真伪。

请求参数
type required 身份证信息或者银行卡信息串,取值范围: "id_card"(身份证信息串);"bank_card"(银行卡信息串)。
app required 应用 ID ,查看 如何获取App ID
data required 验证数据,包含参数见下表。
data包含参数
id_name required string 身份证姓名(1~16位)。
id_number required string 身份证号码(15位或18位)。
card_number required string 银行卡号(12~19位) 仅在 type 参数为 "bank_card" 的时候必须要传此参数。
phone_number optional,string 手机号(11位) 仅在 type 参数为 "bank_card" ,的时候可以选择是否传此参数,暂不支持178开头的手机号。

返回

请求成功,返回 result_code 字段为返回码,详情参照API文档附录的认证接口 result_code 说明;message 中是错误描述信息,仅在成功时返回 success ; paid 表示本次调用接口认证是否产生费用, paidtrue 则需要付费,false 不产生费用,或者返回一个错误,详见 错误

定义

POST https://api.pingxx.com/v1/identification

请求示例

curl https://api.pingxx.com/v1/identification \
-H "Pingplusplus-Signature: SIGNATURE" \
-H "Content-Type: application/json" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d '{
    "type": "bank_card",
    "app": "app_1Gqj58ynP0mHeX1q",
    "data": {
        "id_name": "张三",
        "id_number": "320291198811110000",
        "card_number": "6201111122223333"
    }
}'

返回示例

{
   "type": "bank_card",
   "app": "app_1Gqj58ynP0mHeX1q",
   "result_code": 3441,
   "message": "银行卡信息认证失败",
   "paid":true,
   "data": {
       "id_name": "张三",
       "id_number": "320291198811110000",
       "card_number": "6201111122223333"
   }
}

报关接口

目前只针对支付成功的订单进行报关,报关金额为订单金额,customs_code 是海关编号字段说明,trade_no 区别于 charge 中的 order_no ,两者不能相同。

属性
id string 报关对象 id
app string 应用 ID ,查看 如何获取App ID
channel string 支付使用的第三方支付渠道,取值范围:"alipay"(支付宝 APP 支付),"wx"(微信支付),"upacp"(银联),"applepay_upacp"(Apple Pay)。
trade_no string 商户报关订单号,8~20位。
customs_code string 海关编号,详情请参照 海关编号说明
amount int 报关金额,取值范围:1~1000000000。
charge string charge 对象 id
transport_amount int 订单物流金额,默认为0,当 is_splittrue 时,此参数无效。
is_split boolean 是否拆单,默认值为"false"。
sub_order_no string 商户子订单号,1~30位,当 is_splittrue 时此参数必填。
extra map 自定义参数,如果渠道为银联则需要额外参数 extra ,详情请参考下表的 extra 参数说明。
object string 值为 "customs" 。
created timestamp 创建时间,用 Unix 时间戳表示。
time_succeeded int 处理时间,用 Unix 时间戳表示。
status string 报关状态, pending : 处理中; succeeded : 成功; failed : 失败 。
failure_code string 错误码,详见 错误 中的错误码描述。
failure_msg string 错误信息描述。
transaction_no string 渠道报关流水号。
extra 参数
pay_account string 支付ID,1~60位,字母、数字和/或特殊符号字符。
certif_type string 证件类型,取值范围参考:"01":身份证;"02":军官证;"03":护照;"04":回乡证;"05":台胞证;"06":警官证 "07":士兵证; "99":其它证件。
customer_name string 姓名,1~20位,字母、数字和/或特殊符号字符。
certif_id string 证件号,1~30位,字母、数字和/或特殊符号字符。
tax_amount int 税费的金额。

示例对象

{
    "id": "14201607013878045463",
    "object": "customs",
    "app": "app_LibTW1n1SOq9Pin1",
    "charge_id": "ch_L8qn10mLmr1GS8e5OODmHaL4",
    "channel": "upacp",
    "trade_no": "15112496832609",
    "customs_code": "GUANGZHOU",
    "amount": 100,
    "status": "pending",
    "created": 1410834527,
    "time_succeeded": 1410838127,
    "failure_code": null,
    "failure_msg": null,
    "transaction_no": "xxxxxxxx",
    "extra":{}
}

请求报关接口

请求报关接口,目前只针对支付成功的订单 charge id 进行报关请求,报关金额为订单金额,目前渠道限于 alipay, wx ,upacpapplepay_upacp注意:此接口强制要求签名(Pingplusplus-Signature),需在管理平台上配置商户公钥,但无须开启。

请求参数
app [ id ] required 应用 ID ,查看 如何获取App ID
channel required 支付使用的第三方支付渠道,取值范围:"alipay"(支付宝 APP 支付);"wx"(微信支付)和"upacp"(银联),"applepay_upacp"(Apple Pay)。
trade_no required 商户报关订单号,8~20位。
customs_code required 海关编号,详情请参照 海关编号说明
amount required 报关金额,取值范围:1~1000000000。
charge required charge 对象 id
transport_amount optional 订单物流金额,默认为0,当 is_splittrue 时,此参数无效。
is_split optional 是否拆单,默认值为"false"。
sub_order_no optional 商户子订单号,1~30位,当 is_splittrue 时此参数必填。
extra optional 自定义参数,如果渠道为银联或者 Apple Pay 则需要额外参数 extra ,详情请参考下表的 extra 参数说明。
extra 参数
pay_account required 支付ID,1~60位,字母、数字和/或特殊符号字符。
certif_type required 证件类型,取值范围参考:"01":身份证;"02":军官证;"03":护照;"04":回乡证;"05":台胞证;"06":警官证 "07":士兵证; "99":其它证件。
customer_name required 姓名,1~20位,字母、数字和/或特殊符号字符。
certif_id required 证件号,1~30位,字母、数字和/或特殊符号字符。
tax_amount optional 税费的金额。

返回

返回一个 customs 报关对象,或者返回一个错误,详见 错误

定义

  POST https://api.pingxx.com/v1/customs

请求示例

curl https://api.pingxx.com/v1/customs \
-H "Pingplusplus-Signature: SIGNATURE" \
-H "Content-Type: application/json" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \
-d '{
    "app":"App ID",
    "charge":"Charge ID",
    "channel": "upacp",
    "trade_no": "15112496832609",
    "customs_code":"GUANGZHOU",
    "amount":100,
    "transport_amount": 10,
    "is_split": true,
    "sub_order_no": "123456",
    "extra":{
        "pay_account": "1234567890",
        "certif_type": "02",
        "customer_name": "A Name",
        "certif_id": "ID Card No",
        "tax_amount":"10"
    }
}'

返回示例

{
    "id": "14201607013878045463",
    "object": "customs",
    "app": "app_LibTW1n1SOq9Pin1",
    "charge_id": "ch_L8qn10mLmr1GS8e5OODmHaL4",
    "channel": "alipay",
    "trade_no": "15112496832609",
    "customs_code": "GUANGZHOU",
    "amount": 100,
    "status": "succeeded",
    "created": 1410834527,
    "time_succeeded": 1410838127,
    "failure_code": null,
    "failure_msg": null,
    "transaction_no": "201609061456194799218",
    "extra":{}
}

查询报关接口

通过 customs 对象的 id 查询一个已创建的 customs 对象。通过查询接口确认报关的状态。

请求参数
id required 报关对象 id

返回

返回一个已存在的 customs 对象或者一个错误,详见 错误

定义

  GET
https://api.pingxx.com/v1/customs/{CUSTOMS_ID}

请求示例

curl https://api.pingxx.com/v1/customs/14201607013878045463 \
-H "Pingplusplus-Signature: SIGNATURE" \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC: \

返回示例

报关成功:
{
    "id": "14201607013878045463",
    "object": "customs",
    "app": "app_LibTW1n1SOq9Pin1",
    "charge_id": "ch_L8qn10mLmr1GS8e5OODmHaL4",
    "channel": "alipay",
    "trade_no": "15112496832609",
    "customs_code": "GUANGZHOU",
    "amount": 100,
    "status": "succeeded",
    "created": 1410834527,
    "time_succeeded": 1410838127,
    "failure_code": null,
    "failure_msg": null,
    "transaction_no": "201609061456194799218",
    "extra":{}
}
报关失败:
{
    "id": "14201607013878045463",
    "object": "customs",
    "app": "app_LibTW1n1SOq9Pin1",
    "charge_id": "ch_L8qn10mLmr1GS8e5OODmHaL4",
    "channel": "alipay",
    "trade_no": "15112496832609",
    "customs_code": "GUANGZHOU",
    "amount": 100,
    "status": "failed",
    "created": 1410834527,
    "failure_msg": "报关失败",
    "transaction_no": null,
    "extra":{}
}

Events 事件

为了便于客户系统或者第三方系统处理客户的交易信息,Ping++ 系统支持 Webhooks 功能,可以按照客户要求把特定的事件结果推送到指定的地址以便于客户做后续处理。目前支持的事件包括周期性交易汇总信息、支付结果、红包结果、企业转账结果和退款结果。 以下是关于接收 Webhooks 通知的说明:

  • Webhooks 是 Ping++ 和你服务器间的交互,相比页面跳转同步通知可以在页面上显示出来,这种交互方式是不可见的。
  • Webhooks 通知是以 POST 形式发送的 JSON ,放在请求的 body 里,内容是 Event 对象。
  • 你需要监听并接收 Webhooks 通知,接收到 Webhooks 后需要返回服务器状态码 2xx 表示接收成功,否则请返回状态码 500。
  • 若返回的服务器状态码不是 2xx,Ping++ 服务器会在 25 小时内向你的服务器不断重发通知,最多 8 次。Webhooks 首次是即时推送,重试通知时间间隔为 2min、10min、10min、1h、2h、6h、15h,直到你正确回复状态 2xx 或者超过最大重发次数,Ping++ 将不再发送。

其中 Event 对象属性定义如下。

属性
id string 事件对象 id ,由 Ping++ 生成,28 位长度字符串。
object string 值为 "event"。
livemode boolean 事件是否发生在生产环境。
created timestamp 事件发生的时间。
pending_webhooks int 推送未成功的 webhooks 数量。
type string 事件类型,详见 事件类型
request string API Request ID。值 "null" 表示该事件不是由 API 请求触发的。
data hash 绑定在事件上的数据对象,具体参考下表 data 参数说明。
data 参数
object hash
previous_attributes hash 绑定对象属性变化之前的值。只有 *.updated 事件有这个属性。

示例对象

{
   "id": "evt_la06CoQAiPojSgJKe5gt3nwq",
   "created": 1427555016,
   "livemode": false,
   "type": "summary.weekly.available",
   "data": {
       "object": {
           "app_id": "app_b94eHsO1avrDyL8S",
           "object": "app_weekly_summary",
           "app_display_name": "App Name",
           "created": 1425830460,
           "summary_from": 1425225600,
           "summary_to": 1425830399,
           "charges_amount": 2000,
           "charges_count" : 200
       }
   },
   "object": "event",
   "pending_webhooks": 0,
   "request": null
}

Event 事件类型

每个事件类型的作用域都是单个应用,目前支持的事件包括:

事件类型
summary.daily.available 上一天 0 点到 23 点 59 分 59 秒的交易金额和交易量统计,在每日 04:00 点左右触发。
summary.weekly.available 上周一 0 点至上周日 23 点 59 分 59 秒的交易金额和交易量统计,在每周一 04:00 点左右触发。
summary.monthly.available 上月一日 0 点至上月末 23 点 59 分 59 秒的交易金额和交易量统计,在每月一日 04:00 点左右触发。
charge.succeeded 支付对象,支付成功时触发。
refund.succeeded 退款对象,退款成功时触发。
transfer.succeeded 企业支付对象,支付成功时触发。
red_envelope.sent 红包对象,红包发送成功时触发。
red_envelope.received 红包对象,红包接收成功时触发。
batch_transfer.succeeded 批量企业付款对象,批量企业付款成功时触发。
customs.succeeded 报关对象,报关成功时触发。
batch_refund.succeeded 批量退款对象,批量退款成功时触发。

右边是具体的 json 字符串展示针对 App 对象的各交易汇总事件类型的数据格式。 当事件类型为 summary.daily.availablesummary.weekly.availablesummary.monthly.available 的时候, data 中的 objectApp 对象。

App 日/周/月统计对象主要字段定义如下:
app_id 应用 ID
object 对象类型。
app_display_name 应用名称。
created 创建时间(timestamp)。
summary_from 统计起始时间(timestamp)。
summary_to 统计终止时间(timestamp)。
charges_amount 交易金额(单位:分)。
charges_count 交易量(笔)。

当事件类型为 charge.succeededrefund.succeededtransfer.succeededcustomsbatch_transfer.succeededbatch_refund.succeededred_envelope.sentred_envelope.received 的时候,data 中的 object 分别为 chargerefundtransfercustomsbatch transferbatch refundred_envelope 对象。

示例对象

事件类型为 summary.daily.available :
{
    "id": "evt_ugB6x3K43D16wXCcqbplWAJo",
    "created": 1427555016,
    "livemode": false,
    "type": "summary.daily.available",
    "data": {
        "object": {
            "app_id": "app_b94eHsO1avrDyL8S",
            "object": "app_daily_summary",
            "app_display_name": "App Name",
            "created": 1425139260,
            "summary_from": 1425052800,
            "summary_to": 1425139199,
            "charges_amount": 1000,
            "charges_count" : 100
        }
    },
    "object": "event",
    "pending_webhooks": 0,
    "request": null
}
事件类型为 summary.weekly.available :
{
    "id": "evt_la06CoQAiPojSgJKe5gt3nwq",
    "created": 1427555016,
    "livemode": false,
    "type": "summary.weekly.available",
    "data": {
        "object": {
            "app_id": "app_b94eHsO1avrDyL8S",
            "object": "app_weekly_summary",
            "app_display_name": "App Name",
            "created": 1425830460,
            "summary_from": 1425225600,
            "summary_to": 1425830399,
            "charges_amount": 2000,
            "charges_count" : 200
        }
    },
    "object": "event",
    "pending_webhooks": 0,
    "request": null
}
事件类型为 summary.monthly.available :
{
    "id": "evt_hpyVxo7LNvTqS93kpJgfWAFR",
    "created": 1427555016,
    "livemode": false,
    "type": "summary.monthly.available",
    "data": {
        "object": {
            "app_id": "app_b94eHsO1avrDyL8S",
            "object": "app_monthly_summary",
            "app_display_name": "App Name",
            "created": 1425139260,
            "summary_from": 1422720000,
            "summary_to": 1425139199,
            "charges_amount": 3000,
            "charges_count" : 300
        }
    },
    "object": "event",
    "pending_webhooks": 0,
    "request": null
}
事件类型为 charge.succeeded :
{
    "id": "evt_ugB6x3K43D16wXCcqbplWAJo",
    "created": 1427555101,
    "livemode": true,
    "type": "charge.succeeded",
    "data": {
        "object": {
            "id": "ch_Xsr7u35O3m1Gw4ed2ODmi4Lw",
            "object": "charge",
            "created": 1427555076,
            "livemode": true,
            "paid": true,
            "refunded": false,
            "app": "app_1Gqj58ynP0mHeX1q",
            "channel": "upacp",
            "order_no": "123456789",
            "client_ip": "127.0.0.1",
            "amount": 100,
            "amount_settle": 100,
            "currency": "cny",
            "subject": "Your Subject",
            "body": "Your Body",
            "extra": {},
            "time_paid": 1427555101,
            "time_expire": 1427641476,
            "time_settle": null,
            "transaction_no": "1224524301201505066067849274",
            "refunds": {
                "object": "list",
                "url": "/v1/charges/ch_L8qn10mLmr1GS8e5OODmHaL4/refunds",
                "has_more": false,
                "data": []
            },
            "amount_refunded": 0,
            "failure_code": null,
            "failure_msg": null,
            "metadata": {},
            "credential": {},
            "description": null
        }
    },
    "object": "event",
    "pending_webhooks": 0,
    "request": "iar_qH4y1KbTy5eLGm1uHSTS00s"
}
事件类型为 refund.succeeded :
{
    "id": "evt_gJKelawq06CiPojS5gt3noQA",
    "created": 1427555348,
    "livemode": true,
    "type": "refund.succeeded",
    "data": {
        "object": {
            "id": "re_SG0mnjTD3jAHimbvDKjnXLC9",
            "object": "refund",
            "order_no": "SG0mnjTD3jAHimbvDKjnXLC9",
            "amount": 100,
            "created": 1427555346,
            "succeed": true,
            "status": "succeeded",
            "time_succeed": 1427555348,
            "description": "Refund Description",
            "failure_code": null,
            "failure_msg": null,
            "metadata": {},
            "charge": "ch_Xsr7u35O3m1Gw4ed2ODmi4Lw"
        }
    },
    "object": "event",
    "pending_webhooks": 0,
    "request": "iar_Ca1Oe10OqTSOPOmzX9Hi1a5"
}
事件类型为 transfer.succeeded :
{
    "id": "evt_NMO13SJt1jrOaxRMhXC4wj0k",
    "created": 1435752329,
    "type": "transfer.succeeded",
    "livemode": true,
    "object": "event",
    "data": {
        "object": {
            "id": "tr_fXTq1OHufjHOvbDiPG0qTSiP",
            "object": "transfer",
            "type": "b2c",
            "created": 1435752318,
            "time_transferred": 1435752318,
            "livemode": true,
            "status": "paid",
            "app": "app_1234567890abcDEF",
            "channel": "wx_pub",
            "order_no": "123456789",
            "amount": 1,
            "amount_settle": 1,
            "currency": "cny",
            "recipient": "Openid",
            "description": "Your Description",
            "transaction_no": "1010018301201507010307923793",
            "extra": {
                "user_name": "User Name",
                "force_check": true
            }
        }
    },
    "pending_webhooks": 0,
    "request": "iar_TqvPiDH8SGeHm5GaTKbLuDWL"
}
事件类型为 red_envelope.sent :
{
    "id": "evt_5BpbV0tYK4ySvodDG2RT6XRq",
    "created": 1436855491,
    "type": "red_envelope.sent",
    "livemode": true,
    "object": "event",
    "data": {
        "object": {
            "id": "red_z1O8iLmXXXX5uPqLiDzLCavP",
            "object": "red_envelope",
            "created": 1436855474,
            "received": null,
            "refunded": null,
            "livemode": true,
            "status": "sent",
            "app": "app_1234567890abcDEF",
            "channel": "wx_pub",
            "order_no": "123456789",
            "transaction_no": "0010037269201507140154722852",
            "amount": 100,
            "amount_settle": 100,
            "currency": "cny",
            "recipient": "Openid",
            "subject": "Your Subject",
            "body": "Your Body",
            "description": "Your Description",
            "extra": {
                "nick_name": "Nick Name",
                "send_name": "Send Name"
            }
        }
    },
    "pending_webhooks": 0,
    "request": "iar_zjLGC8zfLOS8WPS0WLi14ynD"
}
事件类型为 red_envelope.received :
{
    "id": "evt_hMGV2eR15fMupHUdDYibhLxe",
    "object": "event",
    "type": "red_envelope.received",
    "livemode": true,
    "created": 1436753800,
    "data": {
        "object": {
            "id": "red_4qLGO84GaXHOWTSO80mLO8i9",
            "object": "red_envelope",
            "created": 1436753573,
            "received": null,
            "refunded": null,
            "livemode": true,
            "status": "received",
            "app": "app_1234567890abcDEF",
            "channel": "wx_pub",
            "order_no": "123456789",
            "transaction_no": "0010037269201507130153706663",
            "amount": 100,
            "amount_settle": 100,
            "currency": "cny",
            "recipient": "Openid",
            "subject": "Your Subject",
            "body": "Your Body",
            "description": "Your Description",
            "extra": {
                "nick_name": "Nick Name",
                "send_name": "Send Name"
            }
        }
    },
    "pending_webhooks": 0,
    "request": "iar_jf1iT0fT0a18v1u5qDvb1uDS"
}
 事件类型为 batch_transfer.succeeded :
{
    "id": "evt_ca16CoQsiP2ja1JKs5gx3j4q",
    "object": "event",
    "created": 1475924802,
    "livemode": false,
    "data": {
        "object": {
            "id": "181610101014367590",
            "object": "batch_transfer",
            "app": "app_ribgW1n2SOqcPxn1",
            "amount": 8000,
            "batch_no": "2016101010380007",
            "channel": "alipay",
            "currency": "cny",
            "created": 1476067087,
            "description": "付款说明",
            "extra": {},
            "failure_msg": null,
            "fee": 200,
            "livemode": true,
            "metadata": {},
            "recipients": [
                {
                    "account": "account01@alipay.com",
                    "amount": 5000,
                    "name": "张三",
                    "transfer": "tr_jHWfvDnTKG0SiPmbfPbHW1eH",
                    "status": "paid"
                },
                {
                    "account": "account02@alipay.com",
                    "amount": 3000,
                    "name": "李四",
                    "transfer": "tr_8u1yPK1eHWv9D08OePzDe1CK",
                    "status": "paid"
                }
            ],
            "status": "succeeded",
            "time_succeeded": 1476067147,
            "type": "b2c"
        }
    },
    "pending_webhooks": 0,
    "request": "iar_1KeD0GHi58yLfDyHK4HCOyDS",
    "type": "batch_transfer.succeeded"
}
 事件类型为 customs.succeeded :
 {
    "id": "evt_14201611031154010770",
    "created": 1478145460,
    "livemode": true,
    "type": "customs.succeeded",
    "data": {
        "object": {
        "amount": 999999,
        "app_id": "app_LibTW1n1xxxxxxxx",
        "channel": "upacp",
        "charge_id": "ch_XLGWTCnn5iPCWz0LK4yjfbv1",
        "created": 1478145241,
        "customs_code": "GUANGZHOU",
            "extra": {
                "certif_id": "41282119910910xxxx",
                "certif_type": "01",
                "customer_name": "张小明",
                "pay_account": "张小明",
                "tax_amount": "101"
              },
        "id": "14201611031154019772",
        "is_split": true,
        "object": "customs",
        "status": "succeeded",
        "sub_order_no": "P327932738",
        "time_succeeded": 1478145460,
        "trade_no": "37878347380",
        "transaction_no": "12345678",
        "transport_amount": 0
        }
    },
        "object": "event",
        "request": "",
        "pending_webhooks": 0
}
 事件类型为 batch_refund.succeeded :
 {
  "id": "evt_401170207171021000437700",
  "created": 1486458621,
  "livemode": true,
  "type": "batch_refund.succeeded",
  "data": {
      "object": {
      "app": "app_LibTW1n1SOq9Pin1",
      "batch_no": "467223445889520",
      "charges": [
        {
          "charge": "ch_Pi504CajrLyHLSCOOKpyXnX5",
          "status": "succeeded"
        },
        {
          "charge": "ch_CWDKSKbvHq981TSOO8uk0Se5",
          "status": "succeeded"
        },
        {
          "charge": "ch_9ejPy94qj519bTejT8u1X9GC",
          "status": "succeeded"
        }
      ],
      "created": 1486458591,
      "description": "Batch refund description.",
      "id": "1511702071709512304",
      "livemode": true,
      "metadata": {},
      "object": "batch_refund",
      "refund_url": null,
      "refunds": {
        "data": [
          {
            "amount": 5,
            "charge": "ch_CWDKSKbvHq983TSOO8u00Se5",
            "charge_order_no": "T170207050849Sh",
            "created": 1486458594,
            "description": "Batch refund description.",
            "failure_code": null,
            "failure_msg": null,
            "id": "re_rLWHWHKajPu9urPqvPmnrbrP",
            "metadata": {},
            "object": "refund",
            "order_no": "rLWHWHKajPu9urPqvPmnrbrP",
            "status": "succeeded",
            "succeed": true,
            "time_succeed": 1486458602,
            "transaction_no": "2000000001001702070816030296"
          },
          {
            "amount": 5,
            "charge": "ch_9ejPy94qj5u9bTej08uzX9GC",
            "charge_order_no": "T170207050840eA",
            "created": 1486458595,
            "description": "Batch refund description.",
            "failure_code": null,
            "failure_msg": null,
            "id": "re_rbTGi11yDKqP0ujnL4mnPinP",
            "metadata": {},
            "object": "refund",
            "order_no": "rbTGi11yDKqP0ujnL4mnPinP",
            "status": "succeeded",
            "succeed": true,
            "time_succeed": 1486458604,
            "transaction_no": "2700002001201700370816029893"
          },
          {
            "amount": 5,
            "charge": "ch_Pi504CajrLyHLSCOO0DyXnX5",
            "charge_order_no": "T170207050857df",
            "created": 1486458596,
            "description": "Batch refund description.",
            "failure_code": null,
            "failure_msg": null,
            "id": "re_n9SCCCy9WL00inz5WPazX94S",
            "metadata": {},
            "object": "refund",
            "order_no": "n9SCCCy9WL00inz5WPazX94S",
            "status": "succeeded",
            "succeed": true,
            "time_succeed": 1486458604,
            "transaction_no": "2000002001201702071815736474"
          }
        ],
        "has_more": false,
        "object": "list",
        "url": null
      },
      "status": "succeeded",
      "time_succeeded": 1486458621
    }
  },
  "object": "event",
  "request": "iar_rDmfnTyb5ab1z61SOO9qPSKS",
  "pending_webhooks": 0
}

查询 Event 对象

通过 event 对象的 id 查询一个已创建的 event 对象。

请求参数
id required 事件 id

返回

返回一个已存在的 event 对象或者一个错误,详见 错误

定义

GET https://api.pingxx.com/v1/events/{EVENT_ID}

请求示例

curl https://api.pingxx.com/v1/events/evt_lqVSy5gbL0A68pS8YKvJzdWZ \
-u sk_test_ibbTe5jLGCi5rzfH4OqPW9KC:

返回示例

{
    "id": "evt_lqVSy5gbL0A68pS8YKvJzdWZ",
    "created": 1430915345,
    "livemode": true,
    "object": "event",
    "data": {
        "object": {
            "id": "ch_ebT0y9iPGCKCL0aPy9X1WLmT",
            "object": "charge",
            "created": 1430915284,
            "livemode": true,
            "paid": true,
            "refunded": false,
            "app": "app_Xz9iXLn9ebX1SOe1",
            "channel": "wx",
            "order_no": "as223af2ds",
            "client_ip": "127.0.0.1",
            "amount": 100,
            "amount_settle": 100,
            "currency": "cny",
            "subject": "Your Subject",
            "body": "Your Body",
            "extra": [],
            "time_paid": 1430915344,
            "time_expire": 1431001684,
            "time_settle": null,
            "transaction_no": "1001680021201505060112980000",
            "refunds": {
                "object": "list",
                "url": "/v1/charges/ch_ebT0y9iPGCKCL0aPy9X1WLmT/refunds",
                "has_more": false,
                "data": []
            },
            "amount_refunded": 0,
            "failure_code": null,
            "failure_msg": null,
            "metadata": [],
            "credential": [],
            "description": null
        }
    },
    "pending_webhooks": 0,
    "type": "charge.succeeded",
    "request": "iar_0K8m90CCeDK8PabXD00yfTq"
}

支付渠道属性值

下面为支付渠道 channel 属性值和其对应的支付渠道名称。

channel属性值 支付渠道名称
alipay 支付宝 APP 支付
alipay_wap 支付宝手机网页支付
alipay_pc_direct 支付宝电脑网站支付
alipay_qr 支付宝当面付,即支付宝扫码支付
bfb 百度钱包移动快捷支付,即百度钱包 APP 支付
bfb_wap 百度钱包手机网页支付
cp_b2b 银联企业网银支付,即 B2B 银联 PC 网页支付
upacp 银联支付,即银联 APP 支付(2015 年 1 月 1 日后的银联新商户使用。若有疑问,请与 Ping++ 或者相关的收单行联系)
upacp_wap 银联手机网页支付(2015 年 1 月 1 日后的银联新商户使用。若有疑问,请与 Ping++ 或者相关的收单行联系)
upacp_pc 银联网关支付,即银联 PC 网页支付
wx 微信 APP 支付
wx_pub 微信公众号支付
wx_pub_qr 微信公众号扫码支付
wx_wap 微信 WAP 支付(此渠道仅针对特定客户开放)
wx_lite 微信小程序支付
yeepay_wap 易宝手机网页支付
jdpay_wap 京东手机网页支付
fqlpay_wap 分期乐支付
qgbc_wap 量化派支付
cmb_wallet 招行一网通
applepay_upacp Apple Pay
mmdpay_wap 么么贷
qpay QQ 钱包支付

支付渠道 extra 参数说明

特定渠道发起交易时需要的额外参数,以及部分渠道支付成功返回的额外参数。bfbcp_b2b 渠道不需要 extra 参数。

alipay 支付宝 APP 支付

extra 参数 说明
extern_token optional, string 开放平台返回的包含账户信息的 token(授权令牌,商户在一定时间内对支付宝某些服务的访问权限)。通过授权登录后获取的 alipay_open_id ,作为该参数的 value ,登录授权账户即会为支付账户,32 位字符串。
hb_fq_num optional,int 仅适用于支付宝 2.0 接口,使用花呗分期要进行的分期数,必须根据支付宝签约的分期数填写,可选值 3、6、12 (支付宝 2.0 参数传入有效,hb_fq_num 和 hb_fq_seller_percent 必须同时传入有效)。
hb_fq_seller_percent optional,int 仅适用于支付宝 2.0 接口,使用花呗分期需要卖家承担的手续费比例的百分值,传入100代表100%,可选值0、100(支付宝2.0参数传入有效,hb_fq_num和hb_fq_seller_percent必须同时传入有效)。
disable_pay_channels optional,string 仅适用于支付宝 2.0 接口,禁用支付渠道,用户不可用指定渠道支付,当有多个付款渠道时用,分隔(如moneyFund,credit_group),支付渠道相关值参考下方 disable_pay_channels 参数说明。
sys_service_provider_id optional,string 仅适用于支付宝 2.0 接口,系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的 PID。
rn_check optional,string 适用于支付宝 1.0,是否发起实名校验,T 代表发起实名校验;F 代表不发起实名校验。
need_buyer_real_named optional,string 适用于支付宝 2.0 接口,是否发起实名校验,T 代表发起实名校验;F 代表不发起实名校验。
buyer_account response-only,string 支付完成将额外返回付款用户的支付宝账号。
fund_bill_list response-only,array 适用于支付宝 2.0 接口,交易支付使用的资金渠道,详见下方的 fund_bill_list 渠道透传返回。
buyer_user_id response-only,string 适用于支付宝 2.0 接口,买家在支付宝的用户 id 。
voucher_detail_list response-only,array 适用于支付宝 2.0 接口,本交易支付时使用的所有优惠券信息,详见下方的 voucher_detail_list 渠道透传返回。

alipay_wap 支付宝手机网页支付

extra 参数 说明
success_url required string 支付成功的回调地址。
cancel_url optional, string 支付取消的回调地址, app_pay 为 true 时,该字段无效。
new_version optional,boolean 2016 年 6 月 16 日之前登录 Ping++ 管理平台填写支付宝手机网站的渠道参数的旧接口商户,需要更新接口时设置此参数值为true,6月16号后接入的新接口商户不需要设置该参数。
app_pay optional,boolean 是否使用支付宝客户端支付,该参数为 true 时,调用客户端支付。
need_buyer_real_named optional,string 适用于支付宝 2.0 接口,是否发起实名校验,T 代表发起实名校验;F 代表不发起实名校验。
extern_token optional, string 开放平台返回的包含账户信息的 token(授权令牌,商户在一定时间内对支付宝某些服务的访问权限)。通过授权登录后获取的 alipay_open_id ,作为该参数的 value ,登录授权账户即会为支付账户,32 位字符串。
hb_fq_num optional,int 仅适用于支付宝 2.0 接口,使用花呗分期要进行的分期数,必须根据支付宝签约的分期数填写,可选值 3、6、12 (支付宝 .0 参数传入有效,hb_fq_num 和hb_fq_seller_percent 必须同时传入有效)。
hb_fq_seller_percent optional,int 仅适用于支付宝 2.0 接口,使用花呗分期需要卖家承担的手续费比例的百分值,传入100代表100%,可选值0、100(支付宝2.0参数传入有效,hb_fq_num 和 hb_fq_seller_percent必须同时传入有效)。
disable_pay_channels optional,string 仅适用于支付宝 2.0 接口,禁用支付渠道,用户不可用指定渠道支付,当有多个付款渠道时用,分隔(如 moneyFund,credit_group),支付渠道相关值参考下方disable_pay_channels 参数说明。
sys_service_provider_id optional,string 仅适用于支付宝 2.0 接口,系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的 PID。
buyer_account response-only, string 支付完成将额外返回付款用户的支付宝账号。
fund_bill_list response-only,array 适用于支付宝 2.0 接口,交易支付使用的资金渠道,详见下方的 fund_bill_list 渠道透传返回。
buyer_user_id response-only,string 适用于支付宝 2.0 接口,买家在支付宝的用户 id 。
voucher_detail_list response-only,array 适用于支付宝 2.0 接口,本交易支付时使用的所有优惠券信息,详见下方的 voucher_detail_list 渠道透传返回。

alipay_qr 支付宝扫码支付

extra 参数 说明
hb_fq_num optional,int 仅适用于支付宝 2.0 接口,使用花呗分期要进行的分期数,必须根据支付宝签约的分期数填写,可选值3、6、12 (支付宝 2.0 参数传入有效,hb_fq_num 和 hb_fq_seller_percent 必须同时传入有效)。
hb_fq_seller_percent optional,int 仅适用于支付宝 2.0 接口,使用花呗分期需要卖家承担的手续费比例的百分值,传入100代表100%,可选值0、100(支付宝 2.0 参数传入有效,hb_fq_num 和 hb_fq_seller_percent必须同时传入有效)。
sys_service_provider_id optional,string 仅适用于支付宝 2.0 接口,系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的 PID。
buyer_account response-only,string 支付完成将额外返回付款用户的支付宝账号。
fund_bill_list response-only,array 适用于支付宝 2.0 接口,交易支付使用的资金渠道,详见下方的 fund_bill_list 渠道透传返回。
buyer_user_id response-only,string 适用于支付宝 2.0 接口,买家在支付宝的用户 id 。
voucher_detail_list response-only,array 适用于支付宝 2.0 接口,本交易支付时使用的所有优惠券信息,详见下方的 voucher_detail_list 渠道透传返回。

fund_bill_list 渠道返回参数

extra 参数 说明
fund_channel response-only,string 仅适用于支付宝 2.0 接口,交易使用的资金渠道,详见 alipay 支付渠道列表。
amount response-only,string 仅适用于支付宝 2.0 接口,该支付工具类型所使用的金额。
real_amount response-only,string 仅适用于支付宝 2.0 接口,渠道实际付款金额。

alipay 支付渠道列表

extra 参数 说明
COUPON 支付宝红包
ALIPAYACCOUNT 支付宝账户
POINT 集分宝
DISCOUNT 折扣券
PCARD 预付卡
MCARD 商家储值卡
MDISCOUNT 商户优惠券
MCOUPON 商户红包
PCREDIT 蚂蚁花呗

disable_pay_channels 参数说明

extra 参数 说明
balance 余额
moneyFund 余额宝
coupon 红包
pcredit 花呗
pcreditpayInstallment 花呗分期
creditCard 信用卡
creditCardExpress 信用卡快捷
creditCardCartoon 信用卡卡通
credit_group 信用支付类型(包含信用卡卡通、信用卡快捷、花呗、花呗分期)
debitCardExpress 借记卡快捷
mcard 商户预存卡
pcard 个人预存卡
promotion 优惠(包含实时优惠+商户优惠)
voucher 营销券
point 积分
mdiscount 商户优惠
bankPay 网银

voucher_detail_list 渠道返回参数

extra 参数 说明
id response-only,string 仅适用于支付宝 2.0 接口,券 id。
name response-only,string 仅适用于支付宝 2.0 接口,券名称。
type response-only,string 仅适用于支付宝 2.0 接口,当前有三种类型: ALIPAY_FIX_VOUCHER - 全场代金券、ALIPAY_DISCOUNT_VOUCHER - 折扣券、ALIPAY_ITEM_VOUCHER - 单品优惠。注:不排除将来新增其他类型的可能,商家接入时注意兼容性避免硬编码。
amount response-only,string 仅适用于支付宝 2.0 接口,优惠券面额,它应该会等于商家出资加上其他出资方出资。
merchant_contribute response-only,string 仅适用于支付宝 2.0 接口,商家出资(特指发起交易的商家出资金额)。
other_contribute response-only,string 仅适用于支付宝 2.0 接口,其他出资方出资金额,可能是支付宝,可能是品牌商,或者其他方,也可能是他们的一起出资。
memo response-only,string 仅适用于支付宝 2.0 接口,优惠券备注信息。

alipay_pc_direct 支付宝电脑网站支付

extra 参数 说明
success_url required string 支付成功的回调地址。
enable_anti_phishing_key optional,boolean 是否开启防钓鱼网站的验证参数(如果已申请开通防钓鱼时间戳验证,则此字段必填)
exter_invoke_ip optional, string 客户端 IP ,用户在创建交易时,该用户当前所使用机器的IP(如果商户申请后台开通防钓鱼IP地址检查选项,此字段必填,校验用)。
buyer_account response-only, string 支付完成将额外返回付款用户的支付宝账号。

bfb_wap 百度钱包手机网页支付

extra 参数 说明
result_url required string 支付完成的回调地址。
bfb_login required boolean 是否需要登录百度钱包来进行支付。

upacp 银联 APP 支付

extra 参数 说明
pay_type response-only, string 0001:认证支付 0002:快捷支付 0004:储值卡支付 0005:IC卡支付 0201:网银支付 1001:牡丹畅通卡支付 1002:中铁银通卡支付 0401:信用卡支付 0402:小额临时支付 0403:认证支付 2.0 0404:互联网订单手机支付 9000:其他无卡支付(如手机客户端支付)。
acc_no response-only, string 银行卡号(如需对返回卡号打码,可联系银联入网所在收单行提交开通申请,具体开通资料以所在收单行为准。)。
pay_card_type response-only, string 00:未知 01:借记账户 02:贷记账户 03:准贷记账户 04:借贷合一账户 05:预付费账户 06:半开放预付费账户。

upacp_wap 银联全渠道手机网页支付

extra 参数 说明
result_url required string 支付完成的回调地址。
pay_type response-only, string 0001:认证支付 0002:快捷支付 0004:储值卡支付 0005:IC卡支付 0201:网银支付 1001:牡丹畅通卡支付 1002:中铁银通卡支付 0401:信用卡支付 0402:小额临时支付 0403:认证支付 2.0 0404:互联网订单手机支付 9000:其他无卡支付(如手机客户端支付)。
acc_no response-only, string 银行卡号(如需对返回卡号打码,可联系银联入网所在收单行提交开通申请,具体开通资料以所在收单行为准。)。
pay_card_type response-only, string 00:未知 01:借记账户 02:贷记账户 03:准贷记账户 04:借贷合一账户 05:预付费账户 06:半开放预付费账户。

upacp_pc 银联 PC 网页支付

extra 参数 说明
result_url required string 支付完成的回调地址。
pay_type response-only, string 0001:认证支付 0002:快捷支付 0004:储值卡支付 0005:IC卡支付 0201:网银支付 1001:牡丹畅通卡支付 1002:中铁银通卡支付 0401:信用卡支付 0402:小额临时支付 0403:认证支付 2.0 0404:互联网订单手机支付 9000:其他无卡支付(如手机客户端支付)。
acc_no response-only, string 银行卡号(如需对返回卡号打码,可联系银联入网所在收单行提交开通申请,具体开通资料以所在收单行为准。)。
pay_card_type response-only, string 00:未知 01:借记账户 02:贷记账户 03:准贷记账户 04:借贷合一账户 05:预付费账户 06:半开放预付费账户。

applepay_upacp Apple Pay支付

extra 参数 说明
pay_type response-only, string 0001:认证支付 0002:快捷支付 0004:储值卡支付 0005:IC卡支付 0201:网银支付 1001:牡丹畅通卡支付 1002:中铁银通卡支付 0401:信用卡支付 0402:小额临时支付 0403:认证支付 2.0 0404:互联网订单手机支付 9000:其他无卡支付(如手机客户端支付)。
acc_no response-only, string 银行卡号(如需对返回卡号打码,可联系银联入网所在收单行提交开通申请,具体开通资料以所在收单行为准。)。
pay_card_type response-only, string 00:未知 01:借记账户 02:贷记账户 03:准贷记账户 04:借贷合一账户 05:预付费账户 06:半开放预付费账户。

wx 微信支付

extra 参数 说明
limit_pay optional,string 指定支付方式,指定不能使用信用卡支付可设置为 no_credit
goods_tag optional,string 商品标记,代金券或立减优惠功能的参数。
open_id response-only, string 支付完成后额外返回付款用户的微信 open_id
bank_type response-only,string 支付完成后额外返回付款用户的付款银行类型 bank_type

wx_pub 微信公众号支付

extra 参数 说明
limit_pay optional,string 指定支付方式,指定不能使用信用卡支付可设置为 no_credit
goods_tag optional,string 商品标记,代金券或立减优惠功能的参数。
open_id required string 用户在商户 appid 下的唯一标识。
bank_type response-only, string 支付完成后额外返回付款用户的付款银行类型 bank_type

wx_pub_qr 微信公众号扫码支付

extra 参数 说明
limit_pay optional,string 指定支付方式,指定不能使用信用卡支付可设置为 no_credit
product_id required string 商品 ID,1-32 位字符串。此 id 为二维码中包含的商品 ID,商户自行维护。
goods_tag optional,string 商品标记,代金券或立减优惠功能的参数。
open_id response-only, string 支付完成后额外返回付款用户的微信 open_id
bank_type response-only, string 支付完成后额外返回付款用户的付款银行类型 bank_type

wx_wap 微信 WAP 支付

extra 参数 说明
result_url optional,string 支付完成的回调地址。
goods_tag optional,string 商品标记,代金券或立减优惠功能的参数。
open_id response-only, string 支付完成后额外返回付款用户的微信 open_id
bank_type response-only, string 支付完成后额外返回付款用户的付款银行类型 bank_type

wx_lite 微信小程序支付

extra 参数 说明
limit_pay optional,string 指定支付方式,指定不能使用信用卡支付可设置为 no_credit
goods_tag optional,string 商品标记,代金券或立减优惠功能的参数。
open_id required string 用户在商户 appid 下的唯一标识。
bank_type response-only, string 支付完成后额外返回付款用户的付款银行类型 bank_type

yeepay_wap 易宝手机网页支付

extra 参数 说明
product_category required string 商品类别码,详见 易宝支付商品类型码
identity_id required string 用户标识,商户生成的用户账号唯一标识,最长 50 位字符串。
identity_type required int 用户标识类型,详见 易宝支付用户标识类型码
terminal_type required int 终端类型,对应取值 0:IMEI, 1:MAC, 2:UUID, 3:other。
terminal_id required string 终端 ID。
user_ua required string 用户使用的移动终端的 UserAgent 信息。
result_url required string 前台通知地址。

jdpay_wap 京东手机网页支付

extra 参数 说明
success_url required string 支付成功页面跳转路径。
fail_url required string 支付失败页面跳转路径。
token optional,string 用户交易令牌,用于识别用户信息,支付成功后会调用 success_url 返回给商户。商户可以记录这个 token 值,当用户再次支付的时候传入该 token ,用户无需再次输入银行卡信息,直接输入短信验证码进行支付。32 位字符串。
order_type optional,tring 订单类型,值为0表示实物商品订单,值为 1 代表虚拟商品订单,该参数默认值为 0 。
is_mobile optional,boolean 设置是否通过手机端发起支付,值为 true 时调用手机 h5 支付页面,值为 false 时调用 PC 端支付页面,该参数默认值为 true
user_type optional,string 用户账号类型,取值只能为:BIZ。
user_id optional,string 商户的用户账号。

注: 对于 user_type, user_id 参数,传参存在问题请参考 帮助中心

fqlpay_wap 分期乐支付

extra 参数 说明
c_merch_id required string 子商户编号,需要提交该订单商户的所属子商户编号。
return_url optional,string 前端回调地址,交易完成跳转的链接,不能带自定义参数。

qgbc_wap 量化派支付

extra 参数 说明
phone required string 手机号码。
term optional int 分期参数,0 代表不分期,1 代表分 3 期,2 代表分 6 期,3 代表分 9 期,4 代表分 12 期。
return_url optional,string 交易完成跳转的地址。
activate_url optional, string 账户激活中状态跳转链接。
has_header optional,boolean 是否显示量化派页面顶部 header,即是否显示 H5 顶部标题栏,默认为 true 时显示。

cmb_wallet 招行一网通

extra 参数 说明
result_url required string 支付完成的前端回调地址。
p_no required string 客户协议号,不超过 30 位的纯数字字符串。
seq required string 协议开通请求流水号,不超过 20 位的纯数字字符串,请保证系统内唯一。
m_uid required string 协议用户 ID,不超过 20 位的纯数字字符串。
mobile required string 协议手机号,11 位数字。
discount_amount response-only int 立减金额,支付完成的返回参数,单位为分。

注: 对于 p_no, seq , m_uid , mobile 这几个参数: 1. 这几个参数是用户自定义的。 2. 对于同一个终端用户每次请求 charge 务必使用同一套参数(确保每个参数都不变),任意参数变更都会导致用户重新签约,同一个用户和招行重新签约的次数有限制,超限制就会无法签约 ,导致用户无法使用。

mmdpay_wap 么么贷

extra 参数 说明
phone required string 手机号。
id_no required string 身份证号。
name required string 真实姓名。

qpay QQ 钱包

extra 参数 说明
device required string 客户端设备类型,取值范围: "ios" ,"android"。

企业付款 extra 参数说明

wx_pub 微信公众号企业付款

extra参数 说明
user_name optional,string 收款人姓名。当该参数为空,则不校验收款人姓名。
force_check optional,boolean 是否强制校验收款人姓名。仅当 user_name 参数不为空时该参数生效。

alipay 支付宝企业付款

extra参数 说明
recipient_name required string 收款人姓名,1~50位。
recipient_account_type optional,string 收款方账户类型。可取值:1、 ALIPAY_USERID :支付宝账号对应的支付宝唯一用户号。以2088开头的16位纯数字组成。 2、 ALIPAY_LOGONID (默认值):支付宝登录号,支持邮箱和手机号格式。

unionpay 企业付款(银行卡)

extra参数 说明
card_number required string 1~32位,收款人银行卡号或者存折号。
user_name required string 1~100位,收款人姓名。
open_bank_code optional,string 4位,开户银行编号,详情请参考 企业付款(银行卡)银行编号说明
open_bank optional,string 1~50位,开户银行。
prov optional,string 1~20位,省份。
city optional,string 1~40位,城市。
sub_bank optional,string 1~80位,开户支行名称。

open_bank_codeopen_bank 两个参数必传一个,建议使用 open_bank_code ,若都传参则优先使用 open_bank_code 读取规则;provcity 均为可选参数,如果不传参,则使用默认值 "上海" 给渠道接口。

易宝支付商品类型码

商品类别码 描述
1 虚拟产品
3 公共事业缴费
4 手机充值
6 公益事业
7 实物电商
8 彩票业务
10 行政教育
11 线下服务业
13 微信实物电商
14 微信虚拟电商
15 保险行业
16 基金行业
17 电子票务
18 金融投资
19 大额支付
20 其他
21 旅游机票
22 畅付 D

易宝支付用户标识类型码

代码 备注
0 IMEI 国际移动设备身份码的缩写,国际移动装备辨识码,是由 15 位数字组成的"电子串号",它与每台手机一一对应。
1 MAC 地址 MAC(Media Access Control)地址,或称为 MAC 位址、硬件位址,用来定义网络设备的位置。在 OSI 模型中,第三层网络层负责 IP 地址,第二层数据链路层则负责 MAC 位址。因此一个主机会有一个 IP 地址,而每个网络位置会有一个专属于它的 MAC 位址。
2 用户 ID 用户编号。
3 用户 Email
4 用户手机号
5 用户身份证号
6 用户纸质订单协议号

银行编号说明

open_bank_code open_bank
0100 中国邮政储蓄银行
0102 工商银行
0103 农业银行
0104 中国银行
0105 建设银行
0301 交通银行
0302 中信银行
0303 光大银行
0304 华夏银行
0305 民生银行
0306 广发银行
0308 招商银行
0309 兴业银行
0310 浦发银行
0311 恒丰银行
0313 临沂市商业银行
0316 浙商银行
0317 渤海银行
0318 平安银行
0328 新韩银行(中国)
0329 韩亚银行(中国)
0336 企业银行
0401 上海银行
0402 厦门银行
0403 北京银行
0404 烟台市商业银行
0405 福建海峡银行
0406 吉林银行
0408 宁波银行
0412 温州银行
0413 广州银行
0414 汉口银行
0418 洛阳银行
0420 大连银行
0422 河北银行
0423 杭州商业银行
0424 南京银行
0427 乌鲁木齐市商业银行
0428 绍兴银行
0433 葫芦岛市商业银行
0434 天津银行
0435 郑州银行
0436 宁夏银行
0438 齐商银行
0439 锦州银行
0440 徽商银行
0441 重庆银行
0442 哈尔滨银行
0443 贵阳银行
0447 兰州银行
0448 南昌银行
0449 晋商银行
0450 青岛银行
0455 日照市商业银行
0456 鞍山银行
0458 青海银行
0459 台州银行
0461 长沙银行
0463 赣州银行
0465 营口银行
0467 阜新银行
0474 内蒙古银行
0475 湖州市商业银行
0476 沧州银行
0479 包商银行
0481 威海商业银行
0483 攀枝花市商业银行
0485 绵阳市商业银行
0490 张家口市商业银行
0492 龙江银行
0495 柳州银行
0497 莱商银行
0498 德阳银行
0503 晋城银行
0505 东莞商行
0508 江苏银行
0513 承德市商业银行
0515 德州银行
0517 邯郸市商业银行
0525 浙江民泰商业银行
0526 上饶市商业银行
0527 东营银行
0528 泰安市商业银行
0530 浙江稠州商业银行
0534 鄂尔多斯银行
0537 济宁银行
0547 昆仑银行
0554 邢台银行
0556 漯河商行
1401 上海农商银行
1402 昆山农信社
1403 常熟市农村商业银行
1404 深圳农村商业银行
1405 广州农村商业银行
1408 佛山顺德农村商业银行
1409 昆明农村信用社联合社
1410 湖北农信社
1415 东莞农村商业银行
1416 张家港农村商业银行
1417 福建省农村信用社联合社
1418 北京农村商业银行
1419 天津农村商业银行
1420 宁波鄞州农村合作银行
1424 江苏省农村信用社联合社
1428 江苏吴江农村商业银行
1430 苏州银行
1443 广西农村信用社联合社
1446 黄河农村商业银行
1447 安徽省农村信用社联合社
1448 海南省农村信用社联合社
1513 重庆农村商业银行
6462 潍坊市商业银行
6466 富滇银行
6473 浙江泰隆商业银行
6478 广西北部湾银行
6567 商丘商行

认证接口 result_code 说明

返回码 返回信息
0 成功
2001 调用第三方接口失败
2003 扣费失败
3200 无效的商户号
3204 无效的sessionId
3300 商户号未找到
3303 商户号与服务访问账号不匹配
3420 请求参数不合法
3431 身份证信息不匹配
3432 身份证信息匹配失败
3433 身份验证活体照片非法
3434 身份验证上传登记照失败
3435 身份验证照片比对失败
3441 银行卡信息认证失败
3442 银行卡信息认证请求异常
3443 银行卡信息认证请求超时
3451 银行卡信息认证校验失败
3452 银行卡信息认证校验异常

海关编号说明

表一 微信海关编号说明

海关编号 参数意义
GUANGZHOU 广州海关
HANGZHOU 杭州海关
NINGBO 宁波海关
SHANGHAI 上海海关
ZHENGZHOU_BS 郑州海关(保税物流中心)
ZHENGZHOU_ZH 郑州海关(综合保税区)
CHONGQING 重庆海关

表二 支付宝海关编号说明

海关编号 参数意义
HANGZHOU 杭州海关
ZHENGZHOU 郑州海关
GUANGZHOU 广州海关
CHONGQING 重庆海关
NINGBO 宁波海关
SHENZHEN 深圳海关
HENAN 河南海关
SHANGHAI 上海海关
XIAN 西安海关
FUJIAN 福建海关
TIANJIN 天津海关
NANSHAGJ 南沙国检
ZONGSHU 海关总署

表三 银联海关编号说明

海关编号 参数意义
ZONGSHU 海关总署
SHENZHEN 深圳海关
NINGBO 宁波海关
GUANGZHOU 广州海关
NANJING 广州海关
HANGZHOU 杭州海关
ZHENGZHOU 郑州海关
CHONGQING 重庆海关
XIAN 西安海关
PINGTAN 福建(平潭)海关

API 更新日志


2017-04-26

  1. 新增支付宝 Charges 支付对应支付宝 2.0 接口的花呗分期支付方式、禁用信用卡等新功能;新增对应 extra 返回参数,详情请参考API文档
  2. 调整部分文档格式。

2017-04-19

  1. 新增支付宝渠道的 Transfers 企业付款,详情请参考API文档
  2. 新增支付宝、微信渠道的 Batch Transfers 批量企业付款,详情请参考API文档
  3. 补充红包接口,测试模式下需要主动调用查询接口才能出发 Webhooks 回调,性情请参考API文档

2017-04-05

  1. 补充 Transfers 企业付款付款金额 amount 字段说明,详情请参考API文档
  2. 补充 API 接口错误码和对应报错信息,详情请参考API文档
  3. 新增元数据 Metadata 可选字段,详情请参考API文档

2017-02-15

  1. 新增 customs.succeededbatch_refund.succeeded 两个 Event 事件类型和对应 Event 回调对象示例,详情请参考API文档
  2. 修改支付宝即时到账渠道名为支付宝电脑网站支付,详情请参考API文档
  3. 修改报关接口说明,添加请求接口说明文档中对 applepay_upacp 渠道的支持,详情请参考API文档

2017-02-08

  1. 修改 Transfers 企业付款 description 参数说明,查询 Trasnfer 对象列表 limit 参数说明,详情请参考API文档
  2. 修改 Events 事件类型 summary 类型事件触发时间,详情请参考API文档
  3. 新增 辅助接口、Transfer 对应 unionpay 渠道 API 验签方式说明,详情请参考API文档
  4. 调整部分文档格式。

2017-01-12

  1. 修改报关接口说明文档,去掉不支持拆单的文字描述,新增 trade_no 字段说明,详情请参考API文档
  2. 新增银联全渠道返回参数 pay_typeacc_nopay_card_type,详情请参考API文档
  3. 新增创建 Red Envelope 对象的 extra 参数 scene_id,详情请参考API文档
  4. 新增微信小程序支付渠道 wx_lite ,并添加渠道 extra 参数,详情请参考API文档
  5. 新增 jdpay_wap 京东手机网页支付渠道的 extra 参数,添加可选参数 user_typeuser_id,详情请参考API文档

2016-12-28

  1. 修改请求报关接口 curl 示例,添加请求内容中的 apikey ,添加对应 phpgopython示例文档 ,详情请参考API文档
  2. 添加批量企业付款接口对应 phpgojava 示例文档,详情请参考API文档
  3. 添加批量退款接口对应 phpgo 示例文档,详情请参考API文档
  4. 添加身份认证接口对应 go 示例文档,详情请参考API文档
  5. 修改退款接口对应 java 示例文档,详情请参考API文档
  6. 修改批量退款接口 per_page 默认值为 10 ,详情请参考API文档
  7. 修改批量企业付款请求接口 per_page 默认值为 10 ,详情请参考API文档
  8. 添加支付、批量退款、红包、企业付款、批量企业付款对应查询列表对象接口文档示例,新增请求示例中的 expand[]=app
  9. 修正红包请求接口中 metadata 字段为可选,详情请参考API文档
  10. 修正支付宝电脑网站支付渠道对应 extra 参数,添加返回参数 buyer_account,详情请参考API文档
  11. 调整文档格式,标题栏所有对象名首字母大写。

2016-11-30

  1. 新增批量企业付款到银行卡接口,详情请参考API文档
  2. 新增批量退款查询列表接口请求示例部分的验签示例,详情请参考API文档
  3. 下线 Event 对象列表查询接口。

2016-11-23

  1. 下线应用内快捷支付相关说明文档和示例。

2016-11-16

  1. 新增 metadata 可选字段 phone_number,更新对应语言请求和返回示例,详情请参考API文档
  2. 更新 Node.js SDK 批量企业付款接口,详情请参考API文档
  3. 修改 API 更新日志中批量企业付款链接部分错误,详情请参考API文档

2016-11-09

  1. 调整标题"回调"为"Webhooks 回调",新增相关 Webhooks 通知说明,详情请参考API文档
  2. 修改报关接口部分参数问题,详情请参考API文档
  3. 新增批量企业付款单次请求的企业付款订单数量限制,详情请参考API文档

2016-11-02

  1. 修改文档中"批量付款"为"批量企业付款",详情请参考API文档
  2. 调整文档中交易部分的目录结构顺序,详情请参考API文档
  3. 修改批量退款 和 批量企业付款部分文档示例,修改batch_no字段说明,允许字母和英文,详情请参考API文档
  4. 修改支付渠道属性值,补充各渠道支付场景,详情请参考API文档
  5. 新增更新 Transfer 接口 Node.js SDK 请求示例,详情请参考API文档

2016-10-19

  1. 新增 QQ 钱包渠道说明文档,详情请参考API文档
  2. 新增 微信渠道退款字段 funding_source,详情请参考API文档
  3. 修改 Batch Transfers 批量企业付款接口说明,去掉 transaction_no 字段,修改部分示例代码,详情请参考API文档
  4. 修改 企业付款(银行卡)渠道 order_no 字段说明,只支持 1~16 位纯数字,详情请参考API文档

2016-10-10

  1. 新增身份认证 Java SDK请求示例,详情请参考API文档
  2. 新增 Batch Transfers 批量企业付款接口,详情请参考API文档
  3. 修改 Batch Refunds 批量退款接口查询列表强制验签说明,详情请参考API文档
  4. 新增 batch_transfer.succeeded 批量企业付款 event 事件和事例说明,详情请参考API文档

2016-09-20

  1. 招行一网通渠道修改 extra 参数说明备注,详情请参考API文档
  2. 新增 applepay_upacp 渠道报关文档说明,详情请参考API文档
  3. 修改企业付款和红包接口的文档,不再支持 wx 渠道的企业付款和红包,详情请参考Transfers 企业付款Red envelopes 红包

2016-09-07

  1. 新增银联报关接口,修改原支付宝,微信报关接口参数,接入规则请参考API文档
  2. 新增招行一网通渠道返回参数,extra 中新增优惠金额参数 discount_amount,接入规则请参考API文档

2016-08-24

  1. 新增支付宝批量退款接口,接入规则请参考API文档

2016-08-17

  1. 更新企业付款(银行卡)渠道参数:新增extra字段 open_bank_code 参数,修改 open_bankprovcity 参数为optional,新增该渠道接口调用注意点,接入规则请参考API文档
  2. 新增企业付款(银行卡)银行编号附录,接入规则请参考API文档
  3. 修改 wx_wap 渠道extra字段:去掉 limit_pay 参数,新增 result_url 参数,接入规则请参考API文档

2016-08-10

  1. 新增支付渠道:么么贷 mmdpay_wap,接入规则请参考 API 文档
  2. 添加 charge 对象 time_paid 说明:银联支付成功时间为接收异步通知的时间,请参考API文档

2016-08-03

  1. 新增 alipay_wap 渠道extra字段 app_pay 参数,用于判断是否使用支付宝客户端支付;修改 cancel_url 参数说明,当 app_pay 为true时,cancel_url 字段无效,接入规则参考API文档
  2. 修改招行一网通extra字段参数说明,p_no, seq, m_uid, mobile 这几个参数决定是否签约,传同样的参数,就不会重新签约,具体请参考API文档
  3. 新增 jdpay_wap 渠道extra字段 order_typeis_mobile 参数,接入规则请参考API文档

2016-07-27

  1. 身份证银行卡信息认证接口更新phone_number参数,添加说明:暂不支持178开头的手机号,请参考API文档
  2. 身份证银行卡信息认证接口添加php,ruby对应SDK请求示例和返回示例,接入规则请参考API文档

2016-07-20

  1. 新增 更新 Transfer 对象接口:接入规则请参考API文档
  2. 修改 Customer 对象,Card 对象请求参数:添加sms_code[id]sms_code[code] 参数,修改 Customer 对象 和 Card 对象请求示例,请参考API文档

2016-07-13

  1. 新增支付渠道: 微信WAP支付 wx_wap ,接入规则请参考 API 文档;使用该渠道,需更新客户端 SDK ,请参考 pingpp-js
  2. 修改 身份证银行卡信息认证接口参数:app_id 改成 appidcard 改成 id_cardbankcard 改成 bank_carduser_name 改成 id_name,接入规则请参考 API 文档
  3. 修改 报关接口参数:app_id 改成 app,接入规则请参考 API 文档

2016-07-06

  1. 新增 报关接口,接入规则请参考 API 文档
  2. 新增 企业付款(银行卡)接口,接入规则请参考 API 文档

2016-06-30

  1. 新增支付渠道: 招行一网通 cmb_wallet ,接入规则请参考 API 文档
  2. 新增 身份证银行卡信息认证接口 ,接口规则请参考 API 文档

2016-06-22

退款 Refund 对象中增加商户订单号 charge_order_no 字段,请求退款之后会在返回的 Refund 中带回付款订单的商户订单号,详情参考 API 文档

2016-06-16

升级支付宝手机网站(alipay_wap)支付接口,针对已经接入旧接口的用户请在 3 个月内更新成新接口。旧接口的用户更新只需要三步:

  • 更新客户端 H5 SDK
  • 在服务端请求中增加额外的请求字段 new_version ,详细步骤请参照 alipay_wap 接口更新说明
  • 更新 Ping++ 管理平台上的支付宝手机网站支付的渠道参数,更新成支付宝的 合作伙伴密钥 对应的参数,详情请参考帮助中心
  • 更新到新接口之后,alipay_wap渠道的同步返回参数也会有相应的变更,具体内容请参考 帮助中心

2016-05-18

红包接口和微信官方接口同步:下线 extra 参数中的 nick_namelogoshare_urlshare_contentshare_img 字段。兼容旧接口,已接入用户可忽略该变更;未接入用户请参考 API 文档 进行接入。

2016-04-27

  1. API-微信类接口增加 goods_tag 字段;具体使用方法请参见: API 文档
  2. API-支付宝电脑网站支付可选参数 anti_phishing_key 变更为 enable_anti_phishing_key,为布尔值,具体使用方法请参见: API 文档
  3. API-修复代理商 App 创建微信企业付款( transfer )时报错信息错误的问题;
  4. API-修复红包在测试模式 transaction_no 值为 null 的问题。