Submitted by gouki on 2011, April 17, 10:52 PM
之所以转载这篇文章,不是因为他实现了多少代码,而是说文章中会有一些遇到的问题和解决方法。
前一段时间也做了alipay和tenpay的接口编码,其实说白了这些东西都差不多。只是因为这篇文章中说的是https接口,会有点不太一样。
alipay和tenpay最终都是跳转到对方的网站上做进一步的支付的,paypal可能不太一样(没仔细折腾过,所以才要转这篇)
上原文:http://shiningray.cn/paypal-ipn.html
最近终于搞定了该死的Paypal ipn,特地在此留下点东西备忘。
所谓paypal ipn(Instant Payment Notification),就是Paypal开发的一种能主动通知第三方卖家系统交易状态的一种机制。IPN的原理很简单,就是当产生了一个交易之后, 交易状态发生变化时,如用户已经付款、或者退款、撤销时,Paypal利用常用的HTTP POST方式,将交易的一些变量提交给网站的某个页面(称之为IPN Handler),当这个页面接受到请求时候,将这些数据原封不动加上一个指示验证的cmd=_notify-validate
,POST回Paypal的接口地址,如果数据正确,那么Paypal返回字符串VERIFIED,否则为INVALID,如果结果为VERIFIED,那么你的程序就可以使用这些数据进行操作。
但代码的调试是一件很痛苦的事情,因为作为第三方开发人员,不可能开两个帐号,每次测试还要之间交易一些钱,所以Paypal专门开发了Sandbox给开发人员进行开发,首先到https://developer.paypal.com/ 注册一个开发帐号,好了之后再进入Sandbox建立测试用的Paypal虚拟帐号(至少应该建立一个Business的和一个Personal的),这 种账号注册方法和Paypal的流程一样,信息可以是假的,包括银行帐号、信用卡(其实Paypal Sandbox会自动生成一些随机的号码)。接下来需要激活Paypal Sandbox的虚拟帐号,注意,这里不管你在Paypal Sanbox注册时填什么邮件地址,有任何发送到虚拟帐号所填邮箱的邮件都存会在开发帐号的管理界面中的Email页(导航栏上有)中。登录 Sandbox的虚拟Paypal环境,还需要验证虚拟帐号的银行,这里可以随便填,然后通过Add Funds来给账户充值(想填多少填多少)。然后,还需要激活IPN的选项,在Business的那个账户的Profile设置页面中,点击,然后点击 Edit按钮,打开IPN,这里如果你使用的是固定的IPN Handle,可以直接将地址填入。
接下来,我们测试的时候,应该将Paypal接口的地址设置为https://www.sandbox.paypal.com/cgi-bin/webscr
最后基本的流程为:
- 用户在我们的网站上选择商品、放入购物车,然后检查准备支付
- 网站根据购物车中的商品,生成Paypal的支付表单(也是提交到上面IPN用的Paypal接口地址),包含了此次交易的一些信息(下次会专门找机会解释一下)。并在自己的数据库中生成一张订单记录。
- Paypal在Session中记录下这些交易信息
- 用户用Paypal账户登录Paypal(Sandbox用Sandbox的虚拟帐号),复查明细,点击Pay按钮
- Paypal进行交易处理,如果我们的Paypal收款帐号在接受帐款上没有什么问题(没有特别的需要在界面上“Accept”的地方),交易完成,那么Paypal会发送一个IPN,并发送提示邮件。
- 我们IPN Handler接受到信息,首先向Paypal进行校验,如果信息正确,然后根据信息和自己数据库中进行比对,如果无误,可以将支付信息保存,并修改订单状态。
- 然后Paypal会显示一个界面表示交易完成,此时如果用户点击“Return”按钮,Paypal会将用户送回我们网站指定地点。
- 我们网站迎接用户回来,向用户表示感谢,并进行提醒,给出订单号等等。
整个流程基本如下,不过其中有很多要注意的地方:
- 我们看到了,接口地址是https开头的,也就是要求使用SSL进行连接, 其实Paypal Sandbox可以使用http,但是最后实际的Paypal接口,不支持http协议,所以如果你用PHP写IPN Handler脚本的话,在验证信息的代码部分,如果简简单单使用fopen、HTTP_Request之类的工具是没用的,PHP的socks库不支持SSL,应该使用curl,有两种方法,一个是使用PHP扩展中的libcurl,Paypal官方发布的SDK中便是使用的这个方法,但Paypal的SDK非常复杂,如果想自己写,可以使用Snoopy,一个简单实用的PHP请求库(它自己说是模拟了浏览器的行为),而它使用的是Curl的可执行文件,通过管道获得结果,而非php的libcurl,所以自己cURL的主页上下载一个支持SSL的编译版本,可能还需要安装OpenSSL,不过对于Linux系统,可能应该会都带。
- 在支付表单中,可以自己设置
notify_url
字段,来指定此次交易的信息应该发送到哪个地方,这样就可以覆盖在Profile中我们的设置,另外,这个字段要进行urlencode
。
- 我们得到的IPN信息中,
status
对应的便是交易状态,如Complete
表示完成,首字母大写,而验证结果则是VERIFIEY
或者INVALID
,全部大写,具体的内容,可以查看Paypal官方的文档订单管理整合指南。
--EOF--
文章虽老,但值得参考一下。
Tags: paypal, payment
PHP | 评论:1
| 阅读:20240
Submitted by gouki on 2011, April 15, 9:07 PM
Misc | 评论:0
| 阅读:13993
Submitted by gouki on 2011, April 14, 10:52 PM
webmatrix,这是微软的又一个重磅炸弹?微软,你究竟想干嘛 ?
Microsoft Web 平台不仅仅是一组功能强大的工具、服务器和技术,它还为网站、服务和应用程序的构建和托管提供了一个完整的生态系统。 无论您是要在网络上树立您公司的形象还是推出下一个 MySpace,我们都有让您走向成功的产品。 Microsoft Web 平台深受世界五百强公司信任,数以百万计的个人都在使用该平台,它一定能够适合您的需要。
看到上面的说明,或许你还没有过份在意,那么,下面这一小段的内容呢?
WebMatrix 是微软最新的 Web 开发工具,它包含了构建网站所需要的一切元素。您可以从开源 Web 项目或者内置的 Web 模板开始,也可以直接从无到有编写代码。简单并且完全是免费的。开发网站从来没有如此简单。为了开始建立网站,您只需要使用 Microsoft Web 平台安装器下载并安装 WebMatrix。这只会占用您短短的5分钟时间。当 WebMatrix 成功安装后,您可以非常方便地获得并下载最新版本的免费 Web 应用,如 WordPress, Joomla!, DotNetNuke 和 Orchard.您会发现 WebMatrix 在一个统一界面中提供了您需要的一切工具的特性,不需要再花费精力于在多种应用工具切换来完成一般性的 Web 开发任务。通过 WebMatrix,您只需要一步点击,即可编辑文件,管理数据库和更改服务器设置等。
看到上面这段呢,你怎么想?PHP/.net都在一起了,这样是否真的完美我不知道,但是这种免配置的功能是否会让网站又会铺天盖地的出来呢?
不过,说实话,我真不担心,要知道,国内还有一个大坎,那就是备案。黑黑,任你想法再多,备案都会卡死你。
更多介绍还是看官方吧:http://www.microsoft.com/web/webmatrix/,如果英文不好,可以切换成中文的。
Tags: webmatrix, php, microsoft, iis, wordpress
Software | 评论:3
| 阅读:22511
Submitted by gouki on 2011, April 13, 10:24 PM
数据去重高效方法
去重的方法有很多,比如用什么Distinct、 Group By Having、临时表等
有兴趣的朋友可以把各种方法对比一下得出直观的效率概况
WITH TEST AS
(
SELECT ROW_NUMBER()
OVER(PARTITION BY Column1,Column2,Column3 ORDER BY ID )
AS NUM,* FROM TableName
)
DELETE FROM TEST
WHERE NUM != 1
百万数据量一分左右(当然也要看机器配置)
---------------------------------------------------------------------
mysql应该是不能执行的。。所以我是说这是纯摘抄而已
DataBase | 评论:0
| 阅读:16180
Submitted by gouki on 2011, April 12, 8:29 PM
看到这个消息的时候,我震惊了,是的,我真的震惊了。
难道说,又将多一款跨平台的IDE?
上菜:
Zend技术和Adobe系统公司今天宣布,推出Flash Builder 4.5 for PHP,它使开发人员能够利用PHP和Flash开发技能,为移动设备,web和桌面平台提供互连网富客户端应用程序。 该产品提供了一个基于ActionScript的Flash客户端开发的IDE: Flash builder4.5,并结合Zend Studio 8的服务器端PHP能力。突出了移动部署能力,这两家厂商表示,应用程序可以提供给谷歌Android,RIM公司黑莓平板操作系统和苹果的iOS系统。 对ios系统,IDE生成本机代码应用程序,而不是运行在苹果的IOS禁止运行的AIR环境(Adobe集成运行环境)的软件。 Android应用同样生成本机代码包。
Zend的首席执行官Andi Gutmans介绍说,“Flash Builder 4.5 for PHP使得??PHP开发人员很容易建立移动应用程序,也使开发人员很容易构建服务器端的移动应用程序。我们都有同样的想法“。应用程序本身可以在W??indows或Mac客户端上建立。
“现在开发人员能够使用一种工具,一个框架和一个通用代码库来??建立应用程序,部署在Android,黑莓和IOS上运行,”Adobe公司产品经理Dave Gruber说。 Flash Builder 4.5 for PHP将在5月11日交付,高级版包含有网络跟踪、内存和性能分析,售价为799美元。标准版没有这些功能将花费399美元。 Adobe和Zend同时宣布正在进行Adobe Creative Suite 5.5产品线的部署。
原文连接
http://www.itworld.com/development/154477/adobe-zend-combine-flash-and-php-development
译文连接
http://www.chinashare.net/?/3216-1-0-1-1.html
欢迎访问中国开发论坛(http://www.chinashare.net),论坛提供delphi/java/.net/php/c/python等开发语言交流平台,欢迎大家前来灌水.
--EOF--
仔细想想,原来也就是eclipse再装个插件。难道ZEND又将PDT之类的插件剥出来了?提供给adobe使用了?哎,文中加深颜色的部分让我激动了一下,我以为是基于FLASH开发的,结果还是Eclipse。。。。这TMD的都是谁写的文章 。。忽悠,大忽悠。。。我还就想了,flash builder什么时候基于actionscript了。。
原文:
The product provides an IDE combining Adobe's Flash Builder 4.5, for ActionScript-based Flash client development, and Zend Studio 8, for server-side PHP capabilities.
大哥,这是翻译成你那句话的吗。。。。。。
Tags: adobe, zend, php, ide
Software | 评论:0
| 阅读:17935