PHP整合PayPal支付


Posted in PHP onJune 11, 2015

简单整理一下PHP项目整合PayPal支付功能。

一、表单的构建:

<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验证部分

<?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;
}
}
}
?>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
一个从别的网站抓取信息的例子(域名查询)
Oct 09 PHP
smarty的保留变量问题
Oct 23 PHP
解决Codeigniter不能上传rar和zip压缩包问题
Mar 07 PHP
phpstorm配置Xdebug进行调试PHP教程
Dec 01 PHP
PHP中抽象类、接口的区别与选择分析
Mar 29 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
Apr 18 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
Yii 2.0在Grid中格式化时间方法示例
Jun 06 PHP
php实现的统计字数函数定义与使用示例
Jul 26 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
Laravel框架中缓存的使用方法分析
Sep 06 PHP
基于PHP实现邮箱验证激活过程详解
Oct 28 PHP
php 在线导入mysql大数据程序
Jun 11 #PHP
php简单图像创建入门实例
Jun 10 #PHP
php使用GD库创建图片缩略图的方法
Jun 10 #PHP
php使用Jpgraph绘制3D饼状图的方法
Jun 10 #PHP
php使用Jpgraph绘制饼状图的方法
Jun 10 #PHP
php使用Jpgraph绘制柱形图的方法
Jun 10 #PHP
php使用Jpgraph绘制复杂X-Y坐标图的方法
Jun 10 #PHP
You might like
PHP经典的给图片加水印程序
2006/12/06 PHP
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
php替换超长文本中的特殊字符的函数代码
2012/05/22 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
PHP防止刷新重复提交页面的示例代码
2015/11/11 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
一段实时更新的时间代码
2006/07/07 Javascript
arguments对象
2006/11/20 Javascript
javascript中的注释使用与注意事项小结
2011/09/20 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
实现checkbox全选、反选、取消JavaScript小脚本异常
2014/04/10 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
JavaScript中原型和原型链详解
2015/02/11 Javascript
解析vue中的$mount
2017/12/21 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
详解Vue.js v-for不支持IE9的解决方法
2018/12/29 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
Python解释执行原理分析
2014/08/22 Python
浅析Python中的for 循环
2016/06/09 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
pytorch获取模型某一层参数名及参数值方式
2019/12/30 Python
windows上彻底删除jupyter notebook的实现
2020/04/13 Python
Keras—embedding嵌入层的用法详解
2020/06/10 Python
python实现企业微信定时发送文本消息的实例代码
2020/11/25 Python
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
Lacoste美国官网:经典POLO衫品牌
2016/10/12 全球购物
澳洲的服装老品牌:SABA
2018/02/06 全球购物
馥蕾诗美国官网:Fresh美国
2019/10/09 全球购物
综治宣传月活动总结
2014/04/28 职场文书
大学生党员承诺书
2014/05/20 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫