跳转到主内容

付款流程

本指南涵盖由下列机构支持的所有支付流动: 4pay.online: 直接支付卡片,托管支付,支付,退款,以及级联路由.

交易周期​

每笔交易都遵循此状态机器:

created → new → authorizing → charging → charged ✅
│ → failed ❌
└► action_required → rejected ❌

charged → reversed (a settled transaction was returned)
状态最终说明
createdno交易已初始化
newno正在接受、路线和审定
authorizingno获得提供者授权
action_requiredno等待付款人(3-D 安全,请检查d 安全 OTP,签名)
chargingno由提供者处理
charged** 对**已确认付款,已收到资金
failed** 对**提供者错误,或在和解前取消
rejected** 对**验证、 路由或合规检查失败
reversed** 对**退回了一笔已结清的交易
refundedno退款完成——终局取决于铁路

仅就最终地位采取行动,并将你不承认的任何地位视为 非最终结果:名单未关闭,铁路载有自己的中间状态 (cancelled, payment_suspended 完整的模型,包括: 每一个最终结果对钱意味着什么,是在 协议规格.

直接卡付款​

为: PCI DSS 直接处理卡片数据的认证合伙人.

Partner API                     4pay.online                    Provider
│ │ │
├─── POST /transactions ───────►│ │
│ (card data included) │── route + validate ────────►│
│ │ │
│ │◄── 3DS required ───────────┤
│◄── status: action_required ───┤ │
│ │ │
├─── POST /additional_params ──►│── 3DS verification ────────►│
│ (OTP or 3DS data) │ │
│ │◄── charged ────────────────┤
│◄── webhook: charged ──────────┤ │

创建支付​

付款需要所有五个牌区—— cardnumber, cardholder, exp_month, exp_year, cvv ——和两个重定向 URL。只需支付 cardnumber,没有方向URL。

通过您自己的服务器传递卡片数据会让您进入 PCI DSS 瞄准镜,除非你持有 证明,使用以下主机流.

curl -X POST https://4pay.online/api/v1/transactions \
-H "x-api-key: YOUR_API_KEY" \
-H "x-organization-id: 00000000-1111-2222-3333-444444444444" \
-H "Content-Type: application/json" \
-d '{
"params": {
"txid": "order_123",
"type": "payment",
"amount": "10000",
"currency": "USD",
"env": "prod",
"money_storage": {
"type": "bank_card",
"cardnumber": "PROVIDER_TEST_PAN",
"cardholder": "IVAN PETROV",
"exp_month": "12",
"exp_year": "2027",
"cvv": "PROVIDER_TEST_CVV"
},
"description": "Order #123",
"returnUrl": "https://your-site.com/result",
"failUrl": "https://your-site.com/failed"
}
}'

处理 3DS 认证​

当状态变成 action_required,动作本身在 auth_params ——委员会 type 告诉你该怎么做redirect or auth_3ds_form),以及 url, method 和 params 告诉你送哪里去 顾客,没有 action_required 布尔和否 auth_url 字段键入。

经核实后,提交认证数据:

curl -X POST https://4pay.online/api/v1/transactions/additional_params_for_auth/TX_ID \
-H "x-api-key: YOUR_API_KEY" \
-H "x-organization-id: 00000000-1111-2222-3333-444444444444" \
-H "Content-Type: application/json" \
-d '{"params": {"otp": "123456"}}'

托管付款​

没有伙伴的 PCI DSS 客户在 a 上输入卡片细节 4pay.online- 主持网页。

Partner API                     4pay.online                    Customer
│ │ │
├─── POST /transactions ───────►│ │
│ (NO card data) │ │
│◄── widget_url ────────────────┤ │
│ │ │
│ redirect customer ─────────┼─────────────────────────────►
│ │◄── card data ──────────────┤
│ │── process payment ──► │
│◄── webhook: charged ──────────┤ │

创建主机支付​

curl -X POST https://4pay.online/api/v1/transactions \
-H "x-api-key: YOUR_API_KEY" \
-H "x-organization-id: 00000000-1111-2222-3333-444444444444" \
-H "Content-Type: application/json" \
-d '{
"params": {
"txid": "order_456",
"type": "payment",
"amount": "5000",
"currency": "EUR",
"env": "prod",
"hosted": true,
"description": "Order #456",
"returnUrl": "https://your-site.com/result",
"failUrl": "https://your-site.com/failed"
}
}'

答复包括 widget_url - 将客户改到那里,付款后,客户返回 returnUrl 你将获得一个网签。

付款​

从您的账户中将资金寄给一个接受者(卡,银行账户,钱包).

curl -X POST https://4pay.online/api/v1/transactions \
-H "x-api-key: YOUR_API_KEY" \
-H "x-organization-id: 00000000-1111-2222-3333-444444444444" \
-H "Content-Type: application/json" \
-d '{
"params": {
"txid": "payout_789",
"type": "payout",
"amount": "25000",
"currency": "USD",
"env": "prod",
"money_storage": {
"type": "bank_card",
"cardnumber": "PROVIDER_TEST_PAN"
},
"description": "Withdrawal request #789"
}
}'

付款周期相同: created → new → charging → charged/failed.

退款​

a/ 发放全额或部分退款 charged 交易。

全额退款​

curl -X PUT https://4pay.online/api/v1/transactions/TX_ID \
-H "x-api-key: YOUR_API_KEY" \
-H "x-organization-id: 00000000-1111-2222-3333-444444444444" \
-H "Content-Type: application/json" \
-d '{"params": {"type": "refund"}}'

部分退款​

curl -X PUT https://4pay.online/api/v1/transactions/TX_ID \
-H "x-api-key: YOUR_API_KEY" \
-H "x-organization-id: 00000000-1111-2222-3333-444444444444" \
-H "Content-Type: application/json" \
-d '{"params": {"type": "refund", "amount": "5000"}}'

交易结果为: refund_id 和 refund_msg退款。 不重写原始状态:完全返回的和解成为 reversed.

双阶段付款(授权+捕获)​

一些提供商支持授权(持有),然后是捕获(充电). 平台先持有资金,然后在确认时捕获.

authorize → charging (funds held) → commit → charged

手动进行授权交易:

curl -X POST https://4pay.online/api/v1/transactions/commit/TX_ID \
-H "x-api-key: YOUR_API_KEY" \
-H "x-organization-id: 00000000-1111-2222-3333-444444444444" \
-H "Content-Type: application/json" \
-d '{"params": {"money_storage_meta": {}}}'

在你犯罪之前,资金是持有的,没有解决的。 终止控股, 交易失败—— 控股永远不会被解除 被俘的比预留的还要多

连锁跑道​

当一个提供者失败时,该平台会自动与下一个可用的提供者重试:

Provider A (priority 0) → failed → rollback hold
↓
Provider B (priority 1) → failed → rollback hold
↓
Provider C (priority 2) → charged ✅

连锁店对合伙人透明。 您总是通过 Webhook 获得最终结果。 配置管理控制台下的路由优先级 终端运行( R).

数额​

每个交易回复包括三个金额字段:

外地说明示例
amount原先要求的数额"10000"
amount_with_fee数额,包括所有费用"10500"
amount_dest按目的地分列的收到的金额"9500"

为: 支付额: 客户付费 amount,商家收到 amount_dest. 为: 付款: 商家发送 amount,接收者收到 amount_dest.

所有金额均为十进制 字符串 最小货币单位(百分数、高压单位)。 "10000" = 100.00 USD。它们是字符串,因为有十八小数的资产不符合 JSON 号码安全。

Webhook 通知​

您在每次状态变化时都会收到网路选择 。 Webhook 通知 关于设置细节。

示例webhook有效载荷:

{
"event_id": "4d9d0e6c-1d0a-4a2e-9a2f-0c9a1b0e8f21",
"timestamp": 1772668800,
"type": "transaction.charged",
"data": {
"type": "payment",
"txid": "order_123",
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "charged",
"amount": "10000",
"amount_dest": "9500",
"amount_with_fee": "10500"
}
}
幂等性

复制在 event_id,交易时不使用 id 一项交易 在其生命中产生多个事件,平台可能发送同样的事件 不止一次 不止一次吗?

恢复和复原能力​

  • 交易状态在每一个处理阶段都持续存在
  • 如果一个节点在中流中坠落,则从最后一个检查站自动恢复恢复
  • 无需人工干预——平台保证至少一交货

下一个步骤​