如何在magento选择支付种类下二次设置和选择支付资料时的数据访问

正常magento后台可设置几种支付类型,但如果在选择某一个支付类型下,需要再填入或选择某种补充性的支付资料时,这些数据如何在后续的代码中传递和访问呢。
我以我在国内的支付宝插件的基础上修改的支付宝外卡的代码进行举例。

图示效果如上。
这时需要在前台的支付信息提示中增加如下代码

<?php $_code=$this->getMethodCode() ?>
	<div  id="payment_form_<?php echo $_code ?>" style="display:none">
                  <input type="radio" name="payment[cc_type]" value="boc-visa" onclick="document.getElementById('alipaymethod').value='YES';" /><img src="https://img.alipay.com/sys/wkpayment/card_logo_VC.png"  alt="Visa" /> 
                <input type="radio" name="payment[cc_type]" value="boc-master" onclick="document.getElementById('alipaymethod').value='YES';" /><img src="https://img.alipay.com/sys/wkpayment/card_logo_MC.png"  alt="MasterCard"  />
                <input type="radio" name="payment[cc_type]" value="boc-jcb" onclick="document.getElementById('alipaymethod').value='YES';" /><img src="https://img.alipay.com/sys/wkpayment/card_logo_JC.png"  alt="JCB"  />
		<input id="alipaymethod" type="hidden" class="required-entry" />
</div>

在支付代码的model\payment.php中
 $order->getPayment()->getData('cc_type');
这样的代码形式,就可以取到前台选择的数据了。(注意红色部份与上述代码的对应关系)

当时为了解决这个问题,特意找了国外的一些支付代码分析,才发现有这样的形式。
这里只是给大家做个示范,如果有更多的资料,可参照这个进行测试。

Magento以日元做基本货币时小数点格式解决方案

最近在建设日文版的magento,使用了它的日文语言包及ec-giken相应的插件,其他的一切功能都还很不错,不过在支付时,发现Magento有一个比较严重的问题“Magento日文货币格式竟然在小数点后有两位0”,比如价格是¥1,000,总是要显示成为¥1,000.00,日元的最小货币单位是元,且没有小数点,这个问题非常严重。在支付时,如果是用paypal,会出现货币金额错误的提示,而且两位数的差距价格。日本人看到这个价格要吓一大跳。

下面就稍微总结一下。
一是修改下列这个文件:

app\code\core\Mage\Core\Model\Store.php 找到roundPrice($price)这个函数,里面的round($price, 2),修改成为floor($price)。不过这个修改实际上对界面是没有影响的,仅仅是在计算的时候只取整数。

二是修改以下文件:

修改文件:code/core/Mage/Core/Model/Store.php 找到

public function formatPrice($price, $includeContainer = true)
{
if ($this->getCurrentCurrency()) {
return $this->getCurrentCurrency()->format($price, array(), $includeContainer);
}
return $price;
}

改成:

public function formatPrice($price, $includeContainer = true)
{
if ($this->getCurrentCurrency()) {
return $this->getCurrentCurrency()->format($price, array(‘precision’=>0), $includeContainer);
//
区别就是在这里,array(‘precision’=>0)就是去掉小数部分,array(‘precision’=>1) 的话就只保留1位小数。 具体需要多少位小数,就由你去自由设置了。
}
return $price;
}

再刷新页面,小数点消失,显示正常了。

另外还涉及

这里就要更改一下设置了:打开lib/Zend/Locale/Data/目录下的默认语言.xml 编辑:
Japanese Yen
¥
把¥换成日文元然后再找到  #,¤ ##0.00

 

当然这样的修改方法缺陷很大,就是在有多个StoreView的时候,没办法保证其他货币的正确显示。相信在后续的Magento版本里面,这个问题应该可以得到修正吧。

Magento兰亭2011模板支付时无提交按钮的解决方法

最近很多人使用Magento兰亭2011模板,但是据好多人反映,在订单提交页面没有提交按钮,根据另人的经验,我来解释一下如何解决此问题。

Magento兰亭2001真是个很不错的模板,此模板首先是很好的仿了兰亭,其次是功能上也很丰富,很少有模板有如此丰富的功能,不过有一些功能是直接集成在代码中的,没有一些代经验的人可能会被此限制。
此模板官网地址是:http://www.bestmagento.com/ 希望大家支持正版。此模板的缺点可能是因为功能太丰富,一般的新手无法应付。

我看了其模板.phtml文件,并没有什么明显的问题。我觉得应该是XML文件的问题,可能由于版本问题,XML有错误的地方,不出所料。

app\design\frontend\default\se101\layout\checkout.xml  此文件中约380行位置,将checkout/onepage_review_info那个块的代码更新成如下:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        <block type="checkout/onepage_review_info" name="root" output="toHtml" template="checkout/onepage/review/info.phtml">

            <action method="addItemRender"><type>default</type><block>checkout/cart_item_renderer</block><template>checkout/onepage/review/item.phtml</template></action>
            <action method="addItemRender"><type>grouped</type><block>checkout/cart_item_renderer_grouped</block><template>checkout/onepage/review/item.phtml</template></action>
            <action method="addItemRender"><type>configurable</type><block>checkout/cart_item_renderer_configurable</block><template>checkout/onepage/review/item.phtml</template></action>
            <block type="checkout/cart_totals" name="checkout.onepage.review.info.totals" as="totals" template="checkout/onepage/review/totals.phtml"/>
            <block type="core/text_list" name="checkout.onepage.review.info.items.before" as="items_before" translate="label">
                <label>Items Before</label>
            </block>
            <block type="core/text_list" name="checkout.onepage.review.info.items.after" as="items_after" translate="label">
                <label>Items After</label>
            </block>
            <block type="checkout/agreements" name="checkout.onepage.agreements" as="agreements" template="checkout/onepage/agreements.phtml"/>
            <block type="core/template" name="checkout.onepage.review.button" as="button" template="checkout/onepage/review/button.phtml"/>
        </block>
    </checkout_onepage_review>

我们通过对比可以发现XML少了两行的声明。

一般我们去分析XML文件的时候,没有谁可以直接看到问题所在,要通过与当前版本的default模板中的XML文件做下对比,才容易确定问题所在。

zencart的各种外贸支付通道跳转的实现

由于zencart的特性,使这种平台的代码比较容易修改和扩充,而无论从不支持特殊交易品paypal和目前国内各种支付通道,都比较容易从代码中看出如何向支付通道提交数据.
这就为各种支付通道实现跳转及在支付后传回数据返回到主站提供了实现的手段.
目前通过自己的努力,已经实现了以下几种支付方式的跳转
1 paypal ipn 在线支付跳转,同时具备管理和行为分析功能
2 paypal快速支付跳转,就是可在zencart上不用注册直接先进行支付
3 paypal离线支付跳转,相当通过一个特定链接,让用户根据这个链接上的金额付款,不行网站相关联,但采用一些特殊手段,让订单与能网站后台相匹配,支付行为像paypal ipn方式,更加安全可考
4 gspay跳转,虽然gspay比较容易申请,但也有一些电子产品,他们是拒绝的,跳跳也是有好处的.
5 paydollar(aisapay)跳转,这个纯粹是为了跳转而跳转,没什么原因
我做的跳转,都看不出中间站在整个支付过程中的影响,没感觉.理论上国内的各种支付方式,都可以做到跳转.
具体其它知识可参看我的其它支付和跳转的文章.

关于paypal离线支付仿在线支付及跳转功能的实现

什么样的paypal跳转最好

zencart gspay如何进行调试的方法

zencart gspay如何进行调试的呢,以下有一个方法,可以方便地进行支付调试!
1 在includes\module\payment\gspay.php中 ,找到这行$process_button_string .= zen_draw_hidden_field(zen_session_name(), zen_session_id());在下方增加$process_button_string .= ‘<input type=”hidden” name=”TransactionMode” value=”test”>’;    保存即可

2 进行支付步骤跳到gspay支付页面,用户名为TEST TRANSACTION,支付卡号为:4444445555555555.选择Visa卡支付,CVV2号码可以是任意3位数字。

3 按上述步骤,你就可以进行不用付钱的gspay支付.

记得正常后要将上述语句删除!!!!!

关于paypal离线支付仿在线支付及跳转功能的实现

paypal离线支付仿在线支付及跳转功能的实现,终于正常,用户下订单后,可以通过几种方式支付:

1、可以在订单成功的邮件,按支付链接,支付
2、可以在网站支付的最后一页按支付按钮,通过正品站跳到paypal支付
3、可以在网站支付的最后一页自动通过正品站跳到paypal支付,实现与ipn paypal相似的支付效果
额外功能:
1、这个功能可以在限制第一次用户注册后必须浏览指定产品页才会出现这个支付选项;
2、也设定用户第二次以后登录必须在网站呆指定的时间后才出现这种支付选项,
3、支持多网站通过一个正品站跳转时,进行订单的标识和识别
4、支持在网站后台的订单中植入离线支付的订单标识,以便能进行订单的匹配.

关于在paypal支付时出现自定义的企业标识的方法

很多电子商务网站,在进入PAYPAL支付时,在支付页的上方会出现企业标识的图片,最早以为是这电子商务的代码向PAYAPL发现的数据,后来才知道,这是在PAYPAL的“用户信息”中进行设置的,可以设置两种图片,不过PAYPAL要求图片的链接必须是https的,不然在用户支付时,会出现不安全的提示。这可难倒了,又不想把自己的网站改成HTTPS的,那图片放哪?好像没有支持https的公共图片空间服务,找了一下,发现有专门提供这类有偿服务的公司:http://www.securelogo.com/   http://www.securepixels.com/   https图片服务器公司,按张收费的,有兴趣可以去看看!