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