- 浏览: 404729 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
goahead2010:
有用
JS遍历对象或者数组 -
bishibaodian:
不要在这样找笔试题了,一次就这么几个,还没过瘾就没有了,去安装 ...
整理了一份招PHP高级工程师的面试题 -
smallearth:
不错
整理了一份招PHP高级工程师的面试题 -
ipodao:
暂时没发现啊!
IE域名带有下划线导致的session丢失 -
ipodao:
谢了
JS遍历对象或者数组
1.注册开发者账号,注册完登陆,然后新建一个Business账号和一个Personal账号,然后选择一个账号登陆,可以看到一些明细之类的东东,
2.几个地址
a.return ---就是付款完成之后返回的页面
b.notify_url ---付完款之后PayPal通知你的页面,这个页面会处理逻辑(包括接受IPN信息,验证, 判断是否付款完成以及你付款完成之后的后续逻辑处理)
c.cancel_return ----就是在跳到付款页面直接取消回到的页面
3.你的页面上生成一个form表单,然后把你的需要支付的信息放到表单的hidden里面,例如:
<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post"> <input type="hidden" name="cmd" value="_xclick"> <input type="hidden" name="business" value="business email"> <!--接受付款的账号 > <input type="hidden" name="item_name" value="cash"> <input type="hidden" name="amount" value="0.5"> <input type="hidden" name="currency_code" value="HKD"> <input type="hidden" name="return" value="http://xxx/paypal_return.php"> <input type="hidden" name="invoice" value="82"> <input type="hidden" name="charset" value="utf-8"> <input type="hidden" name="no_shipping" value="1"> <input type="hidden" name="no_note" value=""> <input type="hidden" name="notify_url" value="http://xxx/paypal_notify.php"> <input type="hidden" name="rm" value="82"> <input type="hidden" name="cancel_return"value="http://xxx/paypal_cancel.php"> <input type="submit" value="submit"> </form>
4.最重要的paypal.notify.php页面
a.接受Paypal post给你的数据,完全按照收到表单变量时的原样发送所有收到的表单变量。您还需要将一个值为“_notify-validate”的名为“cmd”变量(例如,cmd=_notify-validate)附加到 POST 字符串。
b.然后把post过来的数据加上标签和修改的cmd请求PayPal页面
c.PayPal将回复该 POST,并在回复的正文中包含一个单词“VERIFIED”或“INVALID”。当您收到 VERIFIED 回复时, 在实施订单之前执行若干检查:
@确认“payment_status”为“Completed”,因为系统也会为其他结果(如“Pending”或“Failed”)发送 IPN。
@检查“txn_id”是否未重复,以防止欺诈者重复使用旧的已完成的交易。
@验证“receiver_email”是已在您的PayPal账户中注册的电子邮件地址,以防止将付款发送到欺诈者的账户 。
@检查其他交易详情(如物品号和价格),以确认价格未改变完成了以上检查后,您可以使用 IPN 数据更新您的DB,并 处理购物。
@如果收到“无效”通知,则应将其视为可疑通知,并应对其进行调查。
d.最后正式部署的时候需要去掉sandbox
<?php //reading raw POST data from input stream. reading pot data from $_POST may cause serialization issues since POST data may contain arrays $raw_post_data = file_get_contents('php://input'); $raw_post_array = explode('&', $raw_post_data); $myPost = array(); foreach ($raw_post_array as $keyval) { $keyval = explode ('=', $keyval); if (count($keyval) == 2) $myPost[$keyval[0]] = urldecode($keyval[1]); } // read the post from PayPal system and add 'cmd' $req = 'cmd=_notify-validate'; if(function_exists('get_magic_quotes_gpc')) { $get_magic_quotes_exits = true; } foreach ($myPost as $key => $value) { if($get_magic_quotes_exits == true && get_magic_quotes_gpc() == 1) { $value = urlencode(stripslashes($value)); } else { $value = urlencode($value); } $req .= "&$key=$value"; } $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://www.sandbox.paypal.com/cgi-bin/webscr'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); curl_setopt($ch, CURLOPT_POSTFIELDS, $req); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Host: www.paypal.com')); // In wamp like environment where the root authority certificate doesn't comes in the bundle, you need // to download 'cacert.pem' from "http://curl.haxx.se/docs/caextract.html" and set the directory path // of the certificate as shown below. // curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/cacert.pem'); $res = curl_exec($ch); curl_close($ch); /* file_put_contents(dirname(__FILE__) . '/payresp/rc_req.txt', print_r($req, true)); file_put_contents(dirname(__FILE__) . '/payresp/rc_resp.txt', print_r($res, true)); file_put_contents(dirname(__FILE__) . '/payresp/rc_post.txt', print_r($_POST, true)); */ // assign posted variables to local variables $item_name = $_POST['item_name']; $item_number = $_POST['item_number']; $payment_status = $_POST['payment_status']; $payment_amount = $_POST['mc_gross']; $payment_currency = $_POST['mc_currency']; $txn_id = $_POST['txn_id']; $receiver_email = $_POST['receiver_email']; $payer_email = $_POST['payer_email']; if (strcmp ($res, "VERIFIED") == 0) { // check the payment_status is Completed // check that txn_id has not been previously processed // check that receiver_email is your Primary PayPal email // check that payment_amount/payment_currency are correct // process payment } else if (strcmp ($res, "INVALID") == 0) { // log for manual investigation } ?>
发表评论
-
引用和global
2013-02-01 18:05 839<?php $var1 = 1; $var ... -
面向对象之多态
2013-02-01 17:49 986Java实现 //定义接口Animal interf ... -
PHP HTTP Authentication
2012-11-22 17:39 893<?php $config['admin_ ... -
PHP实现的栈
2012-11-16 13:44 976<?php class Stack{ ... -
pearl && pecl
2012-09-21 15:02 962Pear:是PHP的扩展代码包,所有的扩展均以PHP代码的形式 ... -
PHP中 Magic quotes
2012-06-26 17:45 1332什么是 Magic Quotes? Magic Quo ... -
php请求
2012-06-20 15:25 973wev-server处理一个php请求,是给 ... -
一个CURD的demo
2012-06-13 16:19 0一个后台管理的demo -
php
2012-06-09 18:22 0redis是个单线程的程序,为什么会这么快呢?每秒100 ... -
PHP的工作模型
2012-06-05 17:16 1371http://www.mike.org.cn/arti ... -
phpstorm3.0以下的注册码
2012-03-31 09:52 906EMBRACE ===== LICENSE B ... -
call_user_func函数和call_user_func_array函数
2012-03-09 14:56 10031.call_user_func函数是当需要动态调用函数时,才 ... -
SNS
2012-03-08 16:09 01.AS可以打包多个请求成一个包然后一起发送,服务端然后一个一 ... -
PHP this,self 和 parent 关键字
2012-02-29 22:23 889我们先建立几个概念,这三个关键字分别是用在什么地方 呢? ... -
一些截取的函数
2012-02-29 18:33 0<?php $str = 'abcdk123 ... -
细说PHP中strlen和mb_strlen的区别
2012-02-29 16:53 1316在PHP中,strlen与mb_strlen ... -
PHP数据库
2012-02-28 16:36 0但对于 PHP 语言来说它是放在 Apache 上的,每一个请 ... -
PHP取权重
2012-02-17 14:42 1062在实际的开发过程中,经常会用到一些几率的时间,例如有这样一个奖 ... -
整理了一份招PHP高级工程师的面试题
2012-02-08 09:04 422371. 基本知识点 HTTP协议中几个状态码的含义:1xx( ... -
浅谈 PHP-MySQL, PHP-MySQLi, PDO 的差异
2012-02-06 16:13 1172http://blog.roga.tw/2010/06/%E6 ...
相关推荐
4. PHP集成PayPal API: 对于PHP开发者,可以使用PayPal的PHP SDK或者直接发起cURL请求。PayPal的PHP SDK提供了更方便的接口封装。以下是一个创建支付的PHP示例: ```php require __DIR__ . '/vendor/autoload....
在本文中,我们将深入探讨如何在PHP环境中集成PayPal接口,并提供有关下载的PHP代码的详细解析。PayPal是全球广泛使用的在线支付平台,为商家和消费者提供了安全、便捷的交易方式。对于开发者来说,集成PayPal接口是...
**三、PHP集成PayPal** 在PHP中,可以使用cURL库来发送HTTP请求,或者使用PayPal的PHP SDK。例如,通过NVP接口,你需要构建一个包含所有必要参数的关联数组,如`L_PAYMENTREQUEST_0_NAME0`代表商品名称,`PAYMENT...
PayPal的PHP集成主要包括以下关键步骤: 1. **配置PayPal SDK**:首先,需要安装PayPal的官方PHP SDK,可以通过Composer在项目中添加依赖。这将提供与PayPal API交互所需的所有类库。 2. **创建支付**:在用户点击...
PHP程序员可以通过集成PayPal API来轻松地在自己的网站上实现支付功能。 **PayPal IPN(Instant Payment Notification)** IPN是PayPal提供的一种交易状态通知机制。每当交易发生状态变化,比如支付完成、退款或...
对于开发者来说,集成PayPal支付接口到PHP项目中是一项关键任务,本文档将详细介绍这一过程。 PayPal接口的接入涉及到的主要概念之一是IPN(Instant Payment Notification)。IPN是一种由PayPal设计的交易状态通知...
【PayPal的PHP购物车】是一个使用PHP编程语言实现的电子商务解决方案,专为集成PayPal支付接口而设计。这个购物车系统允许用户在网站上选择商品,并通过PayPal的支付平台进行安全的在线交易。系统的主要功能包括商品...
【标题】"PP_PHP_NVP_Samples.zip" 是一个与PayPal集成相关的代码样本压缩包,专注于PHP...通过学习和应用这些示例,开发者能够掌握在PHP项目中集成PayPal支付的基本步骤,从而为用户提供安全、便捷的在线支付体验。
集成PayPal PHP通常包括以下步骤: 1. **配置认证**:设置API凭据,包括API用户名、密码和签名(对于NVP)或客户端ID和秘密(对于REST)。 2. **创建支付**:根据业务需求,构建支付对象,指定金额、货币类型、...
在本文中,我们将深入探讨如何在Laravel框架中集成PayPal的即时支付通知(Instant Payment Notification,IPN)服务。Laravel是一个流行的PHP框架,它提供了优雅的语法和丰富的功能,使得开发工作变得简单高效。而...
"paypal-php"项目是一个专门为PHP开发人员设计的工具,它简化了与PayPal API的交互,使得在网站或应用程序中集成PayPal支付变得容易。 **PayPal API** PayPal提供了多种API接口,包括NVP(Name-Value Pair)和SOAP...
本文分享了如何在PHP网站中集成PayPal标准支付方式,PayPal是一种广泛使用的在线支付系统,它的标准支付接口可以方便网站开发者快速实现在线支付功能。 首先,开发者需要在网站的结账页面创建一个表单,该表单提交...
PHP PayPal SDK(软件开发工具包)是为开发者设计的,用于与PayPal的支付系统进行集成的库。它允许开发者通过编写PHP代码来实现各种支付功能,如接收在线支付、处理退款、执行即时支付等。在本文中,我们将深入探讨...
在本项目中,我们主要探讨如何使用PHP框架Thinkphp5集成PayPal支付接口,以便为用户提供安全、便捷的在线支付体验。以下将详细介绍这个过程的关键知识点。 1. **Thinkphp5框架**:Thinkphp5是基于PHP语言的一个轻量...
【PayPal官方接口文档】是开发人员在集成PayPal支付系统时的重要参考资料,这份文档包含了所有与PayPal接口相关的详细信息和技术指南。PayPal作为全球知名的在线支付平台,提供了多种支付解决方案,使得商家能够安全...
在PHP环境中集成PayPal IPN,首先需要创建一个接收IPN消息的PHP脚本。这个脚本将与PayPal的服务器进行交互,验证接收到的信息,并根据这些信息更新您的订单状态或执行其他业务逻辑。下面我们将深入探讨这个过程的...
这些文档详细介绍了如何集成PayPal支付服务,包括PHP和Java等编程语言的实现方法。以下是对每个文件内容的简要概述: 1. **PayPal_WPS_Guide_CN_V2.0.pdf**: 这份文档详细阐述了Website Payments Standard (WPS) ...