PHP整合PayPal支付
简单整理一下PHP项目整合PayPal支付功能。
一、表单的构建:
<formmethod="post"name="form"action="https://www.paypal.com/cgi-bin/webscr"> <inputtype="hidden"name="rm"value="2"/> <inputtype="hidden"name="cmd"value="_xclick"/> <inputtype="hidden"name="business"value="商家账号"/> <inputtype="hidden"name="return"value="返回网址"/> <inputtype="hidden"name="cancel_return"value="取消返回网址"/> <inputtype="hidden"name="notify_url"value="用于接收PayPal发送的即时付款通知的URL,必须是有效的URL"/> <inputtype="hidden"name="item_name"value="物品名称"/> <inputtype="hidden"name="item_number"value="可用于跟踪购买或捐赠的传递变量,在付款完成时传回给您"/> <inputtype="hidden"name="amount"value="物品的价格(购物车中所有物品的总价格"/> <inputtype="hidden"name="currency_code"value="币种"/> </form>
二、IPN验证部分
<?php
classpaypal{
var$ipn_data=array();//arraycontainsthePOSTvaluesforIPN
var$fields=array();//提交给Paypal的表单参数,例:item_name=iPhone6,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
functionvalidate_ipn(){//验证IPN
//parsethepaypalURL
$url_par=parse_url($this->paypal_url);
//generatethepoststringfromthe_POSTvarsaswellasloadthe
//_POSTvarsintoanarrysowecanplaywiththemfromthecalling
//script.
$post_str='';
foreach($_POSTas$field=>$value){
$this->ipn_data["$field"]=$value;
$post_str.=$field.'='.urlencode(stripslashes($value)).'&';
}
$post_str.="cmd=_notify-validate";//appendipncommand
//opentheconnectiontopaypal
$fp=fsockopen($url_par[host],"80",$errnum,$errstr,30);
if(!$fp){
//couldnotopentheconnection.
returnfalse;
}else{
//Postthedatabacktopaypal
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");
//loopthroughtheresponsefromtheserverandappendtovariable
while(!feof($fp)){
$this->validate_ipn_response.=fgets($fp,1024);
}
fclose($fp);//closeconnection
}
if(eregi("VERIFIED",$this->validate_ipn_response)){
returntrue;
}else{
returnfalse;
}
}
}
?>
以上所述就是本文的全部内容了,希望大家能够喜欢。