Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 只有在paypal交易成功并重定向到我的页面后才能运行该功能_Php_Security_Paypal - Fatal编程技术网

Php 只有在paypal交易成功并重定向到我的页面后才能运行该功能

Php 只有在paypal交易成功并重定向到我的页面后才能运行该功能,php,security,paypal,Php,Security,Paypal,我正在构建一个页面,其中包含一些我将通过paypal销售的商品。首先,我做了固定价格的通用按钮,点击后,你重定向到paypal页面,你的值如下: <form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top" class="payPalBtn"> <input type="hidden" name="cmd" value="_xclick"> <input type="

我正在构建一个页面,其中包含一些我将通过
paypal
销售的商品。首先,我做了固定价格的通用按钮,点击后,你重定向到paypal页面,你的值如下:

<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_top" class="payPalBtn">
<input type="hidden" name="cmd" value="_xclick">
<input type="hidden" name="business" value="test@gmail.com">
<input type="hidden" name="item_name" value="test">
<input type="hidden" name="button_subtype" value="services">
<input type="hidden" name="no_note" value="0">
<input type="hidden" name="amount" value="10.00">
<input type="hidden" name="bn" value="PP-BuyNowBF:btn_buynowCC_LG.gif:NonHostedGuest">
<input type="image" src="https://www.paypalobjects.com/he_IL/IL/i/btn/btn_buynowCC_LG.gif" border="0" name="submit" alt="">
<img alt="" border="0" src="https://www.paypalobjects.com/en_US/i/scr/pixel.gif" width="1" height="1">
</form>

但这是非常危险的,因为客户可以更改金额值……这可能会产生一些问题。所以我选择使用他们的API-这意味着,在服务器端发送一些值,如价格、金额。。。ang正在取回
令牌id
。然后再发送一些数据,最后付款被转移,所有的事情都结束了。其中一个参数是:$
PayPalReturnURL
,这是成功结果后的页面,用户重定向到

现在,在我这样做,并验证了付款通过,我想启动一个私人程序,做一些私人功能(每次我运行它,它花费我的钱),应该只做一次,付款通过后。我重定向的页面是:payment.php,在那里我只需启动我的函数


问题是:如何确保用户不会直接进入该PHP地址并自动启动该函数。我的选项是什么?保证在paypal重定向到我之后,此功能只运行一次。

你让它变得复杂了。下面是我如何实现paypal集成的

与输入价格一起在隐藏字段中发送交易编号,如下所示

<input type="hidden" name="amount" value="10.00">
<input type="hidden" name="tx_id" value="1234">
交易完成后,paypal将返回金额、您的发送id和交易状态。使用SELECT查询,您可以检查返回的金额是否与数据库表中的金额相同

SELECT amount FROM table_name WHERE tx_id = 1234

然后,如果正确,将发送状态更改为“已支付”。否则就把它标记为欺诈

为了保护您的按钮,您可以通过设置托管按钮,或者如果您熟悉使用web服务,可以集成

至于自动后订单处理,您不希望在返回URL上这样做。即使PayPal帐户中启用了自动返回功能,也不能保证页面会被点击。如果买家在重定向发生之前关闭浏览器,您的代码将永远无法运行,您的自动化将无法正常工作


为了避免这种情况,并防止人们直接访问您的返回URL,您可以利用。无论用户是否返回您的站点,每次付款都会触发此操作,您可以使用PayPal验证数据,以确保数据确实来自他们,这样人们就不会试图偷偷摸摸地使用您的IPN脚本。

you right@Dasun,但我选择使用那里的API,因为客户基本上可以更改
tx\u i
f和
amount
,并使用这些值…tx\u id由您生成,仅供参考。如果用户更改,验证将失败。所以没有问题你有网站的例子吗?我想仔细检查一下
SELECT amount FROM table_name WHERE tx_id = 1234