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 相关文章推荐
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
fleaphp crud操作之find函数的使用方法
Apr 23 PHP
php引用计数器进行垃圾收集机制介绍
Sep 19 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
WordPress中注册菜单与调用菜单的方法详解
Dec 18 PHP
PHP创建自己的Composer包方法
Apr 09 PHP
PHP使用XMLWriter读写xml文件操作详解
Jul 31 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
PHP strripos函数用法总结
Feb 11 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 PHP
PHP7 其他修改
Mar 09 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中mysql模块部分功能的简单封装
2011/09/30 PHP
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
PHP识别二维码的方法(php-zbarcode安装与使用)
2016/07/07 PHP
PHP pthreads v3下同步处理synchronized用法示例
2020/02/21 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
jQuery中使用Ajax获取JSON格式数据示例代码
2013/11/26 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
jQuery+HTML5实现手机摇一摇换衣特效
2015/06/05 Javascript
js实现加载页面就自动触发超链接的示例
2017/08/31 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
微信小程序使用form表单获取输入框数据的实例代码
2018/05/17 Javascript
vue基于element-ui的三级CheckBox复选框功能的实现代码
2018/10/15 Javascript
说说Vue.js中的functional函数化组件的使用
2019/02/12 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
javascript canvas封装动态时钟
2020/09/30 Javascript
python遍历文件夹并删除特定格式文件的示例
2014/03/05 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python语言描述随机梯度下降法
2018/01/04 Python
Python中协程用法代码详解
2018/02/10 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
python实现flappy bird小游戏
2018/12/24 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python实现猜数字游戏
2020/03/25 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
Python如何在main中调用函数内的函数方式
2020/06/01 Python
python 利用matplotlib在3D空间中绘制平面的案例
2021/02/06 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
应届生学校辅导员求职信
2013/11/07 职场文书
外贸业务员的岗位职责
2013/11/23 职场文书
幼儿园小班评语大全
2014/04/17 职场文书
Python-typing: 类型标注与支持 Any类型详解
2021/05/10 Python
vue数据字典取键值项目的字典问题
2022/04/12 Vue.js
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL