问题描述
我正在尝试使用 Square API 构建结帐。我收到以下错误:
'order.total_money.amount' 必须大于 1。
我正在发送:
<cfset stFields = {
"idempotency_key": "*******-258a-402e-abb5-fee8e3d16884","redirect_url": "https://graftondecafundraising.org/SquareOrderComplete.cfm","order": {
"total_money":{
"amount": 900},"idempotency_key": "******-258a-402e-abb5-fee8e3d16884","order": {
"location_id": "******C7F3RZ1S5","customer_id": "customer_id","reference_id": "reference_id"
}
},"ask_for_shipping_address": false,"merchant_support_email": "merchant+support@website.com","pre_populate_buyer_email": "example@email.com"
}
>
预先感谢您的任何建议!
解决方法
问题出在 CF2016 中,当序列化 JSON 时,CF 没有将金额作为整数发送,即使您将其包装为 INT(#value#)。在 CF2018 和 CF2021 中,序列化 JSON 将值创建为整数,Square 很高兴。我们在 2016 年、2018 年和 2021 年测试了完全相同的代码。它在 2016 年失败,但在较新版本中运行良好。
,这发生在很多支付 API 中,金额以美分为单位,而不是美元。
https://developer.squareup.com/reference/square/objects/Money
金额 - 整数
货币金额,以货币表示的货币的最小面额表示。例如,当货币为美元时,金额以美分为单位。货币金额可以是正数或负数。请参阅特定字段说明以确定特定情况下标志的含义。
不记得以前的公司集成了哪个 API,但发送 amount: 0
触发了全额退款。当涉及到钱时,确实需要阅读文档。