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中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
Sep 05 PHP
PHP在线生成二维码(google api)的实现代码详解
Jun 04 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
PHP中可以自动分割查询字符的Parse_str函数使用示例
Jul 25 PHP
php中magic_quotes_gpc对unserialize的影响分析
Dec 16 PHP
WebQQ最新登陆协议的用法
Dec 22 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
php操作xml入门之cdata区段
Jan 23 PHP
PHP 实现类似js中alert() 提示框
Mar 18 PHP
laravel5表单唯一验证的实例代码
Sep 30 PHP
laravel框架实现为 Blade 模板引擎添加新文件扩展名操作示例
Jan 25 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 08 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学习之正则表达式
2011/04/17 PHP
PHP 登录完成后如何跳转上一访问页面
2014/01/14 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
PHP正则判断一个变量是否为正整数的方法
2019/02/27 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
js 数组操作代码集锦
2009/04/28 Javascript
JS 如果改变span标签的是否隐藏属性
2011/10/06 Javascript
jquery写个checkbox——类似邮箱全选功能
2013/03/19 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
让javascript加载速度倍增的方法(解决JS加载速度慢的问题)
2014/12/12 Javascript
理解JS事件循环
2016/01/07 Javascript
浅谈js中的三种继承方式及其优缺点
2016/08/10 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
用vue的双向绑定简单实现一个todo-list的示例代码
2017/08/03 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
基于Vuejs的搜索匹配功能实现方法
2018/03/03 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
详解基于mpvue微信小程序下载远程图片到本地解决思路
2019/05/16 Javascript
JS轮播图的实现方法2
2020/08/25 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
[57:09]DOTA2-DPC中国联赛 正赛 Phoenix vs Dynasty BO3 第一场 1月26日
2021/03/11 DOTA
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
100%羊绒:NakedCashmere
2020/08/26 全球购物
行政部经理助理岗位职责
2014/06/15 职场文书
服务标语口号
2014/07/01 职场文书
科学发展观演讲稿
2014/09/11 职场文书
“四风”问题自我剖析材料思想汇报
2014/09/23 职场文书
欢迎家长标语
2014/10/08 职场文书
银行稽核岗位职责
2015/04/13 职场文书
红高粱观后感
2015/06/10 职场文书