如何在 BlueSnap Payment API 中自定义交易 ID?
支付阿杰
明确结论
商户可以传入自己的交易编号,但不能替换 BlueSnap 生成的交易 ID。
创建交易时,只需将自定义编号写入 merchantTransactionId 字段。交易成功后,BlueSnap 仍会生成自己的交易 ID。建议同时保存这两个编号,便于后续对账、查询和排查问题。
设置方法
通过 Payment API 创建交易时,在请求体中加入 merchantTransactionId:
{
"amount": 49.99,
"currency": "USD",
"merchantTransactionId": "ORDER-20260910-0001",
"cardHolderInfo": {
"firstName": "Jane",
"lastName": "Doe"
},
"creditCard": {
"cardNumber": "4111111111111111",
"expirationMonth": "12",
"expirationYear": "2030",
"securityCode": "123"
}
}
示例请求:
curl -X POST \
'https://sandbox.bluesnap.com/services/2/transactions' \
-u 'API_USERNAME:API_PASSWORD' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"amount": 49.99,
"currency": "USD",
"merchantTransactionId": "ORDER-20260910-0001",
"cardHolderInfo": {
"firstName": "Jane",
"lastName": "Doe"
},
"creditCard": {
"cardNumber": "4111111111111111",
"expirationMonth": "12",
"expirationYear": "2030",
"securityCode": "123"
}
}'
实际接入时,还需根据所用的支付方式补充相应字段,如卡片信息、支付来源或 vaulted shopper 信息。
两类交易 ID 的区别
merchantTransactionId:由商户提供,通常填写订单号、支付流水号或内部业务编号。- BlueSnap transaction ID:由 BlueSnap 创建,用于标识其平台中的交易,商户无法指定。
建议在数据库中分别保存:
order_id: ORDER-20260910-0001
merchant_transaction_id: ORDER-20260910-0001
bluesnap_transaction_id: BlueSnap 返回的交易 ID
注意事项
merchantTransactionId 主要用于关联业务和对账。它不会取代 BlueSnap transaction ID,因此不要只依赖该字段执行退款、撤销或交易查询。
不同类型的 Payment API 请求对字段的支持范围可能不同。正式上线前,请以当前 BlueSnap API 文档中对应交易接口的请求结构为准,并确认 merchantTransactionId 的长度限制、字符限制和唯一性要求。为避免网络重试造成重复扣款,应使用 BlueSnap 当前支持的幂等或重复交易防护机制,不要将 merchantTransactionId 当作幂等键。
备注:内容仅供参考。
