支付开发接口文档支付开发接口文档
  • English
  • 简体中文
  • English
  • 简体中文
  • 介绍
  • 通用
    • 业务流程
    • 接口规则
    • 返回编码
  • 接口
    • 代收下单
    • 代付下单
    • 代收回调
      • 回调场景
      • 回调网关
      • 回调请求
      • 回调返回
    • 代付回调
    • 订单查询
    • 余额查询
  • 附录
    • 银行列表

代收回调

回调场景

  • 支付完成后,支付中心会把相关支付结果和相关信息发送给商户,商户需要接收处理,并返回应答。 对后台通知交互时,如果支付中心收到商户的应答不是成功或超时,支付中心则认为通知失败,会在一定的策略定期重新发起通知,尽可能提高通知的成功率,但不保证通知最终能成功。 (通知频率为15/15/30/180/1800/1800/1800/1800/3600,单位:秒)

提示

  • 同样的通知可能会多次发送给商户系统。商户系统必须能够正确处理重复的通知。 推荐的做法是,当收到通知进行处理时,首先检查对应业务数据的状态,判断该通知是否已经处理过,如果没有处理过再进行处理,如果处理过直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。

  • 特别提醒:商户系统对于订单回调的内容一定要做签名验证,并校验返回的订单金额是否与商户侧的订单金额一致,防止数据泄漏导致出现“假通知”,造成资金损失。

回调网关

  • 统一下单接口提交的参数 notify_url 设置
  • 如果无法访问链接,您的业务系统将无法接收到支付中心的通知

回调请求

字段名变量名类型必填示例值说明
错误码result_codestringTRUEOK结果码. OK:成功,其他:失败
返回消息result_msgstringTRUESUCCESS提示信息. SUCCESS:成功
数据对象chargeobjectTRUE返回支付对象(请看下方具体数据)

样例:

{
	"result_code": "OK",
	"result_msg": "SUCCESS",
	"charge": {
		"uid": 100000,
		"userid": "U123456789",
		"out_trade_no": "23092024181832904",
		"trade_no": "03e1afadd4dee63f69e111804b09d400",
		"in_trade_no": "",
		"subject": "pay_test",
		"body": "pay_test",
		"channel": "vnpay_napas_vietqr",
		"paytype": 1,
		"extra": "[]",
		"currency": "VND",
		"amount": "15000.000",
		"order_amount": "15000.000",
		"pay_amount": "15000.000",
		"amount_paid": "15000.000",
		"keyword": null,
		"urate": "0.015",
		"ufixed_fee": "0.000",
		"user_in": "14775.000",
		"client_ip": "127.0.0.1",
		"return_url": "http://localhost:8001/demo.html",
		"notify_url": "http://localhost:8001/cashier/demonotify",
		"image_list": null,
		"image_text": null,
		"remark": null,
		"create_time": 1727086713,
		"update_time": 1727087865,
		"out_status": 23,
		"status": 2,
		"is_status": 0,
		"merchant_wallet": {
			"uid": 100000,
			"currency": "VND",
			"total_limit_credits": "-1000000000.00",
			"total_security_deposit_credits": "0.00",
			"total_unsettled_credits": "136131.33",
			"total_hold_credits": "0.00",
			"total_commission_credits": "229.47",
			"total_available_credits": "-42728.13"
		}
	}
}

提示

以下是成功通知的数据样例

  • [status] 为订单业务状态

    • 0-关闭订单
    • 1-等待支付
    • 2-支付成功
    • 3-支付失败
    • 4-正在支付
    • 5-结算成功
    • 6-退款成功
    • 7-投诉纠纷
  • [out_status] 为下游订单状态

    • 0-玩家取消支付
    • 10-商户取消支付
    • 1-等待确认
    • 21-玩家确认成功
    • 22-商户确认成功
    • 23-平台确认成功
    • 24-卡商确认成功
    • 31-玩家确认失败
    • 32-商户确认失败
    • 33-平台确认失败
    • 34-卡商确认失败
    • 4-正在支付
    • 5-结算成功
    • 6-退款成功
    • 7-投诉纠纷
  • [amount] 上分金额:商户和会员的上分请以该金额为准

  • [order_amount] 下单金额:商户代收下单的原始金额

  • [pay_amount] 收银金额:我方收银台展示给会员的应付金额

  • [amount_paid] 实收金额:我方银行和钱包实际收款金额

回调返回

  • 以下是成功应答的数据样例
{
    "result_code": "OK",
    "result_msg": "SUCCESS"
}
  • 以下是失败应答的数据样例
{
    "result_code": "OK",
    "result_msg": "FAIL"
}

提示

  • 如果收到我们的通知并验证签名成功,则返回成功的响应
  • 如果想继续收到相同的通知,则返回失败的响应
Prev
代付下单
Next
代付回调