Submitted by gouki on 2011, June 1, 10:10 PM
这两天在做微博同步,于是对于oauth又重新开始折腾了。其实在之前我也做过类似的笔记,例如这个 关于oauth的几篇文章 ,于是在做这个同步的时候也参考了这些其中的一两篇,比如老王的基于PECL OAuth打造微博应用,但由于我不想加载pecl的oauth库,所以就不能使用了。
于是我就根据官方的SDK进行了处理,但由于需要同时支持两个或更多微博,结果就造成了oauth类的冲突了。而事实上经过测试,还不能加载一个屏蔽一个,因为有些微博对oauth类中的部分做了修改。于是最后我采用了namespace来解决了这个问题。
因为这次我是把weibo的类库做了独立处理,但由于不是每一台服务器都支持5.3的namespace,也在犹豫是不是要重新修正oauth类,但这样之后,官方的SDK我就不能覆盖性的更新了。真纠结呀。
hightman也在重写类似的东西,大家都在重复造轮子,可是怎么办呢?官方万一更新SDK,添加了新接口,我们怎么办,虽然会有一些接口的URL提供我们调用,但总归是直接使用会更方便啦。随便说说而已,目前已经解决,实在吐血的情况下那我就是干脆自己学着新浪他们一样也提供接口。哈哈,做点无耻的事情。。。
Tags: oauth, namespace, weibo, pecl
PHP | 评论:0
| 阅读:16454
Submitted by gouki on 2011, May 26, 6:02 PM
笔记。。。
Yii的cache大家用起来可能是比较爽,直接Yii::app()->cache->get,就over了。在这个时候,我们可以配置相应的cache方式,比如数据库,memcache,apc,eacc.....(太长,记不住),等等。但是,怎么样能够让memcache缓存与文本缓存或其他缓存共用呢?
所以,不要纠结于普通的想法。嗯,在main.php的cache数组元素下,建一个同级数组。如:
'fc' => array(
'class' => 'CFileCache',
'directoryLevel'=>1,
),
然后在项目中就可以直接Yii::app()->fc->get,或者Set了。是不是很方便 ?
Tags: yii, memcache, filecache, apc
PHP | 评论:1
| 阅读:20817
Submitted by gouki on 2011, May 14, 11:01 PM
这是一份比较老的规范了,不是我写的,事实上现在看起来也并不是特别的完善,但不要忘了,它是几年前的东西。
其实规范这玩意,只是大家用来忽悠的一套玩意,说有用吧,其实每个人的习惯都不一样,强制规范一下,确实很痛苦,但是不规范吧,如果团队中开发的人很多,那就非常痛苦了。
事实上我更希望是通过IDE来进行格式化,但,每个人喜欢的IDE都不一样,这确实很痛苦。很让人郁闷。。。嗯 。我的代码一般是用NetBeans进行格式化的。定义好formatter后,按alt+shift+f格式化。
这几句话不错:
XML/HTML代码
- 标准不是项目成功的关键,但可以帮助我们在团队协作中有更高的效率并且更加顺利的完成既定的任务。
- 1. 程序员可以了解任何代码,弄清程序的状况
- 2. 新人可以很快的适应环境
- 3. 防止新接触PHP的人出于节省时间的需要,自创一套风格并养成终生的习惯
- 4. 防止新接触PHP的人一次次的犯同样的错误
- 5. 在一致的环境下,人们可以减少犯错的机会
- 6. 程序员们有了一致的敌人
上附件 。。。
附件: php编码规范.chm (45.93 K, 下载次数:2075)
Tags: php, 编码规范
PHP | 评论:4
| 阅读:20006
Submitted by gouki on 2011, May 6, 11:14 PM
Tags: xss
PHP | 评论:1
| 阅读:16415
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
| 阅读:20668