Skip to main content
EMV Core SDK 提供用于管理支付交易的 API。通过这些 API,您可以将无现金支付功能集成到应用程序中,同时支持开环和闭环系统。该 SDK 负责安全、高效且灵活的支付处理,并将复杂逻辑转移至 Nayax 后端。 可用于支付管理的方法有: 以下部分对它们进行了更详细的描述。

CancelTransaction

CancelTransaction 方法会停止正在进行的 PayTransaction 或 PreAuthorize 调用的执行。在取消操作被接受并确认之前,系统会阻止进一步的请求。 实现说明:
  • 轻触卡片之前: 如果尚未轻触卡片,读卡器轮询序列将停止。显示屏将显示 “Cancelling”(取消中);随后主机应用程序必须使用 ShowMessage 命令更新界面。
  • 处理过程中: 如果卡片已经被轻触但处理尚未完成,系统会返回 CannotCancel。EMV Core 在等待联机结果时,可能需要几秒钟才能收到 TransactionComplete 事件。
  • 完成之后: 如果交易已经完成,将返回 NoTransaction。
  • 撤销已成功交易: 要撤销已完成的交易,请使用 VoidTransaction。
  • 被拒绝的交易: 如果 TransactionComplete 返回 Decline 状态,则无需发送 VoidTransaction 命令。
  • 事件: 在所有情况下,EMV Core 最终都会发送 TransactionComplete 事件以确定最终状态。
请参阅下方 CancelTransaction 方法的 API 签名:
请求:
响应:
如果卡片已被轻触并处理完毕,系统将返回 CannotCancel 错误。

ConfirmTransaction

确认请求是授权流程的第二阶段,用于确认预授权,以便进行结算。

API 签名

响应:
JSON
请求:
JSON
响应:
JSON
参数:

GetCardToken

GetCardToken 方法用于启动卡片令牌化流程,返回卡片令牌而不执行金融交易。 EMV Core 等待卡片被轻触,读取数据,并触发 CardTokenReceived 事件:
  • 支付卡: 返回包含卡令牌的 Base64 字符串。
  • CLP 卡(例如 Mifare): 返回卡片 UID。

API 签名

请求:
响应:
JSON
参数:

IncrementalAuthorization

IncrementalAuthorization 方法为现有已授权交易添加增量扣款,并通过 IncrementalAuthorizationResponse 回调返回结果。该方法是为未来的多步流程保留的,目前无需使用:如需了解当前的单步行为,请参阅下文。

单步增量授权

在大多数场景下,您无需直接调用此 API。每当结算金额超过预授权金额时,Nayax Core 会自动处理单步增量授权:
  1. 调用 PreAuthorize(例如 10.00 美元),并从返回的 TransactionComplete 事件中读取 IncrementalMaxDefaultCredit 的值(例如 50.00 美元)。
  2. 调用 ConfirmTransaction,或从您的服务器发送外部结算请求,金额不超过 IncrementalMaxDefaultCredit(例如 15.03 美元)。
  3. Nayax Core 会自动向处理商发送针对差额的增量授权请求(本例中为 5.03 美元)。
  4. 如果增量授权成功,Nayax Core 会以最终金额(15.03 美元)结算交易。
  5. 如果失败,Nayax Core 会以原始预授权金额(10.00 美元)结算交易。
Nayax 目前尚未在服务器端支持多步流程。目前调用 IncrementalAuthorization 除上述内容外不会产生其他效果。
此方法仅适用于 Android SDK。
请参阅下方 IncrementalAuthorization 的 API 签名:
Java
参数:

PreAuthorize

使用 PreAuthorize 对支付处理商的卡片进行预授权。EMV Core 会等待卡片、读取卡片,并在需要时通过支付服务进行处理,然后发送 TransactionComplete 事件。

API 签名

请求:
JSON
响应:
JSON
参数:
在 SDK v1.5 之前: 在 PreAuthorize 中将 productID 设置为非零值,会将预授权金额标记为最终金额,且无法在 ConfirmTransaction 中更改。若要表示金额尚未确定,则在 PreAuthorize 中设置 productID = 0,并在 ConfirmTransaction 中提供实际的产品 ID。自 SDK v1.5 起,金额是否为最终金额改由 PreAuthorize 中的 isFinalAmount 参数控制(详见上方参数表)。productID 现在仅用于报告,可在两次调用中独立设置。
如果交易获批准(TransactionComplete 事件返回状态为 OK),应用程序必须调用 ConfirmTransaction 或 VoidTransaction 以完成流程。

VoidTransaction

此请求用于在两种特定情况下撤销交易:
  1. 释放资金: 该交易已被预授权但尚未确认。撤销交易会在交易不会再发生时释放已预留的资金。
  2. 冲正: 交易已使用 PayTransaction 完成,但需要取消。

API 签名

请求:
JSON
响应:
JSON
参数: