magento集成的有PayPal支付,我们一般采用的是PayPal快速结账支付方法,不仅可以在产品详情页实现快速结账,同时可以在结账页使用此种方式。不过这里遇到几个问题,具体罗列和分析如下:

1、详情页快速结账后,因为未传递运费,所以在PayPal支付完成后会跳转回到订单确认页让选择运输方式,然后才能生成订单号下单成功。解决方案是在快速结账的按钮上传递自定义参数,然后在PayPal里面接受参数,根据参数传递默认的运输方式即可。
2、详情页快速结账和信用卡支付,分别跳转的页面不同,信用卡支付直接跳转到输入卡号页面即可。快速结账跳转到输入账号界面,具体效果如下图;


结账页选择快速结账和信用卡支付,分别跳转的页面不同,问题如上,具体效果如上图;
具体需要更改的代码如下:

一、app\design\frontend\base\default\template\paypal\express\shortcut.phtml,magento产品详情页最终生成的地址为:信用卡http://test.longzhixiang.com/paypal/express/start/button/1/instruction/1/free/1,快速结账:http://test.longzhixiang.com/paypal/express/start/button/1/instruction/0/free/0。

二、结账页添加instruction参数,来判断是信用卡还是快速结账:app\design\frontend\yisainuo\pc\template\tm\firecheckout\checkout\payment\methods.phtml,更改两种方式的value值均为paypal_express,代码如下:

<script type="text/javascript">
    jQuery(document).ready(function(){

if(jQuery('#p_method_paypal_express').attr('checked') == 'checked'){
            jQuery('.gw-instruction').val(0);
        }else if(jQuery('#p_method_paypal_express').attr('checked') == 'checked'){
            jQuery('.gw-instruction').val(1);
        }

jQuery('.gw-instruction').removeAttr("disabled");
        jQuery('#p_method_paypal_express_bml').click(function(){
            jQuery('.gw-instruction').val(1);
        });
        jQuery('#p_method_paypal_express').click(function(){

jQuery('.gw-instruction').val(0);
        });

});
</script>

效果如图:

三、后台接受参数,结账页控制器接受,因为这里用的是TM_FIRECHECKOUT插件,所以,需要更改,app\code\local\TM\FireCheckout\controllers\IndexController.php中的saveOrderAction方法,增加保存参数到session,

$paypalInstruction = $this->getRequest()->getPost('instruction');
Mage::getSingleton('core/session')->setPaypalInstruction($paypalInstruction);
四、接收详情页快速结账的方法:app\code\core\Mage\Paypal\Controller\Express\Abstract.php的startAction方法接受参数

$paypalInstruction = $this->getRequest()->getParam('instruction');
            $paypalIsFree = $this->getRequest()->getParam('free');
            //Mage::log($paypalInstruction,NULL,'2.log');
            if(isset($paypalInstruction)){
                //Mage::log($paypalInstruction,NULL,'1.log');
                Mage::getSingleton('core/session')->setPaypalInstruction($paypalInstruction);
            }
五、NVP里面读取参数并传递对应的PayPal值,从而进入不同的页面:app\code\core\Mage\Paypal\Model\Api\Nvp.php的933行call()方法:

$checkPaymentMethod=Mage::getSingleton('core/session')->getPaypalInstruction();
        //Mage::log($checkPaymentMethod,NULL,'2.log');
        $request = $this->_addMethodToRequest($methodName, $request);

if($checkPaymentMethod==1){
            $request['LANDINGPAGE']='Billing';
            //Mage::log($request,NULL,'amy1.log');
        }else{
            $request['LANDINGPAGE']='Login';
            //Mage::log($request,NULL,'amy2.log');
        }
六、app\code\core\Mage\Paypal\Controller\Express\Abstract.php的startAction方法接受参数传递默认运输方式:

第96行增加:

//gw 默认运输方式

if(isset($paypalIsFree) && $paypalIsFree == 1 ){
//freeshipping_freeshipping
$this->_checkout->updateShippingMethod('freeshipping_freeshipping');
}

第197行returnAction更改

//$this->_redirect('*/*/review');
$this->_forward('placeOrder');

七、PayPal不进行地址校验app\code\core\Mage\Paypal\Model\Api\Nvp.php中第602行,$request['ADDROVERRIDE'] = 1;更改为0即可。

magento|paypal快速结账和结账页开发疑难相关推荐

  1. magento|结账页选择PayPal支付方式直接跳转信用卡

    magneto1.9集成的PayPal支付通道主要分为三个,第一个是在产品页和购物车页面的快速结账,包含有加购功能,点击后不需要输入信息即可跳转支付.第二个是结账页的PayPal标准结账,第三个是结账 ...

  2. 【网站国际化必备】Asp.Net MVC 集成Paypal(贝宝)快速结账 支付接口 ,附源码demo...

    开篇先给大家讲段历史故事,博主是湖北襄阳人.襄阳物华天宝,人杰地灵,曾用名襄樊.在2800多年的历史文化中出现了一代名相诸葛亮(卧龙),三国名士庞统(凤雏),魏晋隐士司马徽(水镜先生),唐代大诗人孟浩 ...

  3. HealthKit开发快速入门教程之HealthKit开发概述简介

    HealthKit开发快速入门教程之HealthKit开发概述简介 2014年6月2日召开的年度开发者大会上,苹果发布了一款新的移动应用平台,可以收集和分析用户的健康数据.该移动应用平台被命名为&qu ...

  4. 10分钟快速配置sublime2支持jQuery开发

    昨天介绍了javascript的开发工具sublime 2 edit,今天我们将介绍如何10分钟快速配置sublime2支持jQuery开发.希望大家能喜欢着款jQuery开发工具. 相关介绍:使用s ...

  5. 云开发系列课程让你从入门到精通快速上手Serverless和云开发技术

    简介:云开发系列课程主要介绍了从入门到精通快速上手Serverless和云开发技术.学习内容涵盖云开发协同.云函数.云数据库.多媒体托管.前后端一体化框架等Serverless Web开发必备知识.希 ...

  6. chrome gwt1.7_快速提示:使用Chrome开发工具调试GWT应用程序

    chrome gwt1.7 调试是软件开发的重要方面. 拥有正确的工具可以节省大量时间和头痛. 在GWT Super Dev模式之前,经典的Dev模式允许使用JVM调试. 开发人员可以在其IDE中设置 ...

  7. 快速提示:使用Chrome开发工具调试GWT应用程序

    调试是软件开发的重要方面. 拥有正确的工具可以节省大量时间和头痛. 在GWT Super Dev模式之前,经典的Dev模式允许使用JVM调试. 开发人员可以在其IDE中设置断点,并使用调试模式来跟踪错 ...

  8. 快速搭建 SpringCloud 微服务开发环境的脚手架

    快速搭建 SpringCloud 微服务开发环境的脚手架 本文作者:HelloGitHub-秦人 本文适合有 SpringBoot 和 SpringCloud 基础知识的人群,跟着本文可使用和快速搭建 ...

  9. 视频教程-微信小程序快速入门视频课程-微信开发

    微信小程序快速入门视频课程 北京八维研修学院技术工程师,5年大型项目实战开发经验,3年授课经验. 孟宪杰 ¥168.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 AP ...

最新文章

  1. ZedGraph怎样在生成曲线时随机生成不一样的颜色
  2. 大白鱼备考云笔记冲刺周期第一天
  3. P4945-最后的战役【dp,离散化】
  4. java里ssm框架分页代码_SSM框架实现分页查询例子
  5. 7 HandlerSet 处理程序链表类——Live555源码阅读(一)基本组件类
  6. pythonpptx模块详解_详解 Python 操作 PPT 的各种骚操作!
  7. 盗墓笔记—阿里旺旺ActiveX控件imageMan.dll栈溢出漏洞研究
  8. taro 的项目结构_自定义 Taro UI 组件的边框样式(hairline mixin)《 电商小程序案例:页面结构 》...
  9. python已知三角形的顶点坐标,求任一顶点角度
  10. 全方位指导手把手教你实现自定义Spring Boot的 Starter公社
  11. 零基础-微信小程序入门教程
  12. UOM物料单位转换(同类型才能转换)
  13. 【.net函数式编程】可重复的执行repeatable execution
  14. 如何确定论文研究方向,看了很多论文还是没有头绪?
  15. 损失函数与正则项(惩罚项),多loss间权重设计
  16. 用HTML搭建3D立体相册网页,可放大缩小
  17. php中单引号双引号那点事---顺便说说把php变量的值传给js
  18. 7:1 error Expected indentation of 2 spaces but found 4 indent 11:35 error Newline requir
  19. 爬虫爬取王者荣耀 英雄故事 和技能
  20. H3C无线AC+AP配置1—无密码登录

热门文章

  1. Long Way To Go 之 Python 2
  2. 厦门大学计算机专业周奕毅,厦门大学2020年博士后招收计划[010].PDF
  3. 7天用Go从零实现Web框架Gee教程
  4. 2014 top100
  5. Windows+python3.6+Anaconda安装shogun包
  6. SHOGUN toolbox的一些使用心得
  7. 基于微信教室实验室预约小程序设计与实现 开题报告
  8. java回调原理,以及Callable和FutureTask通过回调机制创建可监控的线程
  9. 向SQL Server 中导入长文本
  10. 电脑桌面云便签怎么设置字体字号大小?