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 相关文章推荐
DOMXML函数笔记
Oct 09 PHP
PHP中通过ADO调用Access数据库的方法测试不通过
Dec 31 PHP
php读取xml实例代码
Jan 28 PHP
phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
Aug 18 PHP
php生成缩略图示例代码分享(使用gd库实现)
Jan 20 PHP
如何让CI框架支持service层
Oct 29 PHP
php递归删除目录与文件的方法
Jan 30 PHP
PHP实现微信红包金额拆分试玩的算法示例
Apr 07 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
PHP文件操作实例总结【文件上传、下载、分页】
Dec 08 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
Mar 22 PHP
解决laravel session失效的问题
Oct 14 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
PHP将二维数组某一个字段相同的数组合并起来的方法
2016/02/26 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
Laravel框架Blade模板简介及模板继承用法分析
2019/12/03 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
jquery CSS选择器笔记
2010/03/29 Javascript
JavaScript去掉空格的方法集合
2010/12/28 Javascript
自己实现string的substring方法 人民币小写转大写,数字反转,正则优化
2012/09/02 Javascript
JavaScript获取DOM元素的11种方法总结
2015/04/25 Javascript
微信小程序 教程之引用
2016/10/18 Javascript
JavaScript版经典游戏之扫雷游戏完整示例【附demo源码下载】
2016/12/12 Javascript
Angularjs实现搜索关键字高亮显示效果
2017/01/17 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
MUI实现上拉加载和下拉刷新效果
2017/06/30 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
Vue发布项目实例讲解
2019/07/17 Javascript
解决layui的form里的元素进行动态生成,验证失效的问题
2019/09/14 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
python中assert用法实例分析
2015/04/30 Python
Python max内置函数详细介绍
2016/11/17 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
pytorch 实现在预训练模型的 input上增减通道
2020/01/06 Python
python 爬取疫情数据的源码
2020/02/09 Python
python如何调用java类
2020/07/05 Python
Python venv虚拟环境配置过程解析
2020/07/08 Python
html5摇一摇代码优化包括DeviceMotionEvent等等
2014/09/01 HTML / CSS
面向对象设计的原则是什么
2013/02/13 面试题
求职推荐信
2013/10/28 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
Ruby处理CSV数据方法详解
2022/04/18 Ruby
小程序实现侧滑删除功能
2022/06/25 Javascript