使用google checkout经验
来源:互联网 发布:ubuntu下的游戏开发 编辑:程序博客网 时间:2024/05/09 15:16
花了几天研究了下google checkout的api实现,这里说下心得经验。
1。什么是google checkout
是google推出的一个支付网关,类似国内的快钱等,目前支持visa,mastercard,以及还有两张不认识的卡。。。付钱时必须要求是其中之一的卡。想体验的可以去picasa或者gmail升级空间就可以看到google的支付方式是他自己的checkout了。另外,这个东东目前不支持中国的(RMB)消费。
基本流程:
买家到网上用信用卡支付
卖家的google checkout单子中会出现一条新记录,此时order stage为reviewing,2分钟左右不能chargeable,此时google在验证信用卡是否可用
状态改变,chargeable,
卖家点击收钱(charge),状态变为charging
收钱成功,状态变为charged
卖家发货(如果需要的话,我是没用到。。)
2。使用前期准备
首先要注册两个帐号,在一个用于支付,一个用于收钱(即商家),这两个都用做测试用。
http://sandbox.google.com/checkout 创建付钱的帐号
http://sandbox.google.com/checkout/sell/ 创建商家收钱的帐号
注,以上这都是在sandbox中做的,即测试用的,如果正式使用需要到checkbox.google.com上注册,帐号可以不一样。
创建过程详见http://code.google.com/intl/zh-CN/apis/checkout/developer/index.html#integration_overview
之后,在http://code.google.com/intl/zh-CN/apis/checkout/samplecode.html 下载示例代码。然后可正式开工。
3。嵌入网站
以PHP为例,可以参考demo下的cartdemo.php。主要是通过2个类来实现购物车,即GoogleCart和GoogleItem。然后通过$cart把item加进去,最后用cart类的成员函数CheckoutButtonCode()输出按钮,给用户提交。当然这是最简单的方法。
这里遇到个问题,在提交之后到google的订单确认页面,但是因为用的中文的关系,在这个页面显示出乱码。由此发现似乎是google示例代码中的一点小错误。在gc_XMLBuilder类中,使用htmlentities函数时,由于默认第3个参数charset 是ISO-8859-1的,造成UTF-8的中文处理有错,主要是货物名以及货物的描述。直接给函数加上第3个参数,值为UTF-8即可,或者多加个类的属性也可,具体看自己的程序了。
另外使用时还可以随意点,并不是必须用他的html代码,提交给google只需cart和signature参数即可
cart=base64_encode($cart->GetXML())
signature=base64_encode($cart->CalcHmacSha1($cart->GetXML())
之后就可以提交付钱了。付钱就用之前申请的测试付钱帐号。
4。回调函数api
那如何知道用户已经付钱,订单状况呢。google有设置回调函数的url。具体位置在,登录到卖家的帐号(sandbox.google.com/checkout),点选my sales->settings->Integration。有个API callback URL,写上你用来处理google返回信息的url地址。下面有对应的选项可以设,注意,如果选上Require notification acknowledgments to specify the serial number of the notification. 那么sample code里需要自己加上serial-number,在googleresponse类,加上个属性serial_number(这个值要自己设),并且在190行左右,具体:
- <?php
- function SendAck($die=true) {
- $this->SendOKStatus();
- $acknowledgment = "<?xml version=/"1.0/" encoding=/"UTF-8/"?>" .
- "<notification-acknowledgment xmlns=/"" .
- $this->schema_url . "/" serial-number=/"".$this->serial_number."/" />";
- $this->log->LogResponse($acknowledgment);
- if($die) {
- die($acknowledgment);
- } else {
- echo $acknowledgment;
- }
- }
- ?>
否则会报握手失败。调试信息可以在my sales->tools>Integration Console看到。最容易出的错就是目录的写权限,因为要写日志,以及serial-number问题(settings中构选的话)。
之后还有包括发送订单状态更改(不用每次卖家都进到google用手点),直接收钱。需要Post数据到google,值得注意的是google示例代码中用的是curl,需要系统上带有curl7以上的版本。
- 使用google checkout经验
- google svn checkout
- 使用Google的小经验
- google code不能checkout问题
- 关于google code checkout失败
- Google Code checkout v8 方法
- google checkout android/java 编程
- 使用git checkout 源代码
- git checkout的使用
- 使用git checkout 源代码
- git checkout的使用
- Google 经验
- 招行信用卡绑定Google Checkout
- 在magento设置集成google checkout
- 1、Google Checkout简介&开通流程
- Google API 应用大全SVN Checkout 地址
- 为什么支付宝使用用户体验欠佳的安全控件,而国外 Paypal、Google Checkout 都没有这种的设计?
- Checkout
- EVC调用 Windows Media Player 控件
- 获取服务器路径的方法
- freemarker 中文乱码问题解决办法
- 项目代码公开-VC进销存开发的档!
- 用连接池提高Servlet访问数据库的效率 ZT
- 使用google checkout经验
- 正则表达式30分钟入门
- C#播放声音的5种方法介绍
- 变量数据类型选择--小细节大问题
- C++中的随机数函数
- 心得
- CListCtrlEx:一个支持文件拖放和实时监视的列表控件
- OpenCV求矩阵的特征值和特征向量
- Linux netfilter源码分析(5)