POST
创建收银台支付
该接口用于创建收银台支付,并获取跳转到 Onerway 托管支付页面的
redirectUrl。请求
billingInformation{ email, country, ... }交易账单信息,包括客户账单地址与联系方式。
cardInfo{ holderName }卡支付信息。收银台场景当前仅支持
holderName;提供后可预填持卡人姓名。lpmsInfo{ lpmsType, bankName, ... }本地支付方式信息。结合
productType=ALL 使用时,设置 lpmsType 后收银台仅展示指定本地支付方式。merchantCustId客户在商户系统中的唯一标识。
示例:
customer_12345约束
- 规则
- 非订阅收银台场景下,商户如希望降低复购摩擦,可传入该字段,收银台会向客户提供保存卡信息的选项。
- 一致性
- 订阅交易中应以
subscription.merchantCustId作为订阅客户标识;外层merchantCustId可不传,若同传则必须与subscription.merchantCustId保持一致。
merchantNoOnerway 分配的商户号;获取方式参见接入准备。
示例:
demo_merchant_no约束
- 规则
- 平台模式下传该笔交易所属子商户的商户号,而不是平台商户号;该子商户需已在 Onerway 完成报备。
merchantTxnId商户系统生成的每笔支付唯一交易标识,用于交易跟踪、对账和防重复处理。
merchantTxnTime商户发起交易的时间戳,格式为
yyyy-MM-dd HH:mm:ss;未传时 Onerway 默认使用 UTC+8 时区记录交易时间。merchantTxnTimeZonemerchantTxnTime 对应的时区偏移量;未传时 Onerway 默认使用 UTC+8 时区记录交易时间。示例:
+08:00metaData本次交易的商户自定义数据,交易查询和异步通知会原样返回。
约束
- 规则
- 必须是包含合法 JSON 的字符串。未传入时,交易查询和异步通知中的
metaData为空。 - 一致性
- 若外层
metaData与subscription.metaData同时传入,以subscription.metaData为准。
osType条件:当
移动端和应用交易的操作系统类型。收银台建议使用 paymentMode 为 APP 或 WAP 时必填。WEB 模式,通常不建议传此字段。示例:
IOS可选值
IOS- iOS 设备。
ANDROID- Android 设备。
paymentMode交易平台或环境的支付模式;收银台建议使用默认值
WEB。示例:
WEB可选值
WEB- 桌面浏览器支付。
APP- 原生移动 App 支付。
WAP- 移动浏览器支付。
paymentMethodOptions{ card, share }支付方式配置选项。收银台支持
card 与 share 对象。productType收银台支付方式展示范围,用于决定客户在收银台可选择的支付方式类别;后续交易处理方式还需结合
subProductType 和 txnType 判断。示例:
ALL可选值
ALL- 聚合收银台,展示当前商户和交易条件下可用的所有支付方式;如同时传入
lpmsInfo.lpmsType,则仅展示指定本地支付方式。 CARD- 仅展示卡支付方式;是否支持预授权、订阅、分期或保存卡等能力,还需结合
subProductType、txnType和商户开通配置确认。
retailers{ retailerId, retailerName, ... }marketplace 交易的零售商信息;订单包含的每个零售商各传入一个对象。
自 2026-08-10marketplace 零售商信息的新增字段。
约束
- 规则
- 适用于 marketplace / 平台模式下商品由第三方零售商销售的场景;仅销售自有商品的商户无需传入。
- 一致性
- 传入该字段后,
txnOrderMsg.products中的每个商品都需要传入retailerId,且取值需命中此处列出的某个零售商。
risk3dsStrategy收银台交易的 3DS 风控策略。
示例:
DEFAULT可选值
DEFAULT- 默认策略,由 Onerway 根据交易、商户配置和风控判断是否发起 3DS 验证。
INNER- 强制使用 Onerway 托管的 3DS 验证流程。
NONE- 不走 3DS 验证;是否可用需结合商户配置和风控要求确认。
约束
- 不支持
- 收银台不支持
EXTERNAL。 - 规则
- 如需指定非默认策略,需提前联系 Onerway 确认配置。
shippingInformation{ email, country, ... }交易收货信息,包括客户收货地址与联系方式。
sign请求签名字符串;生成方式详见请求签名。
subProductType所选支付方式范围下的交易处理模式。
示例:
DIRECT可选值
DIRECT- 普通收银台支付,按
txnType执行一次性扣款或预授权。 SUBSCRIBE- 初始订阅交易,用于通过收银台创建订阅合约;需同时传入
subscription,后续扣款、取消和更新需走对应订阅接口。 INSTALLMENT- 分期交易;需在
txnOrderMsg.periodValue中传入咨询分期期数接口返回的期数值。
约束
- 一致性
- 需要与
productType和txnType配合定义交易模型。 - 不支持
- 收银台不支持
TOKEN。 - 规则
- 收银台如需让客户保存支付信息,可在非订阅场景传入
merchantCustId,或在托管卡订阅场景使用subscription.bindCard。
subscription{ requestType, merchantCustId, ... }条件:当
用于通过收银台创建或初始化订阅的信息。本接口仅用于初始订阅;订阅后续扣款、取消、更新需走对应订阅接口。subProductType=SUBSCRIBE 时必填。selfExecute=1 表示托管订阅;selfExecute=2 表示自主管理订阅。txnOrderMsg{ returnUrl, products, ... }交易业务信息,包含
returnUrl、notifyUrl、appId 和商品信息等。浏览器、设备和持卡人 IP 信息由收银台页面侧采集,不在本请求中由商户传入。txnType要执行的支付操作类型;该字段与
productType、subProductType 共同定义交易模型,交易查询和异步通知也会返回。示例:
SALE可选值
SALE- 扣款型交易。与
subProductType=DIRECT/SUBSCRIBE/INSTALLMENT组合时,分别用于普通支付、初始订阅或分期交易。 AUTH- 预授权型交易,先完成授权不立即请款。通常用于支持预授权的卡支付场景,仍需结合
productType、subProductType和商户开通配置确认是否可用。
curl -X POST 'https://sandbox-acq.onerway.com/txn/payment' \
-H 'Content-Type: application/json' \
--data-raw '{
"billingInformation": "{\"country\":\"US\",\"email\":\"customer@test.com\",\"province\":\"CA\"}",
"cardInfo": "{\"holderName\":\"Test Cardholder\"}",
"merchantCustId": "custId_1784021156",
"merchantNo": "replace_with_merchant_no",
"merchantTxnId": "card-4f71d2ae-4d0b-4fc2-8f2c-e450cf735baf",
"merchantTxnTime": "2025-08-21 10:17:31",
"orderAmount": "1",
"orderCurrency": "USD",
"productType": "CARD",
"shippingInformation": "{\"country\":\"US\",\"email\":\"customer@test.com\",\"province\":\"CA\"}",
"sign": "4ee2d1398368a3cad281e97614fc134418922400f61a34c1fc1e81eca40002ba",
"subProductType": "DIRECT",
"txnOrderMsg": "{\"appId\":\"replace_with_app_id\",\"products\":\"[{\\\"currency\\\":\\\"USD\\\",\\\"name\\\":\\\"test product\\\",\\\"num\\\":\\\"1\\\",\\\"price\\\":\\\"1\\\",\\\"type\\\":\\\"\\\"}]\",\"returnUrl\":\"https://developers.onerway.com/example-return\",\"notifyUrl\":\"https://developers.onerway.com/example-notify\"}",
"txnType": "SALE"
}'响应
respCode响应码;
20000 表示请求处理成功,其余为错误码。完整码表见响应码。respMsg响应码对应的可读说明。
data{ transactionId, paymentId, ... }收银台会话创建响应的业务数据对象。
{
"respCode": "20000",
"respMsg": "Success",
"data": {
"transactionId": "2076961389037359104",
"merchantTxnId": "card-4f71d2ae-4d0b-4fc2-8f2c-e450cf735baf",
"merchantNo": "replace_with_merchant_no",
"responseTime": "",
"txnTime": "",
"orderAmount": "1.00",
"orderCurrency": "USD",
"txnAmount": "",
"txnCurrency": null,
"txnTimeZone": null,
"status": "U",
"paymentId": "2076961389016387584",
"paymentStatus": "U",
"reason": null,
"redirectUrl": "https://sandbox-checkout.onerway.com/checkout?key=bb02fff76ddf4ea9b021e4cd738e13e3",
"sign": "3607ed6b158396e7a16574e2d62d5abb4b0157fa1e7321714438749488eb2f12",
"contractId": "",
"tokenId": null,
"eci": null,
"transactionOrderNo": null,
"periodValue": null,
"lpmsType": null,
"qrCode": null,
"subscriptionManageUrl": null,
"tokenization": null,
"linkName": null,
"itemName": null
}
}该接口暂未记录错误响应。