SPEI

支付流程

1、用户在商户网站进行下单选择SPEI付款;

2、商户向Payful发起SPEI支付请求;

3、Payful返回付款参考(CLABE账号)信息; 当“checkOut”是“true”则返回带有CLABE账号的收银台页面,当“checkOut”是“false”则只返回CLABE账号。

4、商户将该付款参考(CLABE账号)展示给用户;

5、用户复制该付款参考(CLABE账号)。

6、用户打开银行APP选择转账,输入复制的付款参考(CLABE账号)和金额完成转账。

7、Payful通知商户订单成功。

请求地址

环境名称
URL

SandBox

POST https://sandbox-gateway.payful.com/api/platform/transactions/payin

正式环境

POST https://gateway.payful.com/api/platform/transactions/payin

请求参数

请求头

Key
Value

Content-Type

application/json

请求体

变量名
类型
必填
描述

countryId

String

国家编号 参照:字典表-国家编号 墨西哥:MEX

currency

String

币种 参照:字典表-货币 墨西哥比索:MXN

payProduct

String

支付产品 SPEI:15

maxOrderAmount

String

最大订单金额 需要大于等于订单金额

minOrderAmount

String

最小订单金额 需要小于等于订单金额

建议传00.00

orderAmount

String

订单金额 1、未传入(最大和最小)订单金额时,用户支付则会对orderAmount进行校验,用户支付金额与orderAmount不相等时,则支付拒绝; 2、若传入(最大和最小)订单金额时,以该区间金额进行校验。 3、单位比索,需要分可以传入小数,支持两位小数

4、若使用了订单金额orderAmountrepeatmaxOrderAmountminOrderAmount参数,付款金额不符合参数要求导致交易被拒,渠道会固定收取6比索手续费,交易被拒产生的手续费需商户自行承担,请慎重考虑。

repeat

Boolean

Clabe是否重复使用 true:多次使用 false:单次使用

merId

String

商户ID 商户ID获取路径:Payful商户后台-商户管理-基本信息-商户ID

merOrderNo

String

商户订单号

nonceStr

String

随机字符串 长度不能超过32位

callbackUrl

String

回调地址

详见通知回调说明

sign

String

请求示例

{
	"callbackUrl": "https://test.com",
	"countryId": "MEX",
	"currency": "MXN",
	"maxOrderAmount": "15000.00",
	"merId": "8302921196770572",
	"merOrderNo": "2025072419233923321993765",
	"minOrderAmount": "10.00",
	"nonceStr": "737eb662f1384c4490c77d7565518d22",
	"orderAmount": "30",
	"payProduct": "15",
	"repeat": true,
	"sign": "C7AC1590DCFF78529C5B433F4500CC8A"// 大写
}

签名组装字符串

callbackUrl=https://test.com&countryId=MEX&currency=MXN&maxOrderAmount=15000.00&merId=8302921196770572&merOrderNo=2025072419233923321993765&minOrderAmount=10.00&nonceStr=737eb662f1384c4490c77d7565518d22&orderAmount=30&payProduct=15&repeat=true&key=de53650e1a6b494087d8c472516cc1cb

响应参数

注意:由于SPEI支付仅在用户支付成功后才创建订单,因此响应中不会包含Payful订单号。

变量名
类型
描述

code

String

响应编码 具体参照:响应状态码

data

Object

响应数据

amount

BigDecimal

订单金额

channelName

String

Clabe所属银行

identifier

String

付款参考标识符 Clabe

merCode

String

商户ID

merOrderNo

String

商户订单号

transactionStatus

String

下单状态 该笔订单的的发起状态是否成功,与订单真正的交易状态无关。 00:下单成功 04:下单失败

url

String

交易链接

msg

String

响应描述

响应示例

{
	"code": "200",
	"msg": "success ",
	"data": {
		"merCode": "8302921196770572",
		"merOrderNo": "2025072419233923321993765",
		"amount": 30,
		"transactionStatus": "00",
		"url": "https://pay-h5.payful.com/clabe?token=tg3njqvv98nvml8i",
		"identifier": "736869302197372480",
		"channelName": "DEMO"
	}
}

回调通知

提交方式:POST

变量名
类型
描述

amount

String

订单金额

countryId

String

国家编号 参照:字典表-国家编号 墨西哥:MEX

fee

String

预收手续费

identifier

String

付款参考 Clabe

merId

String

商户ID

merOrderId

String

商户订单号

msg

String

响应描述

nonceStr

String

随机字符串 长度不能超过32位

realityAmount

String

实收金额

realityFee

String

实收手续费

reference

String

标识符

sign

String

签名

successTime

Date

交易成功时间 UTC时间

platformOrderId

String

Payful订单号

transactionType

String

交易类型 01:代收 02:代付

回调通知示例

{
	"amount": "30.00",
	"countryId": "MEX",
	"fee": "1.00",
	"identifier": "736869302197372480",
	"merId": "8302921196770572",
	"merOrderId": "2025072419233923321993765",
	"msg": "交易成功",
	"nonceStr": "b607adb6-bec4-44cc-a60a-7d3c4c",
	"realityAmount": "30",
	"realityFee": "1.00",
	"reference": "CRTYPODPDYJW4V2XK5QZ6LGSNYRPG5R",
	"sign": "1A341F36DE64A915D62A11721DEC0EB1",// 大写
	"status": "01",
	"successTime": 1753356221224,
	"platformOrderId": "202507b926c36081de43ee9a1cfb9ade91ef5a",
	"transactionType": "01"
}

签名组装字符串

callbackUrl=https://test.com&countryId=MEX&currency=MXN&maxOrderAmount=15000.00&merId=8302921196770572&merOrderNo=2025072419233923321993765&minOrderAmount=10.00&nonceStr=737eb662f1384c4490c77d7565518d22&orderAmount=30&payProduct=15&repeat=true&key=de53650e1a6b494087d8c472516cc1cb

回调通知响应

商户成功收到回调后需同步返回指定字符串:SUCCESS 不返回或返回其他内容默认通知失败 如:

public String test(){
	return "SUCCESS";
}

最后更新于