Zencart Paypal先生成订单再付款且是礼物付款

百度了很多Zencart Paypal先生成订单再付款的教程,基本都是同一个方法就是防漏单的,但是这不是我要的,我要的是可以礼物付款而不是商品付款,所以我就结合了网站的很多方法,自己写了一个!

ZenCart默认的下单流程是:

购物车(shopping cart)->[货运方式(shipping method)]->支付方式(payment method)->订单确认(confirmation)->[第三方网站支付]->订单处理(checkout process)->下单成功(checkout success)。

我之前也是按网站上的教程,把代码加在Zencart主题的根目录includes\templates\当前模板名\templates\tpl_checkout_confirmation_default.php文件中 echo TITLE_CONTINUE_CHECKOUT_PROCEDURE . ‘<br />’ . TEXT_CONTINUE_CHECKOUT_PROCEDURE; 这段代码的后面。

这个方法是可以在支付前生成订单,但是不稳定,经常生成订单失败,所以我就修改了生成订单的文件!

以上面的方法是在根目录includes\templates\当前模板名\templates\tpl_checkout_confirmation_default.php 这个文件也就是结算页要提交订单的页面生成订单,而我是在点击提交按钮后处理跳转到支付页面的文件中生成订单!

所以我就在 根目录includes\templates\当前模板名\templates\tpl_fec_confirmation_default.php  在这个文件的顶部加入生成订单并跳转到Paypal的支付页面,为了不干扰其它支付接口,还要做个判断,代码如下:

$class = $_SESSION[‘payment’];

if($class == ‘paypal’){

VIP价 8 折 永久VIP免费

已有0人支付

}

而且还可以设置多个Paypal帐号随机获取然后支付,代码如下:

$pools = array(‘xxxxxxxx%2540outlook.com’,’xxxxxxx%2540outlook.com’,’xxxxxxx%2540outlook.com’);

其中的 “%2540” 这个就是 “@” 是经过转码的。

unset($_SESSION[‘order_number_created’]); 这段代码是用来支付后清空生成的订单号,不然会地下生成不了新订单,因为被旧订单号所占用。

echo “location.href=’https://www.xxxxx.shop/index.php?main_page=checkout&fecaction=null'”; 这段代码是用来生成订单失败,重新返回到结算页面重新提交!

上面方法和代码已经测试可以跳转到Paypal的礼物支付页面! 因为已有成功支付!

所跳转到的Paypal的支付页面如下图:

提供最优质的资源集合

立即查看 了解详情