使用非托管 PayPal 按钮时如何使用 IPN 验证 PayPal 数据
Posted
技术标签:
【中文标题】使用非托管 PayPal 按钮时如何使用 IPN 验证 PayPal 数据【英文标题】:How to validate PayPal data with IPN when using non-hosted PayPal button 【发布时间】:2017-02-25 04:13:30 【问题描述】:我对 php 和添加支付网关比较陌生
但是,我想学习并在一家小商店尝试一下,该商店有一个 Paypal 立即购买按钮,该按钮链接到 PHP cookie 购物车
它工作正常并显示购物车中的物品列表,但我担心它不够安全,有人可能会更改金额或添加他们的电子邮件地址以便他们收到资金
我想集成即时支付通知(IPN):https://www.paypal.com/uk/cgi-bin/webscr?cmd=p/acc/ipn-info-outside
除了按照上述说明在商家帐户中创建 IPN 之外,我还需要做更多的事情吗?
我对 POST 代码的含义以及如何将其集成到我的按钮代码中感到有些困惑
请有人解释一下我需要在下面的 Paypal 按钮代码中进行哪些更改,以确保支付系统的安全?我一直在打破它
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="hidden" name="cmd" value="_cart">
<input type="hidden" name="upload" value="1">
<!--input type="hidden" name="item_name_1" value="Something Cool">
<input type="hidden" name="quantity_1" value="5">
<input type="hidden" name="amount_1" value="1"-->
<?php
$i = 0;
foreach (json_decode($_COOKIE['cart_items_cookie']) as $key => $value)
$i++;
echo '<input type="hidden" name="item_name_'.$i.'" value="'.$value->name.'">';
echo '<input type="hidden" name="amount_'.$i.'" value="'.$value->price.'">';
?>
<input type="hidden" name="upload" value="1">
<input type="hidden" name="business" value="me@mysite.com">
<input type="hidden" name="item_name" value="Order#21874">
<input type="hidden" name="currency_code" value="GBP">
<!--<input type="hidden" name="amount" value="<?php //echo $_GET['total'];? > "> -->
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHosted">
<input type="image" src="https://www.paypalobjects.com/en_US/GB/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" >
<img border="0" src="https://www.paypalobjects.com/en_GB/i/scr/pixel.gif" >
</form>
非常感谢任何帮助或指出正确方向!
【问题讨论】:
【参考方案1】:最好的办法是使用Express Checkout API 而不是付款标准(html 表单)。这需要更多的编程和使用 API 调用,但是,我有一个PayPal PHP class library,您可以使用它来使所有调用变得非常快速和轻松。
Express Checkout 完全隐藏了有关付款的所有信息,而且它提供的功能比 Standard 多得多。
如果您想坚持使用标准,您可以通过在您的 PayPal 帐户中创建按钮来构建托管按钮,并确保选择“将按钮保存在 PayPal”选项。这就是它被托管的原因。
然后,您仍然可以将 HTML 粘贴到您希望显示付款按钮的网站中,但它只有几行,其中一行将显示“hosted_button_id”。
这可以防止按钮像您提到的那样被篡改,但通常会限制您可以对结帐进行的自定义。
【讨论】:
嘿,感谢您的帮助,很抱歉回复晚了。在我问了这个问题之后,我实际上意识到我应该使用结帐 API,现在正在努力,谢谢你的链接,我会看看,你认为我能用有限的 PHP 知识做到这一点吗?我想说的是基本水平。我有很多 html 和 css 知识,但我只是在学习大多数东西。我使用的是非托管的,我可以将按钮链接到我的购物车,就像你说的那样定制是有限的以上是关于使用非托管 PayPal 按钮时如何使用 IPN 验证 PayPal 数据的主要内容,如果未能解决你的问题,请参考以下文章
Paypal:托管按钮付款失败,代码=AMOUNT_ERROR