如何将 ESP32 微控制器转变为一个功能完备、适用于量产的 UPI 支付终端
扫描二维码
随时随地手机看文章
UPI 已成为印度最受欢迎的支付方式。如果任何企业想要采用智能解决方案,那么就必须实现与 UPI 的对接。这种支付系统使用起来非常简便,我们是通过 ESP32 进行集成的,而二维码则显示在小屏幕上。这种解决方案可用于任何数字业务,从自动售货机到智能储物柜和自助服务亭系统等。
它能够动态生成 UPI 二维码,并通过与 Razorpay 支付网关集成的后端 PHP 服务器实现近乎实时的交易验证。
该系统将嵌入式硬件与云 API 进行了连接,实现了完全自动化的支付触发操作——比如解锁门、分发产品或激活继电器——无需使用昂贵的销售点终端或专用的安卓/苹果设备。
核心功能
• 每笔交易均可动态生成 UPI 二维码
• 通过 ESP32 无线接入点(AP)模式进行本地配置
• 用于实时二维码渲染的 TFT 显示屏(ILI9341,SPI 接口)
• 利用 Razorpay 企业 API 进行后端支付验证
• 支付确认后基于触发机制的硬件自动化操作
• 轻巧且可扩展,适用于多个部署地点
• 在终端设备上无需使用任何安卓/苹果系统设备或电脑
硬件堆栈
•ESP32 开发板
•2.8 英寸 TFT 显示屏(ILI9341,SPI 接口)
•5 伏电源
软件栈
•固件:ESP-IDF(嵌入式 C 语言)
•后端 API:基于 PHP 的服务器
•通信:HTTP/REST API 系统
•支付网关集成:Razorpay(基于企业令牌的验证)
系统架构
该系统以一个简洁的 9 步流程运行,从启动到支付确认均在此流程中完成:
1.API 模式启动:ESP32 会启动一个 Wi-Fi 无线接入点,用于首次配置。
2.用户配置:用户通过网页表单输入 UPI 识别码和商户名称并完成连接操作。
3.二维码生成:后端服务器通过瑞azor支付 API 创建一个与 UPI 兼容的二维码数据包
4.在 TFT 屏幕上进行 QR 图形渲染:ESP32 接收 QR 数据,并实时将其绘制在 ILI9341 显示屏上
5.客户扫描二维码:客户使用 GPay、PhonePe、Paytm 或任何 UPI 应用程序进行扫描操作
6.支付处理完成:通过瑞azor支付网关,UPI 交易发送至后端服务器。
7.服务器验证:PHP 服务器通过基于 Razorpay 令牌的 API 来验证交易状态
8.ESP32 检测/接收:ESP32 每隔 3 秒钟向后端发起一次检测以获取确认信息。
9.硬件触发:成功时:继电器/GPIO 接口触发——产品已排出或门已解锁
详细工作步骤
步骤 1 — 启动与显示初始化
在开机时,ESP32 会初始化 SPI 总线和 ILI9341 TFT 驱动器。在系统准备进行配置或操作模式设置期间,会显示带有项目名称的启动屏幕。
第 2 步 — Wi-Fi / AP 配置
如果闪存(NVS)中未存储任何 Wi-Fi 信息,ESP32 将进入接入点模式。用户将手机/笔记本电脑连接到此接入点,打开浏览器,输入商家的 UPI 识别码、商家名称以及 Wi-Fi 信息。这些信息将被保存到 ESP32 的非易失性存储器中。
第 3 步 — 通过后端生成二维码 + 使用 Razorpay 服务
ESP32 向 PHP 后端发送了一条经过身份验证的 HTTP POST 请求。后端使用企业令牌调用了 Razorpay 的二维码 API,并收到了一个包含唯一交易 ID 和金额的实时二维码数据包。
第 4 步 — 在 TFT 上进行 QR 图形渲染
二维码数据(二进制矩阵或图像链接)通过 TFT_eSPI 库进行处理,并逐像素绘制在 240x320 的 ILI9341 显示屏上。金额和商家名称以可读文本的形式显示在二维码下方。
第 5 步 — 通过统一支付接口进行客户付款
客户使用任何支持UPI协议的应用程序(如 GPay、PhonePe、Paytm、BHIM)扫描二维码即可完成支付。金额会自动填写。付款后,交易会通过瑞加支付网关实时处理。
第 6 步 — 支付确认与投票
ESP32 每隔 3 秒钟使用交易 ID 与后端进行一次通信。后端向 Razorpay 查询支付状态。如果支付成功,后端会返回确认响应;如果超时(120 秒),则返回失败响应。
第 7 步 — 成功时的硬件触发操作
在收到付款确认信息后,ESP32 会将一个 GPIO 引脚设置为高电平,从而激活继电器、蜂鸣器或任何执行器。TFT 显示一个绿色的成功界面。系统在 5 秒后重置为初始状态,准备进行下一笔交易。
挑战与收获:
• 在 ESP32 上进行内存管理至关重要——Razorpay 的 JSON 响应需要对 DynamicJsonDocument 的大小进行精确控制。
• 在 TFT 屏幕上显示二维码图像需要将基于 URL 的二维码图像数据转换为可绘制的像素矩阵。
• Wi-Fi 重新连接逻辑对于实际的无人值守部署而言至关重要。
• 使用 Razorpay 企业令牌认证时,必须在 HTTP 头部中对数据进行正确的 Base64 编码,此操作需在 C 代码固件中完成。
• 在不进行完全重启的情况下切换 AP 模式和站模式,需要对 esp_wifi 状态进行精细管理。
未来改进措施
• 增加一个触摸屏键盘,用于在设备上进行金额输入。
• 集成 HTTPS(TLS)以实现完全加密的 API 通信。
• 以时间戳形式对所有交易进行 SD 卡记录。
• 通过 ESP-IDF 的 OTA 分区实现无线空中固件更新。
• 电池 + 太阳能防护罩,适用于户外自动售货设备的部署。
• 通过云配置面板实现多币种和多商户支持。
结论
该项目展示了如何将一款成本低廉的 ESP32 微控制器转变为一个功能完备、适用于量产的 UPI 支付终端,并将其与 Razorpay 强大的支付基础设施相结合。嵌入式固件、PHP 后端以及在 TFT 显示屏上实时生成二维码的结合,为印度各地的自助服务亭、自动售货机和智能物联网系统带来了经济实惠且可扩展的无现金支付自动化解决方案。
对于那些希望大规模构建或扩展此类硬件与软件集成的团队而言,专业的嵌入式软件开发服务能够加快开发进程、确保生产稳定性,并根据特定的部署环境定制固件。
本文编译自hackster.io





