你并没有你想象中的那么重要

2011 年 03 月 05 日 下午 10:05 | 小龙包

我一直记得一句话,你并没有你想象中的那么重要。
再一次体会到这句话对人生的作用。
少了很多的失望,很多的不平,很多的不相信。
曾经很在乎的一个人,一直很在乎吧
在那一抹童心里面,一直有着那个身影,怀念那些日子
我的号码在她那里永远是陌生号码
好几年了吧
我都傻傻的选择相信她说的那些我自己都觉得假假的话。
又一次变成了陌生号码,
没有失望,没有难过,也没有不相信
只是
这一次,再也给不了解释的机会了
我明白了,
我懂了,
终于知道,一切不过是过去而已,仅此而已!
那一抹童心被珍藏,埋入心底,永不翻开!直到永远。
回想那么多年的傻,我笑了,面无表情的笑了

你要做的就是激励自己

2011 年 03 月 04 日 上午 10:24 | manjiejie

01.你可以用爱得到全世界,你也可以用恨失去全世界。

  02.一切伟大的行动和思想,都有一个微不足道的开始。

  03.生活中若没有朋友,就像生活中没有阳光一样。

  04.生气是拿别人做错的事来惩罚自己。

  05.生活若剥去理想、梦想、幻想,那生命便只是一堆空架子。

  06.发光并非太阳的专利,你也可以发光。

  07.愚者用肉体监视心灵,智者用心灵监视肉体。

  08.获致幸福的不二法门是珍视你所拥有的、遗忘你所没有的。

  09.贪婪是最真实的贫穷,满足是最真实的财富。

  10.每天告诉自己一次,『我真的很不错』。

  11.人的价值,在遭受诱惑的一瞬间被决定。

  12.年轻是我们唯一拥有权利去编织梦想的时光。

  13.青春一经典当即永不再赎。

  14.没有了爱的语言,所有的文字都是乏味的。

  15.真正的爱,应该超越生命的长度、心灵的宽度、灵魂的深度。

  16.爱的力量大到可以使人忘记一切,却又小到连一粒嫉妒的沙石也不能容纳。

  17.当一个人真正觉悟的一刻,他放弃追寻外在世界的财富,而开始追寻他内心世界的真正财富。

  18.只要有信心,人永远不会挫败。

  19.不论你在什么时候开始,重要的是开始之后就不要停止。

  20.不论你在什么时候结束,重要的是结束之后就不要悔恨。

  21.人若软弱就是自己最大的敌人。

  22.人若勇敢就是自己最好的朋友。

  23.『不可能』只存在于蠢人的字典里。

  24.抱最大的希望,为最大的努力,做最坏的打算。

  25.家!甜蜜的家!天下最美好的莫过于家。

  26.游手好闲会使人心智生锈。

  27.每一件事都要用多方面的角度来看它。

  28.有理想在的地方,地狱就是天堂。

  29.有希望在的地方,痛苦也成欢乐。

  30.所有的胜利,与征服自己的胜利比起来,都是微不足道。

  31.所有的失败,与失去自己的失败比起来,更是微不足道。

  32.上帝从不埋怨人们的愚昧,人们却埋怨上帝的不公平。

  33.美好的生命应该充满期待、惊喜和感激。

  34.世上最累人的事,莫过于虚伪的过日子。

  35.觉得自己做的到和不做的到,其实只在一念之间。

  36.第一个青春是上帝给的;第二个的青春是靠自己努力的。

  37.少一点预设的期待,那份对人的关怀会更自在。

  38.思想如钻子,必须集中在一点钻下去才有力量。

  39.人只要不失去方向,就不会失去自己。!

  40.如果你曾歌颂黎明,那么也请你拥抱黑夜。

  41.问候不一定要慎重其事,但一定要真诚感人。

  42.人生重要的不是所站的位置,而是所朝的方向。

  43.当你能飞的时候就不要放弃飞。

  44.当你能梦的时候就不要放弃梦。

  45.当你能爱的时候就不要放弃爱。

  46.生命太过短暂,今天放弃了明天不一定能得到。

  47.天才是百分之一的灵感加上百分之九十九的努力。

  48.人总是珍惜未得到的,而遗忘了所拥有的。

  49.快乐要懂得分享,才能加倍的快乐。

  50.自己要先看得起自己,别人才会看得起你。

  51.一个今天胜过两个明天。

  52.要铭记在心;每天都是一年中最美好的日子。

  53.乐观者在灾祸中看到机会;悲观者在机会中看到灾祸。

  54.有勇气并不表示恐惧不存在,而是敢面对恐惧、克服恐惧。

  55.肯承认错误则错已改了一半。

  56.明天是世上增值最快的一块土地,因它充满了希望。

  57.理想的路总是为有信心的人预备着。

  58.所有欺骗中,自欺是最为严重的。

  59.人生最大的错误是不断担心会犯错。

  60.把你的脸迎向阳光,那就不会有阴影。

  61.经验是由痛苦中粹取出来的。

  62.用最少的悔恨面对过去。

  63.用最少的浪费面对现在。

  64.用最多的梦面对未来。

  65.快乐不是因为拥有的多而是计较的少。

  66.你的选择是做或不做,但不做就永远不会有机会。

  67.如你想要拥有完美无暇的友谊,可能一辈子找不到朋友。

  68.不如意的时候不要尽往悲伤里钻,想想有笑声的日子吧。

  69.把自己当傻瓜,不懂就问,你会学的更多。

  70.要纠正别人之前,先反省自己有没有犯错。

  71.因害怕失败而不敢放手一搏,永远不会成功。

  72.要克服生活的焦虑和沮丧,得先学会做自己的主人。

  73.你不能左右天气,但你能转变你的心情。

  74.孤单寂寞与被遗弃感是最可怕的贫穷。

  75.想象力比知识更重要。

  76.漫无目的的生活就像出海航行而没有指南针。

  77.好好扮演自己的角色,做自己该做的事。

  78.明天的希望,让我们忘了今天的痛苦。

  79.得意时应善待他人,因为你失意时会需要他们。

  80.学做任何事得按部就班,急不得。

珍惜

2011 年 03 月 02 日 上午 9:53 | manjiejie

珍惜。人总在不断地拥有,又不断地失去,既然不能永恒,就要牢牢握住,哪怕多一刻也好.

所以相信就好,我们在这个世界上或许有很多时候都会遇到不好的事情,但是相信在身边的人能让你觉得幸福就好,一切都不是那么

难过,因为有些存在的快乐,是需要你去守护的,你如果没发现存在身边的幸福,那么它总会在某一个时刻悄悄的溜走的。别忘了,

如果这个世界上还有什么事值得你去珍惜的,那么你要好好的去守护它,不要让它那么轻易的溜走。珍惜所拥有的,不要等到失去了再后悔,在我们身旁的每一

个人都是值得珍惜的。他们都是关心我们的人,所以我们一定要用真心去回报.

无言

2011 年 03 月 01 日 下午 6:10 | manjiejie

烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁烦躁

送给走在奋斗路上的男人

2011 年 02 月 28 日 下午 9:50 | alice

1.事业永远第一 ­   

         虽然金钱不是万能的,但没有钱是万万不能的。虽然这句话很俗,但绝对有道理。30岁之前,请把你大部分精力放在你的事业上。

2.别把钱看得太重  ­

  不要抱怨自己现在工资低,银行存款4位数以下,看不到前途,现在要做的就是努力学习,即使你文凭再高,怎么把理论运用到实践还是需要一个很长的锻炼过程,社会永远是一所最博大的大学,它让你学到的知识远比你在学校学到的重要得多,所以同样,你也别太介意学历低。30岁之前靠自己能力买车买房的人还是极少。

3.学会体谅父母  ­

  别嫌他们唠叨,等你为人父了你就知道可怜天下父母心,在他们眼里你还是个孩子,但他们真的老了,现在得你哄他们开心了,也许只要你的一个电话,一点小礼物,就可以让他们安心,很容易做到。

4.交上好朋友  ­

  朋友对你一生都影响重大,不要去结识太多酒肉朋友,至少得有一个能在关键时刻帮助你的朋友,如果遇到这么一个人,就好好把握,日后必定有用,不管他现在是富还是穷。 ­

5.别太相信爱情  ­

  心中要有爱,但请别说也别相信那些琼瑶阿姨小说里面的山盟海誓,世上本无永恒,重要的是责任,但女人心海底针,心变了,一切都成枉然,你要做的就是该出手时就出手,该放手时别犹豫。30岁之前的爱情不是假的,但只是大多数人都没有能真正把握好的能力,所以学会量力而行。

6.别担心至今还保留初吻  ­

  爱情不在多而在精,别以为自己20多岁还没碰过女孩子就害怕自己永远找不到老婆。以后你会有很多机会认识女孩子,要知道这个社会虽然男人多于女人,但现实是女人其实比男人更担心这个问题。男人40一枝花,你在升值而不是贬值,成熟的爱情往往更美丽更长久,所以不要像疯狗一样看到女孩就想追,学会品味寂寞。

7.不要沉迷于任何东西  ­

  所谓玩物而丧志,网络游戏是你在出校门之前玩的,你现在没有多余的时间和精力花费到这上面,否则你透支的东西以后都得偿还。一个人要有兴趣、爱好,但请分清楚轻重。 ­

8.年轻没有失败  ­

  不要遇到挫折就灰心,年轻人要时刻保持积极向上的态度。失败了,重来过;失去了,再争取别的。错过了,要分析,下次来,要把握;幼稚了,下次,成熟点。不要紧,会好的,哪怕到了极点,也不要放弃,相信一定可以挺过去。不要消极,会好的。曾经的错,过去了,总不能回味在过去。现在的,很好,累完了,很舒服。不要伤,总会有人在支撑你。

9.不要轻易崇拜或者鄙视一个人  ­

  人都有偶像,但请拥有你自己的个性。不要刻意去模仿一个人,因为你就是你,是唯一的,独一无二的,要有自信。也不要全盘否定一个人,每个人是有价值的,如果你不能理解他,也请学会接受。

10.要有责任心 ­

  不管你曾经怎样,但请从现在开始做一个正直的人。男人要有责任心,无论是工作还是生活上,一个有责任心的人才能让别人有安全感,才能让别人觉得你是一个值得信赖的人。我们不要懦弱,但请不要伤害爱你的人和你爱的人,尤其是善良的女孩,因为这个世界善良的女孩不多了,即使不想拥有,但也请让她保持她美丽的心。 ­

11.男人的外貌并不重要 ­

  不要为自己的长相身高而过分担心,一个心地善良、为人正直的男人远比那些空有英俊相貌、挺拔身材但内心龌龊的男人要帅得多。如果有人以貌取人,请不要太在意,因为你不用去为一个低级趣味的人而难过。 ­

12.学会保护身体  ­

  不要以为现在抽烟喝酒,熬夜通宵也没什么事。那是因为你的身体正处于你一生的黄金时段。30岁以后你就能明白力不从心这个词的意义了,身体是革命的本钱,没有好的身体什么也做不了,所以要尽量让自己过有规律的健康生活。

13.别觉得一事无成  ­

  你现在还没有资格谈成功,当然如果你有千万资产的除外。一开始太固定的职业并不一定是好事,或许在不断的改行当中,你会学到更丰富的知识,而且可以挖掘出自己的潜能,找到最适合你的工作。

14.请认真工作  ­

  即使你现在的工作再怎么无聊再怎么低级,也请你认真去对待,要知道任何成功人士都是从最小的事做起,或许你现在学不到多么了不起的知识,但起码你要学会良好的工作态度和工作方法,这对以后很重要。

15.请认真对待感情  ­

  不要羡慕那些换女人像换鞋一样的********,逢场作戏的爱情只是让你浪费时间浪费精力,一个人最痛苦的不是找不到爱人,而是心中没有了爱,当你把我爱你3个字变成你最容易说的一句话时,那么你在爱情的世界里已经很难找到真正的幸福了。爱情没有公平,总有一个人比对方付出得多,即使没有结果,也别觉得不值,因为你的付出不光是为了她,也是为了你自己的爱,为爱付出是很可贵的,赞自己一下。

16.请留一点童心  ­

  在内心深处,哪怕只是一个很小的角落里,请保持一份童心,不是幼稚,但有的时候单纯一点会让你很快乐。所以不要太计较得失,生活本无完美。

最后说一点,学会尊重别人,这样别人才会尊重你。

可怜天下父母心

2011 年 02 月 25 日 下午 5:32 | 小龙包

意料之中,也是意料之外的事,我妈去给我求姻缘签了:若是求婚有贵人,卦中分明说与君,前世缘分今生遇,更添财产进门庭!
不是很明白~~~

zen cart 运费模块改进

2011 年 02 月 24 日 下午 2:41 | 小龙包

今天装运费模块测试的时候发现:DHL,EMS等的配送模块没办法算0.5公斤运费,系统只默认整数的,如果是0.5以下,全部按1kg算,1.5以下也直接跳到2kg, 经过查资料网上找,最后找到了解决方法:

\includes\modules\shipping\dhlzones.php 里的 ceil($shipping_weight) 改为 round($shipping_weight,1);
价格重新设置成0.5 梯度增加的就可以正常计算运费了。

修改zen-cart下单和付款流程以防止漏单

2011 年 02 月 21 日 下午 4:39 | 小鱼儿

zen-cart进入第三方支付网站后,如果不能正常返回,则会造成客户已付款但后台却无订单数据的尴尬局面。本文就针对该问题给出一种解决方案,希望对被同样问题困扰的同行有所帮助。
用过zen-cart的人都知道,zen-cart中下单步骤是下面这样的(其中[]中的表示不是必须的):

1. 购物车(shopping cart)
2. [货运方式(delivery method)]
3. 支付方式(payment method)
4. 订单确认(confirmation)
5. [第三方网站支付]
6. 订单处理(checkout process)——这一步比较重要,因为会在这里将购物车中的信息写入订单
7. 下单成功(checkout success)
这样的流程在正常情况下是没有任何问题的。但是,从第5步到第6部的过程中,用户可能以为付款成功就直接关闭掉网页了,或者由于网络原因造成不能正常跳转到checkout_process页面,这样造成的后果是很严重的,因为订单不能被正常的创建。

基于上述的分析, 我们希望稍微地改变一下流程,即在支付之前订单已经创建好了,这样就算在支付时不能从第三方支付网站跳转回来,我们也不会存在用户付款成功却在后台没有订单的情况了。经过修改后的蓝图基本是下面这样的:

1. 在checkour_confirmation页面确认订单后,都会直接proccess,并且进入checkour_success页面,可以在这里进入付款页面。如下图所示:

2. 如果当时客户没能付款,也可进入自己的后台对历史订单进行付款。如下图所示:

下面我们就来看看如何一步一步来实现上述的功能。
1. 首先我们需要对现有的支付模块进行一个改造。需要对支付方式的class增加一个字段paynow_action_url,用来表示进行支付的页面 url,另外还需要增加一个函数,paynow_button($order_id),来获取支付表单的参数隐藏域代码。

要增加paynow_action_url字段,请在类payment的构造函数中最后加上下面的代码:
if ( (zen_not_null($module)) && (in_array($module.’.php’,
$this->modules)) && (isset($GLOBALS[$module]->paynow_action_url)) ) {
$this->paynow_action_url =
$GLOBALS[$module]->paynow_action_url;
}

要增加paynow_button($order_id)函数,请在payment类的最后一个函数之后加上如下的代码:
function paynow_button($order_id){
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module])) {
return
$GLOBALS[$this->selected_module]->paynow_button($order_id);
}
}
}

2. 以paypal支付方式为例子,说明如何具体实现。为了不破坏paypal原有的代码,我们将paypal.php文件拷贝一个副本出来,并命名为 paypalsimple.php,并对里面的代码做适当的修改。代码如下所示,可以看到,这里去掉了对form_action_url的指定,并给定了 paynow_action_url,因为我们希望用户点击“确认订单”后直接进入checkout_process,所以如果不指定 form_action_url,那么确认订单的表单就会直接提交到checkout_process页面了,而paynow_action_url就是以前的form_action_url的值。paynow_button函数的实现也很简单,这里只是将原先的process_button()函数的内容剪切过来而已,只不过我们没有使用全局的$order变量,而是使用$order = new order($order_id),来重新构造的一个对象,这样做是为在历史订单中显示pay now按钮做准备的。
paypalsimple.php /**
* @package paypalsimple payment module
* @copyright Copyright 2003-2006 Zen Cart Development Team
* @copyright Portions Copyright 2003 osCommerce
* @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
* @version $Id: paypalsimple.php 4960 2009-12-29 11:46:46Z gary $
*/
// ensure dependencies are loaded

include_once((IS_ADMIN_FLAG ===
true
? DIR_FS_CATALOG_MODULES : DIR_WS_MODULES) .
‘payment/paypal/paypal_functions.php’);

class paypalsimple {
var
$code,
$title,
$description,
$enabled;

// class constructor

function paypalsimple() {
global
$order;

$this->code =
‘paypalsimple’;
$this->title = MODULE_PAYMENT_PAYPAL_SIMPLE_TEXT_TITLE;

if(IS_ADMIN_FLAG ===
true){
$this->title = MODULE_PAYMENT_PAYPAL_SIMPLE_TEXT_ADMIN_TITLE;
}

$this->description = MODULE_PAYMENT_PAYPAL_SIMPLE_TEXT_DESCRIPTION;
$this->sort_order = MODULE_PAYMENT_PAYPAL_SIMPLE_SORT_ORDER;
$this->enabled = ((MODULE_PAYMENT_PAYPAL_SIMPLE_STATUS ==
‘True’) ?
true
:
false);

if ((int)MODULE_PAYMENT_PAYPAL_SIMPLE_ORDER_STATUS_ID >
0) {
$this->order_status = MODULE_PAYMENT_PAYPAL_SIMPLE_ORDER_STATUS_ID;
}

$this->paynow_action_url =
‘https://’
. MODULE_PAYMENT_PAYPAL_SIMPLE_HANDLER;
if (is_object($order)) $this->update_status();
}

// class methods

function update_status() {
global
$order,
$db;

if ( ($this->enabled ==
true) && ((int)MODULE_PAYMENT_PAYPAL_SIMPLE_ZONE >
0) ) {
$check_flag
=
false;
$check
=
$db->Execute(“select zone_id from ”
. TABLE_ZONES_TO_GEO_ZONES .
” where geo_zone_id = ‘”
. MODULE_PAYMENT_PAYPAL_SIMPLE_ZONE .
“‘ and zone_country_id = ‘”
.
$order->billing[‘country’][‘id’] .
“‘ order by zone_id”);
while (!$check->EOF) {
if ($check->fields[‘zone_id’] <
1) {
$check_flag
=
true;
break;
} elseif ($check->fields[‘zone_id’] ==
$order->billing[‘zone_id’]) {
$check_flag
=
true;
break;
}
$check->MoveNext();
}

if ($check_flag
==
false) {
$this->enabled =
false;
}
}
}

function javascript_validation() {
return
false;
}

function selection() {
$text
= MODULE_PAYMENT_SIMPLE_PAYPAL_TEXT_CATALOG_LOGO.’ ’
.MODULE_PAYMENT_PAYPAL_SIMPLE_TEXT_TITLE .


. MODULE_PAYMENT_PAYPAL_SIMPLE_ACCEPTANCE_MARK_TEXT .

‘;
return
array(‘id’
=>
$this->code,
‘module’
=>
$text
);
}

function pre_confirmation_check() {
return
false;
}

function confirmation() {
return
false;
}

function process_button() {
return
false;
}

function before_process() {
return
false;
}

function after_process() {
return
false;
}

function get_error() {
return
false;
}

function check() {
global
$db;
if (!isset($this->_check)) {
$check_query
=
$db->Execute(“select configuration_value from ”
. TABLE_CONFIGURATION .
” where configuration_key = ‘MODULE_PAYMENT_PAYPAL_SIMPLE_STATUS’”);
$this->_check =
$check_query->RecordCount();
}
return
$this->_check;
}

function install() {
global
$db;
$db->Execute(“insert into ”
. TABLE_CONFIGURATION .
” (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values (‘Enable PayPal-Simple Module’, ‘MODULE_PAYMENT_PAYPAL_SIMPLE_STATUS’, ‘True’, ‘Do you want to accept PayPal-Simple payments?’, ‘6′, ‘0′, ‘zen_cfg_select_option(array(\’True\’, \’False\’), ‘, now())”);

$db->Execute(“insert into ”
. TABLE_CONFIGURATION .
” (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values (‘Sort order of display.’, ‘MODULE_PAYMENT_PAYPAL_SIMPLE_SORT_ORDER’, ‘0′, ‘Sort order of display. Lowest is displayed first.’, ‘6′, ‘8′, now())”);

$db->Execute(“insert into ”
. TABLE_CONFIGURATION .
” (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values (‘Payment Zone’, ‘MODULE_PAYMENT_PAYPAL_SIMPLE_ZONE’, ‘0′, ‘If a zone is selected, only enable this payment method for that zone.’, ‘6′, ‘2′, ‘zen_get_zone_class_title’, ‘zen_cfg_pull_down_zone_classes(‘, now())”);

$db->Execute(“insert into ”
. TABLE_CONFIGURATION .
” (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, use_function, date_added) values (‘Set Order Status’, ‘MODULE_PAYMENT_PAYPAL_SIMPLE_ORDER_STATUS_ID’, ‘0′, ‘Set the status of orders made with this payment module to this value’, ‘6′, ‘0′, ‘zen_cfg_pull_down_order_statuses(‘, ‘zen_get_order_status_name’, now())”);

$db->Execute(“insert into ”
. TABLE_CONFIGURATION .
” (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values (‘Mode for PayPal web services

Default:
www.paypal.com/cgi-bin/webscr
or
www.paypal.com/us/cgi-bin/webscr
or for the UK,
www.paypal.com/uk/cgi-bin/webscr’, ‘MODULE_PAYMENT_PAYPAL_SIMPLE_HANDLER’, ‘www.paypal.com/cgi-bin/webscr’, ‘Choose the URL for PayPal live processing’, ‘6’, ’73’, ”, now())”);
}

function remove() {
global
$db;
$db->Execute(“delete from ”
. TABLE_CONFIGURATION .
” where configuration_key in (‘”
.
implode(“‘, ‘”,
$this->keys()) .
“‘)”);
}

function keys() {
return
array(‘MODULE_PAYMENT_PAYPAL_SIMPLE_STATUS’,’MODULE_PAYMENT_PAYPAL_SIMPLE_SORT_ORDER’,
‘MODULE_PAYMENT_PAYPAL_SIMPLE_ZONE’,’MODULE_PAYMENT_PAYPAL_SIMPLE_ORDER_STATUS_ID’,

‘MODULE_PAYMENT_PAYPAL_SIMPLE_HANDLER’);
}

function paynow_button($order_id){
global
$db,
$order,
$currencies,
$currency;
require_once(DIR_WS_CLASSES .
‘order.php’);
$order
=
new order($order_id);
$options
=
array();
$optionsCore
=
array();
$optionsPhone
=
array();
$optionsShip
=
array();
$optionsLineItems
=
array();
$optionsAggregate
=
array();
$optionsTrans
=
array();
$buttonArray
=
array();

$this->totalsum =
$order->info[‘total’];

// save the session stuff permanently in case paypal loses the session

$_SESSION[‘ppipn_key_to_remove’] =
session_id();
$db->Execute(“delete from ”
. TABLE_PAYPAL_SESSION .
” where session_id = ‘”
. zen_db_input($_SESSION[‘ppipn_key_to_remove’]) .
“‘”);

$sql
=
“insert into ”
. TABLE_PAYPAL_SESSION .
” (session_id, saved_session, expiry) values (
‘”
. zen_db_input($_SESSION[‘ppipn_key_to_remove’]) .
“‘,
‘”
.
base64_encode(serialize($_SESSION)) .
“‘,
‘”
. (time() + (1*60*60*24*2)) .
“‘)”;

$db->Execute($sql);

$my_currency
= select_pp_currency();
$this->transaction_currency =
$my_currency;

$this->transaction_amount = ($this->totalsum *
$currencies->get_value($my_currency));

$telephone
=
preg_replace(‘/\D/’,
”,
$order->customer[‘telephone’]);
if ($telephone
!=
”) {
$optionsPhone[‘H_PhoneNumber’] =
$telephone;
if (in_array($order->customer[‘country’][‘iso_code_2’],
array(‘US’,’CA’))) {
$optionsPhone[‘night_phone_a’] =
substr($telephone,0,3);
$optionsPhone[‘night_phone_b’] =
substr($telephone,3,3);
$optionsPhone[‘night_phone_c’] =
substr($telephone,6,4);
$optionsPhone[‘day_phone_a’] =
substr($telephone,0,3);
$optionsPhone[‘day_phone_b’] =
substr($telephone,3,3);
$optionsPhone[‘day_phone_c’] =
substr($telephone,6,4);
} else {
$optionsPhone[‘night_phone_b’] =
$telephone;
$optionsPhone[‘day_phone_b’] =
$telephone;
}
}

$optionsCore
=
array(
‘charset’
=> CHARSET,
‘lc’
=>
$order->customer[‘country’][‘iso_code_2’],
‘page_style’
=> MODULE_PAYMENT_PAYPAL_PAGE_STYLE,
‘custom’
=> zen_session_name() .
‘=’
. zen_session_id(),
‘business’
=> MODULE_PAYMENT_PAYPAL_BUSINESS_ID,
‘return’
=> zen_href_link(FILENAME_PAY_SUCCESS,
‘referer=paypal’,
‘SSL’),
‘cancel_return’
=> zen_href_link(FILENAME_PAY_FAILED,
”,
‘SSL’),
‘shopping_url’
=> zen_href_link(FILENAME_SHOPPING_CART,
”,
‘SSL’),
‘notify_url’
=> zen_href_link(‘ipn_main_handler.php’,
”,
‘SSL’,false,false,true),
‘redirect_cmd’
=>
‘_xclick’,
‘rm’
=>
2,
‘bn’
=>
‘zencart’,
‘mrb’
=>
‘R-6C7952342H795591R’,
‘pal’
=>
‘9E82WJBKKGPLQ’,
);
$optionsCust
=
array(
‘first_name’
=> replace_accents($order->customer[‘firstname’]),
‘last_name’
=> replace_accents($order->customer[‘lastname’]),
‘address1’
=> replace_accents($order->customer[‘street_address’]),
‘city’
=> replace_accents($order->customer[‘city’]),
‘state’
=> zen_get_zone_code($order->customer[‘country’][‘id’],
$order->customer[‘zone_id’],
$order->customer[‘zone_id’]),
‘zip’
=>
$order->customer[‘postcode’],
‘country’
=>
$order->customer[‘country’][‘iso_code_2′],
’email’
=>
$order->customer[’email_address’],
);
if ($order->customer[‘suburb’] !=
”) $optionsCust[‘address2’] =
$order->customer[‘suburb’];
if (MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED ==
2) $optionsCust
=
array(
‘address_name’
=> replace_accents($order->customer[‘firstname’] .


.
$order->customer[‘lastname’]),
‘address_street’
=> replace_accents($order->customer[‘street_address’]),
‘address_city’
=> replace_accents($order->customer[‘city’]),
‘address_state’
=> zen_get_zone_code($order->customer[‘country’][‘id’],
$order->customer[‘zone_id’],
$order->customer[‘zone_id’]),
‘address_zip’
=>
$order->customer[‘postcode’],
‘address_country’
=>
$order->customer[‘country’][‘title’],
‘address_country_code’
=>
$order->customer[‘country’][‘iso_code_2’],
‘payer_email’
=>
$order->customer[’email_address’],
);
$optionsShip
=
array(
//’address_override’ => MODULE_PAYMENT_PAYPAL_ADDRESS_OVERRIDE,

‘no_shipping’
=> MODULE_PAYMENT_PAYPAL_ADDRESS_REQUIRED,
);
if (MODULE_PAYMENT_PAYPAL_DETAILED_CART ==
‘Yes’) $optionsLineItems
= ipn_getLineItemDetails();
if (sizeof($optionsLineItems) >
0) {
$optionsLineItems[‘cmd’] =
‘_cart’;
// $optionsLineItems[‘num_cart_items’] = sizeof($order->products);

if (isset($optionsLineItems[‘shipping’])) {
$optionsLineItems[‘shipping_1’] =
$optionsLineItems[‘shipping’];
unset($optionsLineItems[‘shipping’]);
}
if (isset($optionsLineItems[‘handling’])) {
$optionsLineItems[‘handling_1’] =
$optionsLineItems[‘handling’];
unset($optionsLineItems[‘handling’]);
}
unset($optionsLineItems[‘subtotal’]);
// if line-item details couldn’t be kept due to calculation mismatches or discounts etc,
default to aggregate mode

if (!isset($optionsLineItems[‘item_name_1’])) $optionsLineItems
=
array();
//if ($optionsLineItems[‘amount’] != $this->transaction_amount) $optionsLineItems = array();
ipn_debug_email(‘Line Item Details (if blank, this means there was a data mismatch, and thus bypassed): ‘
.
“\n”
.
print_r($optionsLineItems,
true));
}

$products_name_display
=
“”;

/*
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
if(i > 0) {
$products_name_display.= ‘, ‘;
}

$products_name_display.= $order->products[$i][‘name’]. ‘(‘. $order->products[$i][‘qty’] .’,’.$order->products[$i][‘dhisys_web_order_number’].’)’;
}*/
$optionsAggregate
=
array(
‘cmd’
=>
‘_ext-enter’,
‘item_name’
=>
$products_name_display,
‘item_number’
=>
$order_id,
‘num_cart_items’
=>
sizeof($order->products),
‘amount’
=>
number_format($this->transaction_amount,
$currencies->get_decimal_places($my_currency)),
‘shipping’
=>
‘0.00’,
);
if (MODULE_PAYMENT_PAYPAL_TAX_OVERRIDE ==
‘true’) $optionsAggregate[‘tax’] =
‘0.00’;
if (MODULE_PAYMENT_PAYPAL_TAX_OVERRIDE ==
‘true’) $optionsAggregate[‘tax_cart’] =
‘0.00’;
$optionsTrans
=
array(
‘upload’
=> (int)(sizeof($order->products) >
0),
‘currency_code’
=>
$my_currency,
// ‘paypal_order_id’ => $paypal_order_id,
//’no_note’ => ‘1’,
//’invoice’ => ”,
);

// if line-item info is invalid, use aggregate:

if (sizeof($optionsLineItems) >
0) $optionsAggregate
=
$optionsLineItems;

// prepare submission

$options
=
array_merge($optionsCore,
$optionsCust,
$optionsPhone,
$optionsShip,
$optionsTrans,
$optionsAggregate);
ipn_debug_email(‘Keys for submission: ‘
.
print_r($options,
true));

if(sizeof($order->products) >
0){
$options[‘cmd’] =
‘_cart’;
for ($i=0,
$n=sizeof($order->products); $i<$n; $i++) {
$options[‘item_name_’. (string)($i+1)] =
$order->products[$i][‘name’];
$options[‘item_number_’. (string)($i+1)] =
$order->products[$i][‘dhisys_web_order_number’];
$options[‘amount_’. (string)($i+1)] =
number_format((float)$order->products[$i][‘final_price’],2);
$options[‘quantity_’. (string)($i+1)] =
$order->products[$i][‘qty’];
}

}

// build the button fields

foreach ($options
as
$name
=>
$value) {
// remove quotation marks

$value
=
str_replace(‘”‘,
”,
$value);
// check for invalid chars

if (preg_match(‘/[^a-zA-Z_0-9]/’,
$name)) {
ipn_debug_email(‘datacheck – ABORTING – preg_match found invalid submission key: ‘
.
$name
.
‘ (‘
.
$value
.
‘)’);
break;
}
// do we need special handling for & and = symbols?
//if (strpos($value, ‘&’) !== false || strpos($value, ‘=’) !== false) $value = urlencode($value);

$buttonArray[] = zen_draw_hidden_field($name,
$value);
}

$_SESSION[‘paypal_transaction_info’] =
array($this->transaction_amount,
$this->transaction_currency);

$process_button_string
=
implode(“\n”,
$buttonArray) .
“\n”;
return
$process_button_string;
}

}
?>

3. 在checkout_success页面中显示pay now按钮。打开文件”includes/modules/pages/checkout_success/header.php”,在文件的末尾添加下面的代码(如果你已经掌握zen-cart中的通知者/观察者模式,并且又不想破坏zen-cart核心代码的话,也可以创建一个观察类来监听 NOTIFY_HEADER_END_CHECKOUT_SUCCESS来实现)。
require_once(DIR_WS_CLASSES .
‘order.php’);
require_once(DIR_WS_CLASSES .
‘payment.php’);
$payment_modules
=
new payment($orders->fields[‘payment_module_code’]);

打开文件”includes/modules/templates/template_default/templates /tpl_checkout_success_default.php”,并在适当的位置加上如下的代码,这里对订单的状态进行了一个判断,当只有订单的状态在未付款状态,才显示该按钮,
//&& $orders->fields[‘orders_status’] == ‘1’

if(isset($payment_modules->paynow_action_url) &&
$payment_modules->paynow_action_url !=
”&&
$orders->fields[‘orders_status’] ==
‘1’){
echo(‘
‘);
echo(‘
‘.TEXT_PAYNOW.’

‘);
echo zen_draw_form(‘checkout_paynow’,
$payment_modules->paynow_action_url,
‘post’,
‘id=”checkout_confirmation” onsubmit=”submitonce();”‘);
$selection
=
$payment_modules->selection();
echo(‘
‘.$selection[0][‘module’].’

‘);
echo(‘
‘);
if (is_array($payment_modules->modules)) {
echo
$payment_modules->paynow_button($orders_id);
}
echo(zen_image_submit(BUTTON_IMAGE_PAYNOW, BUTTON_IMAGE_PAYNOW_ALT,
‘name=”btn_paynow” id=”btn_paynow”‘));
echo(‘

‘);
echo(‘

‘);
echo(‘

‘);
}
?>

4. 在历史订单中显示pay now按钮。需要显示pay now按钮的页面有三个:account, account_history,account_history_info,这里的实现和checkout_success页面的实现大同小异,只是传给$payment_modules的函数paynow_button的参数不一样而已,这里就不再赘述。

总结:
经过上面的修改,我们的流程如下:

1. 购物车(shopping cart)

2. [货运方式(delivery method)]
3. 支付方式(payment method)
4. 订单确认(confirmation)

5. 订单处理(checkout process)
6. 下单成功(checkout success)
7. [第三方网站支付] 因为从订单确认到订单处理,都是在我们自己的网站完成的,并且进入支付网站之前,订单已经存在了,这样就不会出现掉单的情况了。

解决zen cart目录链接为-c-.html的问题

2011 年 02 月 19 日 下午 3:12 | 小龙包

在进行一些zen cart设置时发现产品页面(product_info)的category icon显示有两个问题,一是category name不显示,二是链接错误,形如:http://example.com/-c-.html (开启了SEO URLS后)。检查后台设置 admin -> configuration -> product info 是没有问题的,默认就已经打开,因此错误来源于代码问题。检查 includes/modules/category_icon_display.php 可以看到如下代码:

$category_icon_display_name = zen_get_categories_name((int)$current_category_id);
$category_icon_display_image = zen_get_categories_image((int)$current_category_id);

然而die($category_icon_display_name)出来的结果是空的。检查 zen_get_categories_name 函数没有问题,因此问题出在 $current_category_id 变量,果然,打印结果显示它是空的!经过搜索 $current_category_id 变量初始化于 includes/init_includes/init_category_path.php,检查代码可以看到:

$cPath = zen_get_product_path($_GET[‘products_id’]);

检查函数 zen_get_product_path 代码可以看到zen cart使用 master_categories_id 来查看产品的分类的,而数据库中 master_categories_id 全是 0 !这时想到我们上产品基本都是使用 easy populate 插件来完成,master_categories_id 为空的情况只可能是由于 easy populate 的不完整,代码有点小失误(暂未细查)。OK,问题找到了,临时的解决办法是首先完善 zen_get_products_category_id 函数(因为它也是只根据 master_categories_id 查看分类,而未查看 products_to_categories 表),在 return 之前加入代码:

if (! $the_products_category->fields[‘master_categories_id’]) {
$d_p2c_cid = $db->Execute(‘SELECT categories_id FROM `’ . TABLE_PRODUCTS_TO_CATEGORIES . ‘` WHERE products_id=”‘ . $products_id . ‘”‘)->fields[‘categories_id’];
$the_products_category->fields[‘master_categories_id’] = $d_p2c_cid;
}

然后打开 includes/modules/category_icon_display.php,在 $category_icon_display_name = zen_get_categories_name((int)$current_category_id); 前加入代码:

$current_category_id = zen_get_products_category_id((int)$_GET[‘products_id’]);

category id 获取不到的问题解决,接着打开 template_default/templates/tpl_modules_category_icon_display.php,将 $_GET[‘cPath’] 改为 $current_category_id 即可,category icon问题解决。

zen-cart运费模块重量都自动的增加了3kg解决方法

2011 年 02 月 18 日 上午 11:08 | 小龙包

zen-cart运费模块,后台设置之后,使用的是weight来算运费,发现重量都自动的增加了3kg,原来种是5.9kg的变成了下面的,运费算的时候也是按那个多加了3 的算的
Total Items: 2 Weight: 5.9kg Amount: $200.00
显示成:
DHL Rates (Shipping to UM (1 x 8.90g)) $14.75
EMS Rates (Shipping to UM (1 x 8.90g)) $14.75

解决方法:
后台 商店设置 配送参数

小包裹包装材料 – 百分比+重量 设置为 0:0

大包裹包装材料 也同样

原来是加上了包装材料的重量。

Pages: Prev 1 2 3 ... 137 138 139 140 141 ... 180 181 182 Next