跳到主要内容

退款 API

Ask AI

为已完成的交易发起退款并查询其状态。


发起退款 (Initiate Refund)

接口地址 (Endpoint): POST /v2/refund
Content-Type: application/json

退款可以是 全额 (full)部分 (partial)(取决于各支付渠道的限制 —— 某些渠道仅支持全额退款)。退款可能会立即自动处理,也可能会保留待人工审批,具体取决于商户配置。

每笔退款的最大可退金额为:paidAmount 减去该交易已退款的总额。

请求 (Request)

字段类型是否必填描述
transactionIdString (ULID)M来自 IPN 或交易查询的 transactionId。例如:01jza90dy6w82dfrrqvadn5vs4
amountFloatM退款金额。最小值:0.10。最大值:剩余可退款金额。例如:50.00
reasonString(max:1000)O退款原因的简短描述。例如:客户要求
signatureString(max:750)MRSA-MD5 签名。请参阅 签名

某些渠道(PayAgency, SmartPay, ClisaPay, FinvyPay, WPay)仅支持全额退款。

响应 (Response)

所有响应均已包装:

字段类型描述
statusStringsuccesserror
messageString人类可读的消息
dataJSON退款详情。请参阅下方的 data 对象

data 对象:

字段类型描述
refundIdString (ULID)GLODIPAY 退款 ID
refundNumberStringGLODIPAY 人类可读的退款编号

立即自动处理:

{
"status": "success",
"message": null,
"data": {
"refundId": "01jzabk09xc4pbgwe8hyg4cwbf",
"refundNumber": "2507-1751420414"
}
}

等待人工审批:

{
"status": "success",
"message": "Refund created and waiting for approval.",
"data": {
"refundId": "01jzabk09xc4pbgwe8hyg4cwbf",
"refundNumber": "2507-1751420414"
}
}

验证错误 (HTTP 422):

{
"status": "error",
"message": "Invalid request data.",
"errors": [
{
"field": "amount",
"message": ["金额必须在 0.1 到 100 之间。"]
}
]
}

查询退款状态 (Query Refund Status)

接口地址 (Endpoint): POST /v2/refund/query
Content-Type: application/json

请求 (Request)

字段类型是否必填描述
refundIdString (ULID)MGLODIPAY 退款 ID(来自退款 API 响应或退款 IPN)。例如:01jzabk09xc4pbgwe8hyg4cwbf
signatureString(max:750)MRSA-MD5 签名。请参阅 签名

响应 (Response)

字段类型描述
statusStringsuccess
messageString人类可读的消息
dataJSON退款详情对象

data 对象字段:

字段类型描述
transactionIdStringGLODIPAY 原始交易 ID
refString商户的 orderRef
refundIdStringGLODIPAY 退款 ID
currencyStringISO 4217 货币代码
refundAmountFloat退款金额
statusString退款状态。请参阅 状态码
statusCodeNumber数字状态码。请参阅 状态码
metadataJSON原始会话中的键值对
reasonString退款原因
messageString人类可读的状态消息
originalRefundCreatedAtISO 8601 datetime支付渠道侧的退款创建时间
refundCreatedAtISO 8601 datetimeGLODIPAY 系统中的退款创建时间
transactionCreatedAtISO 8601 datetime原始交易创建时间
signatureStringRSA-MD5 签名 —— 使用 GLODIPAY 公钥验证

示例:

{
"status": "success",
"message": "",
"data": {
"transactionId": "01jza90dy6w82dfrrqvadn5vs4",
"ref": "ORDER-001",
"refundId": "01jzabk09xc4pbgwe8hyg4cwbf",
"currency": "USD",
"refundAmount": 50.00,
"status": "refund_successful",
"statusCode": 11,
"metadata": { "orderId": "12345" },
"reason": "客户要求",
"message": null,
"originalRefundCreatedAt": "2026-04-14T11:00:00+00:00",
"refundCreatedAt": "2026-04-14T11:00:01+00:00",
"transactionCreatedAt": "2026-04-14T10:00:00+00:00",
"signature": "base64-encoded-rsa-signature"
}
}

退款 IPN 通知 (Refund IPN Notification)

当退款状态发生变化时,GLODIPAY 会向原始交易的 notificationUrl 发送 HTTP POST 请求。

方法: POST
Content-Type: application/json

重试策略: 如果您的服务器在 30 秒 内未返回 {"returnCode":"100"},GLODIPAY 将重试发送。

Payload

字段类型是否必填描述
transactionIdStringMGLODIPAY 原始交易 ID
refStringM商户的 orderRef
refundIdStringMGLODIPAY 退款 ID
currencyStringMISO 4217 货币代码
refundAmountFloatM退款金额
statusStringM退款状态。请参阅 状态码
statusCodeNumberM数字状态码
metadataJSONO原始会话中的键值对
reasonStringO退款原因
messageStringO人类可读的状态消息
originalRefundCreatedAtISO 8601 datetimeM支付渠道侧的退款创建时间
refundCreatedAtISO 8601 datetimeMGLODIPAY 系统中的退款创建时间
transactionCreatedAtISO 8601 datetimeM原始交易创建时间
signatureStringMRSA-MD5 签名 —— 使用 GLODIPAY 公钥验证

IPN Payload 示例:

{
"transactionId": "01jza90dy6w82dfrrqvadn5vs4",
"ref": "ORDER-001",
"refundId": "01jzabk09xc4pbgwe8hyg4cwbf",
"currency": "USD",
"refundAmount": 50.00,
"status": "refund_successful",
"statusCode": 11,
"metadata": { "orderId": "12345" },
"reason": "客户要求",
"message": null,
"originalRefundCreatedAt": "2026-04-14T11:00:00+00:00",
"refundCreatedAt": "2026-04-14T11:00:01+00:00",
"transactionCreatedAt": "2026-04-14T10:00:00+00:00",
"signature": "base64-encoded-rsa-signature"
}

确认 (Acknowledgement)

您的服务器必须在 30 秒 内响应:

{
"returnCode": "100",
"description": "Received"
}
字段类型是否必填描述
returnCodeStringM必须为 "100" 以确认收到
descriptionString(max:1500)O可选描述

来源

此页面派生自 GLODIPAY_Refund_API_Specification_v2

Bookmarks

No bookmarks yet.
Hover over a heading and click to save a section.