sil*_*npi 8 php security paypal paypal-ipn
如何确认对指定notifyURL的PayPal IPN POST请求确实来自PayPal?
我并不是说将数据与我之前发送的数据进行比较,但是如何验证此PayPal请求来自的服务器/ IP地址确实是有效的?
Amb*_*ber 15
IPN协议包括三个步骤:
- PayPal会向您的IPN侦听器发送一条消息,通知您该事件
- 您的监听器将完整的未更改的消息发送回PayPal; 消息必须包含相同顺序的相同字段,并以与原始消息相同的方式进行编码
- PayPal会发回一个单词,如果邮件来自PayPal则为VERIFIED,如果与最初发送的内容有任何差异,则为VERALID
https://cms.paypal.com/us/cgi-bin/?cmd=_render-content&content_ID=developer/e_howto_admin_IPNIntro
Lob*_*bos 11
根据PayPal的建议,这是我发现的最简单的方法.我使用http_build_query()从paypal发送到网站的帖子构建网址.Paypal文档声明您应该将其发送回来进行验证,这就是我们对file_get_contents的处理方式.你会注意到我使用strstr来检查'VERIFIED'这个词是否存在,所以我们继续在函数中,如果不是,我们返回false ...
$verify_url = 'https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&' . http_build_query( $_POST );
if( !strstr( file_get_contents( $verify_url ), 'VERIFIED' ) ) return false;
Run Code Online (Sandbox Code Playgroud)