跳转到主要内容
本指南介绍如何集成 UQPAY POS API 以处理刷卡交易,涵盖终端注册、PIN 密钥管理、PIN 块加密和支付处理。

1. 概览

1.1 前置条件

开始集成前,请确保:
  • 已向 UQPAY 提供你的账户 ID,以启用 POS API 功能

1.2 集成流程


2. 终端注册

每台 POS 终端在处理交易前都必须先在 UQPAY 完成注册。这是一次性操作,每台终端只需注册一次。

2.1 API Endpoint

API Reference:Register Terminal

2.2 请求参数

支持的厂商代码:

2.3 请求示例

2.4 响应

注意: 请妥善保存 terminal_id,后续所有 API 调用都需要用到。

3. PIN 密钥管理

要安全处理基于 PIN 的交易,你需要获取并管理 PIN 加密密钥。

3.1 生成 AES 私钥

请求 PIN 密钥前,先在终端或服务器上生成一个 AES 私钥: AES 密钥示例(256 位):
重要: 请妥善保存该私钥。后续需要用它解密 Get PIN Key API 返回的 encrypt_pin_key

3.2 请求 PIN 密钥

API Endpoint:
API Reference:Get PIN Key 请求参数: 请求示例:
响应:

3.3 解密 PIN 密钥

使用你的 AES 私钥解密 encrypt_pin_key,得到实际的 PINKEY。 解密参数: 示例:
  • encrypt_pin_key:LASDho1ILHoYRf/5YEyIgieoc+SXJkUsHZElXOMNGv7WnC3fZzFPYDH8mJaDbnwvom3QEtdv3NjvaEUtVeetWdQsv2RtQw4XEYh/Cg==
  • 实际 PINKEY:26e1734e4d52b905e74574b7bf0897daeec7e217c61b3ac0
解密代码示例见附录。

3.4 密钥过期

留意 pin_key_expire 时间戳,在过期前刷新 PIN 密钥。按相同流程重新请求新的 PIN 密钥即可。

4. PIN 块加密

处理基于 PIN 的交易时,你需要将持卡人 PIN 加密为 PIN 块。

4.1 概览

PIN 块由以下内容组合生成:
  • 卡 PAN(Primary Account Number)
  • 持卡人 PIN
  • PINKEY

4.2 示例

输入: 输出:
PIN 块加密代码示例见附录。

5. 创建 Payment Intent

完成终端设置并获取 PINKEY 后,即可处理刷卡交易。

5.1 API Endpoint

API Reference:Create Payment Intent

5.2 请求示例

POS 交易使用 card_present 支付方式类型。需要注意的关键字段:
  • terminal_id:设置为终端注册时返回的 TID
  • encrypted_pin:设置为 PIN 加密生成的 PINBLOCK
  • system_trace_audit_number:每笔新交易必须唯一(STAN)

5.3 响应示例


6. 错误处理

6.1 POS API 错误码


7. 测试

7.1 测试卡

在沙盒环境使用以下测试卡数据: 用于测试的 card_present 对象示例:
注意: 每笔测试交易必须使用唯一的 system_trace_audit_number

8. 附录

8.1 代码示例

AES-256-GCM 解密(Python)

PIN 块加密(Python)

8.2 术语表