现在magento 支付宝插件在网上还是很多的。但是支付宝无线支付貌似还不多。这里我只是根据官方文档和其它
支付方式编写出无线支付的雏形,可用但是不完善,先记录在这里。(当然文章是点到为止,只给我这种菜鸟看看,大神无视我吧。)
---------------------------------------------------我就是分割线怎么了---------------------------------------------------
首先肯定是要熟悉支付宝官方给出的文档
手机网页即时到账接口 和 手机网页支付接入与使用规则 以及 demo 代码
之后开始梳理流程:
(一下是在默认情况下,不要纠结个别变量的不同)
1. 在magento中我们点击结账,如果支付方式选择的是第三方支付方式会跳转到相应支付方式Paymentcontroller里的redirectAction
在模块的system.xml 中加入你自己的后台配置代码
2. 在这里magento最主要的是 记录$order以及createBlock 输出html
$this->getResponse()
->setBody($this->getLayout()
->createBlock('alipaymobile/redirect')
->setOrder($order)
->toHtml());
但是支付宝无线支付有些不同,从官方文档中得知 我们首先需要 获得授权即调用接口手机网页即时到账授权接口
然后才是 调用接口手机网页即时到账交易接口
那么我的解决思路是在 Block/Redirect.php 中先去掉用授权接口然后是代码自动调用即时到帐接口完成结账。
这时候看到的网页是要跳转两次的。
4. 首先调用授权接口 隐藏的form表单提交的 url地址应当是 里一个例如AlipayapiController
并且主要代码都是在这个controller中实现的
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestHttp($para_token);
//获取request_token
$request_token = $para_html_text['request_token'];
//建立请求
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit->buildRequestForm($parameter, 'get', '确认');
是因为 在model中 getSuccessURL 和 getNotifyURL 都是使用protected声明的。 最简单的解决办法是改成public
以我之愚见好像没必要声明成protected
5. 处理success代码 和 notify代码即可。
这完成了结账流程没错,但是只是90%吧,因为还有重要的前端处理流程。
即PC端 是不需要显示这个支付方式的 一种解决办法是
在template/checkout/onpage/payment/methods.phtml 中找到代码
foreach ($methods as $_method):
$_code = $_method->getCode();
if($_code == "alipaymobile_payment"){
continue;
}
即可,当然这里的 alipaymobile_payment 要自己根据实际情况来定了。
另一个需要修改的地方是我的订单包括历史订单页面(我这里实在之前开发了继续支付功能)
当你在手机选择了 支付宝无线支付 但是没有做付款操作,转而用电脑继续,那么此时在订单付款按钮处就
不应该选择支付宝无线支付了。可以使用
$paymentsAllMethods = Mage::getSingleton('payment/config')->getActiveMethods();
至此 就基本完成了。大家凑合看吧,其实有了官方文档,加上对magento有些了解花点时间就可以写出来的
我只不过写下我自己的解决办法。 不喜勿喷!欢迎指正!
懒得开发的可以联系我
但我不会去帮你定制。(哎呀,我的服务竟然这么差!)
---------------------------------------------------我就是分割线怎么了---------------------------------------------------
这是发在CSDN的第一篇文章,所以必须是原创的!
最开始在新浪上写博客,后来到百度空间,我只想说百度空间让我几乎没有了写博客的欲望。
总之现在又想乱写点东西了,给自己看也好。
PS: 会陆续把我印象笔记里的东西拿过来。