1. 概览
1.1 前置条件
开始集成前,请确保:- 已向 UQPAY 提供你的账户 ID,以启用 POS API 功能
1.2 集成流程
2. 终端注册
每台 POS 终端在处理交易前都必须先在 UQPAY 完成注册。这是一次性操作,每台终端只需注册一次。2.1 API Endpoint
2.2 请求参数
支持的厂商与终端型号组合:
firm_code 与 terminal_model 必须来自同一行。
这些组合由 UQPAY 维护,可能会发生变化。如果你的终端型号未列出,请在注册前联系 UQPAY 技术支持。请勿使用其他厂商的型号替代。
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:
请求示例:
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
5.2 请求示例
POS 交易使用card_present 支付方式类型。需要注意的关键字段:
terminal_id:设置为终端注册时返回的 TIDencrypted_pin:设置为 PIN 加密生成的 PINBLOCKsystem_trace_audit_number:每笔新交易必须唯一(STAN)
5.3 响应示例
6. 错误处理
6.1 POS API 错误码
7. 测试
7.1 测试卡
在沙盒环境使用以下测试卡数据:
用于测试的 card_present 对象示例:
注意: 每笔测试交易必须使用唯一的 system_trace_audit_number。

