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 中的代碼,并為我購買的產品支付我想要的任何費用(這是在測試環境中)。
我在這里缺少什么不會使客戶端代碼完全不安全。
添加回答
舉報