取消和捕获流程

与 Yuno 集成时,您有多种选择来实现捕获和取消操作。本指南概述了所有可用的方法,并解释了在每种情况下如何与我们的 API 交互。

我们为快速交易提供简单的实时采集,也提供高度可定制的延迟采集和取消配置,以满足您的业务需求。

概述

捕捉模式

Yuno 提供了三种获取付款的选择,由以下因素决定 capture 字段和可选的 delayed_capture_settings 配置中找到的 创建支付应用程序接口.实际功能可用性或具体实施细节可能会有所不同,具体取决于您通过哪个支付提供商进行支付。

实时采集

这种模式处理付款和转账,没有任何延迟,有效地将授权和捕获合二为一。 购买 操作。当 payment_method.detail.card.capture 设置为 true在这种情况下,交易是作为购买执行的,这意味着授权和捕获是同时进行的。

根据支付提供商的应用程序接口,Yuno 可以将其作为一个直接购买交易执行,也可以作为紧接着捕获调用的授权执行。

{
  "payment_method": {
    "detail": {
      "card": {
        "capture": true,
        "card_data": {
          // card details
        }
      }
    }
  }
}

手动捕捉

使用这种配置,Yuno 将不会捕获付款,直到您调用 捕获 API 或在您的 尤诺仪表板.设置 capture: false 授权付款,但不捕获付款。

手动捕获具有最大的灵活性,因为您可以完全控制捕获的时间。不过,由于支付提供商对未捕获授权的时间有限制,而且这些限制因提供商和地区而异,因此必须尽快捕获。

{
  "payment_method": {
    "detail": {
      "card": {
        "capture": false,
        "card_data": {
          // card details
        }
      }
    }
  }
}
🚧

捕捉不同的金额

如果需要采集与最初授权不同的金额,则必须使用手动采集。实时和延迟捕获模式将始终捕获最初授权的金额。

延迟捕获

配置 capture: falsedelayed_capture_settings 中指定的稍后时间获取付款。 delay field.

🚧

仅捕获全额

延迟抓取只适用于抓取授权的全部金额。如果需要获取部分金额,则必须使用手动获取

📘

simplified_mode

设置 simplified_modetrue 将使 Yuno 在预定的捕捉尝试中发生错误时重试捕捉操作。

{
  "payment_method": {
    "detail": {
      "card": {
        "capture": false,
        "delayed_capture_settings": {
          "delay": "P7D",
          "simplified_mode": false
        },
        "card_data": {
          // card details
        }
      }
    }
  }
}

"(《世界人权宣言》) delay 字段是使用延迟捕获操作时的必填字段,并且必须遵循 ISO 8601 标准.例如

  • "PT3H" 3小时
  • "P7D" 7天
  • "P1M" 1 个月

如果您在预定时间之前调用捕捉 API,您的调用将覆盖延迟并立即执行捕捉。此操作会自动取消预定的 Yuno 触发器。或者,您也可以通过Yuno 面板手动抓取付款。

取消模式

当您授权付款但未立即抓取付款时,这些资金会暂时扣留在客户的付款方式上。如果您决定不抓取付款,就必须取消授权以释放这些被扣留的资金,并提供更好的客户体验。取消模式可让您控制何时以及如何取消这些授权。

手动取消

使用手动取消模式,授权付款将保持激活状态,直到您明确取消为止。Yuno 不会自动取消这些授权,让您完全控制何时释放资金。您可以使用取消 API或通过 Yuno 面板界面取消授权。

尽快取消不会捕获的授权以释放被扣留的资金至关重要。如果不取消授权,客户体验会受到严重影响,因为根据客户所在地区和银行卡网络的不同,资金可能会保留不同的时间。

延迟取消

配置 delayed_cancel_settings 在取消未捕获授权时设置延迟,类似于延迟捕获。如果您决定不在指定时间内捕获客户资金,该功能可自动释放客户资金,防止无限期扣留客户的支付方式,从而显著改善客户体验。

"(《世界人权宣言》) delay 字段是使用延迟取消操作时的必填字段,并且必须跟随 ISO 8601 标准.例如

  • "PT3H" 3小时
  • "P7D" 7天
  • "P30D" 为期30天
📘

simplified_mode

设置 simplified_modetrue 将使 Yuno 在预定的取消尝试中发生错误时重试取消操作。

{
  "payment_method": {
    "detail": {
      "card": {
        "capture": false,
        "delayed_cancel_settings": {
          "delay": "P30D",
          "simplified_mode": false
        },
        "card_data": {
          // card details
        }
      }
    }
  }
}

如果您在预定时间前调用捕捉 API取消 API,您的调用将覆盖延迟并立即执行操作。此操作会自动取消预定的 Yuno 触发器。或者,您也可以通过 Yuno 面板手动捕获或取消付款。

⚠️

延迟捕捉和取消设置

我们建议不要使用 两个 delayed_capture_settingsdelayed_cancel_settings 同时使用,以免出现意外行为。根据需要,一次只使用一种。

配置要求

  • delayed_capture_settingsdelayed_cancel_settings 只有当 capture = false
  • 如果 capture = true,这些对象必须省略或设置为 null
  • 可通过 APIendpoints 或 Yuno 面板执行手动操作

申请示例

示例 1:实时采集

{
  "country": "US",
  "amount": {
    "currency": "USD",
    "value": "20000"
  },
  "customer_payer": {
    "id": "<customer_id>",
    "first_name": "John",
    "last_name": "Doe",
    "email": "[email protected]"
  },
  "workflow": "DIRECT",
  "payment_method": {
    "detail": {
      "card": {
        "capture": true,
        "card_data": {
          "number": "4111111111111111",
          "expiration_month": 11,
          "expiration_year": 28,
          "security_code": "123",
          "holder_name": "John Doe"
        }
      }
    },
    "type": "CARD"
  },
  "account_id": "<account_id>",
  "description": "Real-time capture payment",
  "merchant_order_id": "000023"
}

例 2:仅手动捕捉

{
  "country": "US",
  "amount": {
    "currency": "USD",
    "value": "20000"
  },
  "customer_payer": {
    "id": "<customer_id>",
    "first_name": "John",
    "last_name": "Doe",
    "email": "[email protected]"
  },
  "workflow": "DIRECT",
  "payment_method": {
    "detail": {
      "card": {
        "capture": false,
        "card_data": {
          "number": "4111111111111111",
          "expiration_month": 11,
          "expiration_year": 28,
          "security_code": "123",
          "holder_name": "John Doe"
        }
      }
    },
    "type": "CARD"
  },
  "account_id": "<account_id>",
  "description": "Authorization only - manual capture",
  "merchant_order_id": "000024"
}

例 3:延迟捕获

{
  "country": "US",
  "amount": {
    "currency": "USD",
    "value": "20000"
  },
  "customer_payer": {
    "id": "<customer_id>",
    "first_name": "John",
    "last_name": "Doe",
    "email": "[email protected]"
  },
  "workflow": "DIRECT",
  "payment_method": {
    "detail": {
      "card": {
        "capture": false,
        "delayed_capture_settings": {
          "delay": "P7D",
          "simplified_mode": false
        },
        "card_data": {
          "number": "4111111111111111",
          "expiration_month": 11,
          "expiration_year": 28,
          "security_code": "123",
          "holder_name": "John Doe"
        }
      }
    },
    "type": "CARD"
  },
  "account_id": "<account_id>",
  "description": "Authorization with delayed capture",
  "merchant_order_id": "000025"
}

例 4:延迟取消

{
  "country": "US",
  "amount": {
    "currency": "USD",
    "value": "20000"
  },
  "customer_payer": {
    "id": "<customer_id>",
    "first_name": "John",
    "last_name": "Doe",
    "email": "[email protected]"
  },
  "workflow": "DIRECT",
  "payment_method": {
    "detail": {
      "card": {
        "capture": false,
        "delayed_cancel_settings": {
          "delay": "P30D",
          "simplified_mode": false
        },
        "card_data": {
          "number": "4111111111111111",
          "expiration_month": 11,
          "expiration_year": 28,
          "security_code": "123",
          "holder_name": "John Doe"
        }
      }
    },
    "type": "CARD"
  },
  "account_id": "<account_id>",
  "description": "Authorization with delayed cancel",
  "merchant_order_id": "000026"
}

例 5:延迟捕获和取消与强化验证相结合

此示例显示了一个完整的付款请求,包含延迟捕获和取消设置,以及增强的客户验证字段:

{
  "country": "US",
  "amount": {
    "currency": "USD",
    "value": "20000"
  },
  "customer_payer": {
    "merchant_customer_validations": {
      "account_is_verified": true,
      "email_is_verified": true,
      "phone_is_verified": true
    },
    "id": "<customer_id>",
    "first_name": "John",
    "last_name": "Doe",
    "email": "[email protected]"
  },
  "workflow": "DIRECT",
  "payment_method": {
    "detail": {
      "card": {
        "capture": false,
        "delayed_capture_settings": {
          "delay": "P20D",
          "simplified_mode": true
        },
        "delayed_cancel_settings": {
          "delay": "P40D",
          "simplified_mode": true
        },
        "card_data": {
          "number": "4111111111111111",
          "expiration_month": 11,
          "expiration_year": 28,
          "security_code": "123",
          "holder_name": "John Doe"
        },
        "verify": false
      }
    },
    "type": "CARD"
  },
  "account_id": "<account_id>",
  "description": "Payment with card details",
  "merchant_order_id": "000023"
}
⚠️

备注

本例同时显示了 delayed_capture_settingsdelayed_cancel_settings 配置在一起,我们建议一次只使用一个,以避免出现意想不到的行为。

何时使用每种模式

在以下情况下使用实时捕捉功能

  • 您立即提供货物或服务
  • 授权后无需验证库存或欺诈检查
  • 您需要最简单的付款流程

在下列情况下使用手动捕捉

  • 您需要在最终付款前核实库存
  • 您想获取的金额与授权金额不同
  • 您有复杂的业务逻辑来决定是捕获还是取消
  • 您需要最大限度地控制采集时间

在以下情况下使用延迟捕捉

  • 您希望在特定时间段后自动捕捉
  • 您有一个可预测的履行流程
  • 您希望在保持控制的同时减少人工干预

在以下情况下使用延迟取消

  • 如果未在规定时间内捕获,您希望自动释放客户资金
  • 您希望通过避免无限期扣留资金来改善客户体验
  • 您有履行流程的最长时限

实地参考

现场类型说明
captureboolean确定是否立即捕获银行卡付款(......)。true购买)或仅授权(false需要捕获或取消)。
delayed_capture_settings.delaystringYuno 捕捉付款之前的延迟。必须遵循ISO 8601 时长格式(例如,"P7D "表示 7 天,"PT3H "表示 3 小时)。
delayed_capture_settings.simplified_modeboolean如果 true如果捕捉失败,Yuno 会重试捕捉。
delayed_cancel_settings.delaystringYuno 取消授权前的延迟时间。必须遵循ISO 8601 时长格式(例如,"P30D "表示 30 天)。
delayed_cancel_settings.simplified_modeboolean如果 true如果取消失败,尤诺会重试。