Seamless SDK (网络支付)

请按照本分步指南在您的应用程序中实施并启用 Yuno 的无缝 Web SDK 支付功能。

👍

推荐的 SDK

我们建议使用WebSeamless SDK,以获得流畅的集成体验。该选项提供了灵活的支付解决方案,预置了用户界面组件和自定义选项。

📘

我应该使用 Lite 还是 FullSeamless SDK?

使用 FullSeamless SDK 自动列出付款方式并单独显示付款按钮(如 PayPal)。LiteSeamless SDK 可让您对支付方式的显示和组织方式进行更多控制。

第 1 步:在项目中加入程序库

集成指南提供了三种灵活的方法

  1. 直接包含 HTML 脚本
  2. 动态 JavaScript 注入
  3. 安装 NPM 模块

选择最适合您的开发工作流程和技术要求的集成方法。完成 SDK 集成后,您可以继续执行以下步骤来实现无缝功能。

📘

TypeScript 库

如果您使用的是 TypeScript,Yuno 提供了一个,可以访问 Yuno Web SDK 中的所有可用方法。

步骤 2:使用公钥Initialize SDK

在 JavaScript 应用程序中Initialize Yuno SDK,提供一个有效的 PUBLIC_API_KEY:

const yuno = await YunoinitializePUBLIC_API_KEY);
📘

证书

更多信息,请参阅全权证书页面: https://docs.y.uno/reference/authentication

步骤 3:创建结账会话

📘

如果您的工作流程需要发送 additional_data 对象,它可以作为结账会话的一部分发送。

要initialize 支付流程,请创建一个新的 checkout_session 使用 创建结账会话 endpoint。

💳

为控制授权和卡片捕获,请包含 payment_method.detail.card.capture 在结账会话中:设置 false 仅授权, true 立即捕捉。

关键参数

参数需要说明
amount主交易金额对象包含 currency (ISO 4217 代码)和 value (该货币的数字金额)。
alternative_amount没有交易金额的另一种货币表示形式,其结构与 amount (currencyvalue).适用于多币种场景,例如以客户偏好的货币(如美元)显示价格,同时以当地货币(如 COP)处理付款。
📘

onPaymentMethodSelect 活动

适用于所有 APM,包括 Google Pay、Apple Pay 和 PayPal、 onPaymentMethodSelected 会在客户选择payment 方式后立即触发(在payment 流程开始前)。定义 onPaymentMethodSelectedstartSeamlessCheckout 之前 mountSeamlessCheckout.

📘

谷歌支付和 Apple 支付显示屏

从 SDK 1.5 版开始,Google Pay 和 Apple Pay 在支付方式列表中显示为直接按钮,而不是单选按钮。它们与其他支付方式分开显示。

步骤 4:开始结账

使用以下配置,为客户提供无缝和用户友好的支付体验:

yuno.startSeamlessCheckout({
  checkoutSession: "438413b7-4921-41e4-b8f3-28a5a0141638",
  elementSelector: "#root",
  countryCode: "US",
  language: "en-US",
  showLoading: true,
  issuersFormEnable: true,
  showPaymentStatus: true,
  onLoading: (args) => console.log(args),
  renderMode: {
    type: "modal",
    elementSelector: {
      apmForm: "#form-element",
      actionForm: "#action-form-element",
    },
  },
  card: {
    type: "extends",
    styles: "",
    cardSaveEnable: false,
    texts: {},
    cardNumberPlaceholder: "Enter card number", // Optional: Custom placeholder text
    hideCardholderName: false, // Optional: Set to true to hide cardholder name field
  },
  texts: {},
  async yunoCreatePayment(oneTimeToken, tokenWithInformation) {
    await createPayment({ 
      oneTimeToken, 
      checkoutSession,
      vault_on_success: true 
    });
    yuno.continuePayment({ showPaymentStatus: true });
  },
  yunoPaymentMethodSelected(data) {
    console.log("Payment method selected:", data);
  },
  yunoPaymentResult(data) {
    console.log("Payment result:", data);
    yuno.hideLoader();
  },
  yunoError(error, data) {
    console.error("An error occurred:", error);
    yuno.hideLoader();
  },
});

使用时 startSeamlessCheckout,指定处理付款的回调。您还可以使用 texts 物件

参数

使用以下选项配置无缝结账:

参数说明
checkoutSession指当前payment的 结账环节.例如 438413b7-4921-41e4-b8f3-28a5a0141638.
elementSelector显示结账信息的 HTML 元素。
countryCode该参数用于指定正在设置payment 流程的国家。使用 ENUM 值代表所需的国家代码。支持的国家及其相应代码的完整列表可在 覆盖国家 page.
language支付表格的语言。使用任何列出的代码。 支持的语言.例如 en-US默认使用浏览器语言(若可用)。
showLoading控制付款过程中 Yuno 载入/旋转器页面的可见性。默认值: true.
onLoading在payment 过程中接收服务器调用或加载事件的通知时需要使用。
issuersFormEnable启用发行人表格(如银行列表)。默认值: true.
showPaymentStatus显示 Yuno 支付状态页面,在继续支付时非常有用。默认值: true.
showPayButton控制客户或卡片表单中支付按钮的可见性。默认值: true.
renderMode指定渲染表格的方式和位置。可供选择的选项有
▪️ type: modal (默认)
▪️ type: element - 如果您选择 element您必须通知 elementSelector 来指定表单的渲染位置。
card定义卡片表单的配置。包含渲染模式、自定义样式、保存卡片选项等设置,以及可选的 cardNumberPlaceholder 用于自定义卡号字段的占位符文本,以及可选的 hideCardholderName 隐藏持卡人姓名字段。 cardNumberPlaceholder 支持字母数字字符、空格和UTF-8字符用于本地化。若未提供,SDK将使用默认英文占位符("卡号")。当 hideCardholderName 设置为 true持卡人姓名字段未显示。当未指定或设置为 false持卡人姓名字段将显示(默认行为)。隐藏该字段不会影响主卡号、有效期、CVV收集、BIN逻辑或3DS/服务商验证。
texts允许您为银行卡和非银行卡支付表单设置自定义按钮文本。
yunoCreatePayment创建付款的占位符函数。此函数不会被调用,但应予以实现。创建付款时,可包含 vault_on_success: true 在成功付款后注册支付方式。参见 注册支付方式 了解更多详情。
yunoPaymentMethodSelected选择付款方式时调用的回调,以及付款方式的类型和名称。
yunoPaymentResult付款完成后调用的回调,包含付款状态(例如、 SUCCEEDED, ERROR).
yunoError付款过程中出现错误时调用的回调。接收错误类型和可选的附加数据。
📘

客户和商家发起的交易

付款可以由客户(CIT)或商家(MIT)发起。有关其特点的更多信息,请参阅 "存储凭证"。

本页的分步步骤指的是客户发起的不带重复选项的交易。通常用于一次性网上购物、店内购物、ATM 取款等。

步骤 5:安装 SDK

要根据所选支付方式显示结账流程,请使用 yuno.mountSeamlessCheckout() 功能。此步骤可确保 SDK 正确安装在所选的 HTML 元素上。

yuno.mountSeamlessCheckout({
  paymentMethodType: PAYMENT_METHOD_TYPE,
  vaultedToken: VAULTED_TOKEN,
});

请参阅支付类型页面,查看安装 SDK 时可使用的支付方式类型的完整列表。

"(《世界人权宣言》) vaultedToken 是可选项。它代表以前注册的付款方式。如果您提供 vaultedToken由于用户已在之前的交易中提供了付款信息,因此无需再次提供付款信息。

安装后,必须通过调用 yuno.startPayment().如果跳过此呼叫,则不会打开付款表。

步骤 6:启动付款流程(必填)

致电 yuno.startPayment() 紧随 yuno.mountSeamlessCheckout() 打开所选支付方式的用户界面:

yuno.mountSeamlessCheckout({
  paymentMethodType: PAYMENT_METHOD_TYPE,
  vaultedToken: VAULTED_TOKEN,
});

yuno.startPayment();

或者,也可以通过用户操作(如点击按钮)触发启动:

const payButton = document.querySelector('#button-pay');
payButton.addEventListener('click', () => {
  yuno.startPayment();
});
📘

演示应用程序

除提供的代码示例外,您还可以访问演示应用程序,了解 Yuno SDK 的完整实现。演示应用程序包含所有 Yuno SDK 的工作示例,可从GitHub 存储库中克隆。

安装外部按钮

您可以使用 mountExternalButtons 方法,在用户界面的自定义位置显示 Google Pay 和 Apple Pay 按钮。这样您就可以控制这些按钮的显示位置。

await yuno.mountExternalButtons([
  {
    paymentMethodType: 'APPLE_PAY',
    elementSelector: '#apple-pay',
  },
  {
    paymentMethodType: 'GOOGLE_PAY',
    elementSelector: '#google-pay',
  },
]);

参数

参数说明
paymentMethodType付款方式类型。必须是 'APPLE_PAY''GOOGLE_PAY'.
elementSelector按钮所在 HTML 元素的 CSS 选择器(例如 '#apple-pay', '.button').

卸载按钮

您可以按付款方式类型卸载单个外部按钮:

yuno.unmountExternalButton('APPLE_PAY');

或者一次性卸载所有外部按钮:

yuno.unmountAllExternalButtons();

在无缝流程中注册支付方式

您可在无缝支付流程中直接设置支付方式(存储卡片以备将来使用)。 payment_method.vault_on_success = true创建结账会话.

何时 vault_on_success 设置为 true:

  • 若付款状态为,则付款方式将自动注册。 SUCCEEDED
  • 若付款未成功,则不会发生任何存储操作
  • 付款响应将包含一个 vaulted_token 可用于未来交易的

例如

{
    "account_id": "...",
    ...
    "payment_method": {
        "vault_on_success": true
    }
}
📘

跳马要求

生成和接收 vaulted_tokenvault_on_success = true付款必须通过以下方式引用 Yuno 现有客户 customer_payer.id 在结账环节中,若在支付请求内直接创建或发送客户数据,则不会在我们系统中创建客户,因此不会触发保险库存储操作。

有关注册支付方式的更多信息,请参阅注册支付方式

随时掌握最新动态

请访问更新日志,了解最新的 SDK 更新和版本历史。