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