Magento 手机支付 (支付宝无线支付)

 现在magento 支付宝插件在网上还是很多的。但是支付宝无线支付貌似还不多。这里我只是根据官方文档和其它

支付方式编写出无线支付的雏形,可用但是不完善,先记录在这里。(当然文章是点到为止,只给我这种菜鸟看看,大神无视我吧。)

---------------------------------------------------我就是分割线怎么了---------------------------------------------------   

首先肯定是要熟悉支付宝官方给出的文档

手机网页即时到账接口 和 手机网页支付接入与使用规则 以及 demo 代码

之后开始梳理流程:

(一下是在默认情况下,不要纠结个别变量的不同)

1. 在magento中我们点击结账,如果支付方式选择的是第三方支付方式会跳转到相应支付方式Paymentcontroller里的redirectAction

    在模块的system.xml 中加入你自己的后台配置代码

2. 在这里magento最主要的是 记录$order以及createBlock 输出html

$this->getResponse()
            ->setBody($this->getLayout()
                ->createBlock('alipaymobile/redirect')
                ->setOrder($order)
                ->toHtml());

3. 在输出的页面 例如是支付宝或者快钱等支付方式通常是隐藏的form表单包含要提交的信息,以及自动提交的js  

    但是支付宝无线支付有些不同,从官方文档中得知 我们首先需要 获得授权即调用接口手机网页即时到账授权接口

    然后才是 调用接口手机网页即时到账交易接口

    那么我的解决思路是在 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', '确认');

   注意:按这种方法其中出现的一个重要问题是会获取不到 notifyUrl 和 SuccessUrl, (除非你直接写的绝对路径,而不是从model中获取的)

               是因为 在model中 getSuccessURL 和 getNotifyURL 都是使用protected声明的。 最简单的解决办法是改成public

               以我之愚见好像没必要声明成protected

5. 处理success代码 和 notify代码即可。


Magento 手机支付 (支付宝无线支付)_第1张图片


Magento 手机支付 (支付宝无线支付)_第2张图片



这完成了结账流程没错,但是只是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: 会陆续把我印象笔记里的东西拿过来。


你可能感兴趣的:(magento)