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学习资源和链接.
Dec 05 PHP
php 魔术方法使用说明
Oct 20 PHP
apache+php+mysql安装配置方法小结
Aug 01 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
PHP编译安装中遇到的两个错误和解决方法
Aug 20 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
php常用表单验证类用法实例
Jun 18 PHP
PHP邮件群发机实现代码
Feb 16 PHP
PHP的swoole扩展安装方法详细教程
May 18 PHP
php实现图片上传时添加文字和图片水印技巧
Apr 18 PHP
php实现留言板功能(会话控制)
May 23 PHP
如何在Laravel之外使用illuminate组件详解
Sep 20 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伪静态之APACHE篇
2014/06/02 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
红米手机抢购的js代码
2014/03/10 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
JS简单设置下拉选择框默认值的方法
2016/08/20 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
canvas 弹幕效果(实例分享)
2017/01/11 Javascript
Javascript基础回顾之(二) js作用域
2017/01/31 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
微信小程序 wx.request方法的异步封装实例详解
2017/05/18 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
基于js文件加载优化(详解)
2018/01/03 Javascript
详解ES6语法之可迭代协议和迭代器协议
2018/01/13 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
浅谈微信小程序之官方UI框架we-ui使用教程
2018/08/20 Javascript
Vue2.0 v-for filter列表过滤功能的实现
2018/09/07 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
详解Vue前端对axios的封装和使用
2019/04/01 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
flask-socketio实现WebSocket的方法
2018/07/31 Python
python cv2读取rtsp实时码流按时生成连续视频文件方式
2019/12/25 Python
python的setattr函数实例用法
2020/12/16 Python
Python里面如何实现tuple和list的转换
2012/06/13 面试题
幼儿园毕业教师感言
2014/02/21 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
休假证明书
2015/06/24 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
Redis 持久化 RDB 与 AOF的执行过程
2021/11/07 Redis