简单整理一下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;
}
}
}
?>
|
以上所述就是本文的全部内容了,希望大家能够喜欢。