简单整理一下PHP项目整合PayPal支付功能。
一、表单的构建:
?
1
2
3
4
5
6
7
8
9
10
11
12
|
< form method = "post" name = "form" action = "https://www.paypal.com/cgi-bin/webscr" >
< input type = "hidden" name = "rm" value = "2" />
< input type = "hidden" name = "cmd" value = "_xclick" />
< input type = "hidden" name = "business" value = "商家账号" />
< input type = "hidden" name = "return" value = "返回网址" />
< input type = "hidden" name = "cancel_return" value = "取消返回网址" />
< input type = "hidden" name = "notify_url" value = "用于接收PayPal发送的即时付款通知的URL,必须是有效的URL" />
< input type = "hidden" name = "item_name" value = "物品名称" />
< input type = "hidden" name = "item_number" value = "可用于跟踪购买或捐赠的传递变量,在付款完成时传回给您" />
< input type = "hidden" name = "amount" value = "物品的价格(购物车中所有物品的总价格" />
< input type = "hidden" name = "currency_code" value = "币种" />
</ form >
|
二、IPN验证部分
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
<?php
class paypal {
var $ipn_data = array (); // array contains the POST values for IPN
var $fields = array (); // 提交给Paypal的表单参数,例:item_name=iPhone 6,quantity=1,amount=499,currency_code=USD等所有表单信息,
// 在调用验证IPN之前事先需要初始化好
var $paypal_url = 'https://www.paypal.com/cgi-bin/webscr' ;//sandbox:https://www.sandbox.paypal.com/cgi-bin/webscr
function validate_ipn() { //验证IPN
// parse the paypal URL
$url_par = parse_url ( $this ->paypal_url);
// generate the post string from the _POST vars aswell as load the
// _POST vars into an arry so we can play with them from the calling
// script.
$post_str = '' ;
foreach ( $_POST as $field => $value ) {
$this ->ipn_data[ "$field" ] = $value ;
$post_str .= $field . '=' .urlencode( stripslashes ( $value )). '&' ;
}
$post_str .= "cmd=_notify-validate" ; // append ipn command
// open the connection to paypal
$fp = fsockopen ( $url_par [host], "80" , $errnum , $errstr ,30);
if (! $fp ) {
// could not open the connection.
return false;
} else {
// Post the data back to paypal
fputs ( $fp , "POST " . $url_par [path]. " HTTP/1.1\\r\\n" );
fputs ( $fp , "Host: " . $url_par [host]. "\\r\\n" );
fputs ( $fp , "Content-type: application/x-www-form-urlencoded\\r\\n" );
fputs ( $fp , "Content-length: " . strlen ( $post_str ). "\\r\\n" );
fputs ( $fp , "Connection: close\\r\\n\\r\\n" );
fputs ( $fp , $post_str . "\\r\\n\\r\\n" );
// loop through the response from the server and append to variable
while (! feof ( $fp )) {
$this ->validate_ipn_response .= fgets ( $fp , 1024);
}
fclose( $fp ); // close connection
}
if ( eregi ( "VERIFIED" , $this ->validate_ipn_response)) {
return true;
} else {
return false;
}
}
}
?>
|
以上所述就是本文的全部内容了,希望大家能够喜欢。
相关文章
猜你喜欢
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 64M VPS建站:是否适合初学者操作和管理? 2025-06-10
- ASP.NET自助建站系统中的用户注册和登录功能定制方法 2025-06-10
TA的动态
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
您的支持,是我们最大的动力!
热门文章
-
2025-06-04 37
-
2025-05-25 52
-
2025-05-25 56
-
2025-06-04 81
-
2025-05-29 36
热门评论