2 回答
TA贡献1851条经验 获得超3个赞
您是正确的,用户始终可以更改客户端代码中的金额,并发送较低金额的付款。这就是客户端付款的工作方式。
任何用于跟踪哪些付款是真实的以及正确金额的逻辑都必须在您的服务器上。
对于 PayPal Checkout,这是您应该使用的前端 UI:https ://developer.paypal.com/demo/checkout/#/pattern/server
您的服务器上需要两条相应的路线,一条用于“创建订单”,一条用于“捕获订单”。您可以使用其中一个Checkout-lanuagename-SDK
(编辑:虽然这些现在已被弃用)用于路由对 PayPal 的 API 调用,或者您自己的 HTTPS 实现,首先获取访问令牌然后进行调用(有一个完整的堆栈主要 PayPal Checkout 指南中的 node.js 中的示例,但它可以使用任何后端服务器语言来完成)。
这两个路由都应该只返回 JSON 数据(没有 HTML 或文本)。在第二条路线中,当捕获 API 成功时,您应该验证金额是否正确并将其生成的付款详细信息存储在您的数据库中(特别purchase_units[0].payments.captures[0].id
是 PayPal 交易 ID)并执行任何必要的业务逻辑(例如发送确认电子邮件或在将返回的 JSON 转发给前端调用者之前立即保留产品) 。如果发生错误,也转发它的 JSON 详细信息,因为前端必须处理此类情况。
TA贡献1827条经验 获得超9个赞
对不起,但这对我来说似乎仍然很不安全。一旦您在 paypal javascript 标签中提供了您的客户端 ID,那么任何优秀的黑客都可以在 Google 或 Firefox 等中使用 devtools,并将您的 paypal.buttons 代码替换为他们自己的 paypal.buttons 代码,然后愉快地将交易发送到 paypal无需使用您的客户端代码或服务器代码。
我对这个理论做了一些测试,在五分钟或更短的时间内,我能够重做客户端 javascript 中的代码,并为我购买的产品支付我想要的任何费用(这是在测试环境中)。
我在这里缺少什么不会使客户端代码完全不安全。
添加回答
举报