【问题标题】:How is this PayPal Integration secure? [duplicate]这个 PayPal 集成如何安全? [复制]
【发布时间】:2021-04-25 12:12:27
【问题描述】:

在此处查看此示例: https://developer.paypal.com/docs/archive/checkout/integrate/

payment: function(data, actions) {
  return actions.payment.create({
    transactions: [{
      amount: {
        total: '30.11',
        currency: 'USD',
        details: {
          subtotal: '30.00',
          tax: '0.07',
          shipping: '0.03',
          handling_fee: '1.00',
          shipping_discount: '-1.00',
          insurance: '0.01'
        }
      },
      description: 'The payment transaction description.',
      custom: '90048630024435',

这存在于客户端可以看到的 JavaScript 中,这如何安全?用户是否可以不只是修改这些值并将总计更改为更小的值以减少支付?

关于他们的“服务器”示例的类似问题,该示例在客户端呈现的 JavaScript 中也存在看似私人信息。

【问题讨论】:

  • 一种常见的方法是使用即时付款通知 (IPN) 来验证 Paypal 的付款状态。当实际支付金额与要求金额不同时,商家将不安排发货,并会进行调查。

标签: paypal


【解决方案1】:

您已链接到不应使用的旧存档文档,但问题是相同的:客户端代码中的任何内容都可以更改。始终可以以较低的金额发送付款。这就是客户端支付的工作方式。


任何用于跟踪有效付款和正确金额的逻辑都必须在您的服务器上。

对于 PayPal Checkout,您应该使用以下前端 UI:https://developer.paypal.com/demo/checkout/#/pattern/server

您的服务器上需要两条对应的路由,一条用于“创建订单”,一条用于“捕获订单”,记录在此:https://developer.paypal.com/docs/business/checkout/server-side-api-calls/#server-side-api-calls

在服务器上捕获时验证正确性。如果错了,不要抓拍。

【讨论】:

    【解决方案2】:
    • 不,你不能那样改变值
    • + 即使您最终以某种方式改变了价值,比如说使用某种可以覆盖有效负载的网络欺骗手段,您最终也会支付修改后的金额,而贝宝和应用程序/所有者都可以清楚地看到和验证
    • 这意味着如果您支付 5 美元而不是 10 美元,应用程序/所有者也会看到相同的 5 美元而不是 10 美元
    • 基本上,您无法在实际没有支付 10 美元的情况下描绘自己支付了 10 美元

    【讨论】:

      猜你喜欢
      • 2011-04-16
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多