如何在C# .NET WPF应用中集成Square Reader实现卡支付?
WPF集成Square Reader刷卡支付方案指引
一、核心问题解答
可以从WPF应用向Square Reader发送支付请求,Square的Terminal API完全适配你的需求——它就是专门用于通过应用控制Square终端设备(包括Reader系列)完成线下刷卡/非接支付的官方API。
二、具体集成步骤
1. 前置准备
- 确保你的Square开发者账号已开启Terminal API权限,绑定对应Square Reader设备(需完成设备激活,且设备与应用归属同一Square商户账号)
- 通过NuGet安装Square官方.NET SDK(包名
Square) - 确认WPF应用运行环境具备网络连接能力(需与Square Reader及Square服务端通信)
2. 核心集成流程
(1)初始化Square客户端
在WPF应用中初始化SDK客户端,区分沙箱/生产环境传入对应密钥:
var squareClient = new SquareClient.Builder() .AccessToken("YOUR_ACCESS_TOKEN") .Environment(Square.Environment.Sandbox) // 生产环境替换为Production .Build();
(2)创建并推送支付请求到Reader
通过Terminal API构建支付请求,指定金额、目标设备ID等参数,Square会自动将请求下发到绑定的Reader设备:
var requestBody = new CreateTerminalCheckoutRequest.Builder() .IdempotencyKey(Guid.NewGuid().ToString()) // 幂等键,避免重复请求 .TerminalCheckout(new TerminalCheckout.Builder() .AmountMoney(new Money.Builder() .Amount(100) // 单位为最小货币单位,此处代表1美元 .Currency("USD") .Build()) .DeviceId("YOUR_READER_DEVICE_ID") // 从Square开发者后台或设备本地获取 .Build()) .Build(); var response = await squareClient.TerminalApi.CreateTerminalCheckoutAsync(requestBody);
(3)监听支付状态
支付请求发送后,可通过轮询(调试场景)或Webhook(生产环境推荐)监听状态变化,在WPF端更新UI:
// 轮询状态示例(生产环境建议用Webhook减少请求开销) var retrieveRequest = new RetrieveTerminalCheckoutRequest.Builder() .TerminalCheckoutId(response.TerminalCheckout.Id) .Build(); TerminalCheckout checkoutStatus; do { await Task.Delay(2000); var statusResponse = await squareClient.TerminalApi.RetrieveTerminalCheckoutAsync(retrieveRequest); checkoutStatus = statusResponse.TerminalCheckout; } while (checkoutStatus.Status is "PENDING" or "IN_PROGRESS"); // 根据状态处理业务逻辑 if (checkoutStatus.Status == "COMPLETED") { // 支付成功:更新订单状态、提示用户等 } else { // 支付失败/取消:提示错误、允许重试等 }
3. WPF端交互优化
- 发送支付请求前添加确认弹窗,避免误操作
- 支付过程中显示加载动画,提示用户在Reader上完成刷卡/插卡/挥卡操作
- 状态更新时通过WPF的Dispatcher切换到UI线程,避免跨线程UI更新异常
三、关键注意事项
- 沙箱环境可使用Square提供的模拟设备或测试Reader调试,无需真实硬件
- 生产环境需确保Reader设备与WPF应用处于同一网络(部分Reader支持Square云推送,无需同网)
- 需处理设备离线、用户取消支付、金额验证失败等异常场景,添加对应的错误提示与重试逻辑
- 严格遵守Square支付合规要求,确保支付数据传输安全
内容的提问来源于stack exchange,提问作者Jaimin
相关产品推荐
相关产品推荐

