You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Square .NET SDK中CreatePaymentRequest.Builder不识别amountMoney参数问题

Square .NET SDK 32.0.0 创建支付请求报错问题解决

问题场景

我正在尝试使用Square .NET SDK(版本32.0.0)实现支付功能,相关代码如下:

var client = new SquareClient.Builder()
            .Environment(Square.Environment.Sandbox) // 生产环境用.Environment(Square.Environment.Production)
            .AccessToken(_accessToken)
            .Build();

var paymentsApi = client.PaymentsApi;

var money = new Money.Builder()
            .Amount((long)(amount * 100)) // Square API 金额单位为分
            .Currency("USD")
            .Build();

var paymentRequest = new CreatePaymentRequest.Builder(
        sourceId: cardId,
        idempotencyKey: zero,
        amountMoney: money) // 错误发生在此处
    .LocationId(locationId)
    .Build();

收到如下编译错误:

Severity Code Description Project File Line Suppression State
Error CS1739 The best overload for 'Builder' does not have a parameter named 'amountMoney' AURA C:\Users\NICHOLASFLEETWOOD\Documents\Code\DOWNLOADS\AURA-master\Factories\SquarePaymentFactory.cs 177 Active

查看CreatePaymentRequest.Builder的定义,它包含amountMoney私有字段以及AmountMoney(Money amountMoney)方法,但构造函数似乎不支持传入amountMoney命名参数,请问哪里操作有误?

解决方法

问题出在Builder模式的用法上——CreatePaymentRequest.Builder的构造函数只接受sourceId和idempotencyKey两个必填参数,amountMoney需要通过链式调用对应的AmountMoney()方法来设置,不能直接作为构造函数的命名参数传入。

修正后的代码:

var paymentRequest = new CreatePaymentRequest.Builder(
        sourceId: cardId,
        idempotencyKey: zero)
    .AmountMoney(money) // 改用链式方法设置金额
    .LocationId(locationId)
    .Build();

这和你创建Money实例时用.Amount()、.Currency()的逻辑完全一致:Square SDK的Builder类中,构造函数仅处理最核心的必填项,其余参数都通过对应的Setter方法(首字母大写的参数名)来配置。

内容的提问来源于stack exchange,提问作者Nick Fleetwood

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 17:14:58