通过贝宝购买产品时,如何防止用户更改html?

时间:2020-09-28 13:30:06

标签: javascript asp.net

这是贝宝为其结帐按钮提供的javascript代码:

<script>
paypal.Buttons({
    createOrder: function (data, actions) {
         return actions.order.create({
                purchase_units: [{
                      amount: {
                           value: '0.01'  //can't this be changed by clients if it's pulled from the html?
                      }
                }]
         });
    },
    onApprove: function (data, actions) {
          // This function captures the funds from the transaction.
          return actions.order.capture().then(function (details) {
               // This function shows a transaction success message to your buyer.
               alert('Transaction completed by ' + details.payer.name.given_name);
          });
    }
}).render('#paypal-button-container');
</script>

当用户购买商品时,如何制作商品,这样他们就不能简单地用html编辑价格?即应该如何验证服务器端?当他们完成购买后,onApprove就可以运行了。我应该如何将批准信息记录到数据库中?我不想使用ajax公开我的数据库凭据。

1 个答案:

答案 0 :(得分:1)

通常来说,用户可以更改金额或传递的任何其他信息是完全正确的。您绝对不能信任客户。但是在某些情况下,这可能不是很多问题。例如,对于捐赠,您可以有一个“捐赠1美元”按钮一个“捐赠5美元”按钮,用户可以更改实际金额,但是如果他选择捐赠,这并不会真的伤害您3美元或17美元,而不是1美元或5美元,您会收到钱,金额并不重要。

如果您实际上想给客户一些回报,例如虚拟或实物商品,那么您必须让服务器参与订单的实际处理/履行:https://developer.paypal.com/docs/checkout/reference/server-integration/。在这种情况下

  • 显示的按钮与您的服务器对话,并提供所需的订单数据,服务器可以验证订单
  • 用户将使用已验证的订单数据转发到贝宝,并且用户无法更改它
  • 用户填写其凭据,检查订单等,然后确认(或取消订单)
  • paypal重定向回服务器(通过所谓的redirectUrl)
  • 服务器处理已完成的交易,例如开始发货,发送电子邮件等。
  • 服务器将用户转发到显示已完成订单或类似内容的页面
相关问题