ecshop flow.php?step=checkout,ecshop支付插件開發

目標一:搞懂ecshop的支付流程

選完商品,進入購物車頁面,點擊“結算中心”,頁面跳轉到flow.php?step=checkout,這個是訂單確認操作。

在訂單確認頁面確定了支付方式,配送方式等可選擇的信息之后,點擊“提交訂單”按鈕,提交表單到flow.php?step=done生成訂單。

flow.php?step=done這個操作中,跟支付有關的操作是生成支付代碼。如下所示:

/* 取得支付信息,生成支付代碼,在線支付代碼*/

if ($order['order_amount'] > 0)

{

$payment = payment_info($order['pay_id']);

//print_r($payment);exit;

include_once('includes/modules/payment/' . $payment['pay_code'] . '.php');

$pay_obj = new $payment['pay_code'];

$pay_online=$pay_obj->get_code($order,unserialize_config($payment['pay_config']));

//print_r(unserialize_config($payment['pay_config']));exit;

$order['pay_desc'] = $payment['pay_desc'];

$smarty->assign('pay_online', $pay_online);

}

通過支付方式的id通過函數payment_info()獲取到支付方式的信息,在通過支付方式的pay_code包含對應的支付模塊。

Ecshop把每一種支付方式都封裝成一個類,比如支付寶支付方式,對應的文件是

includes\modules\payment\alipay.php,這個文件里面封裝了類是alipay,這個類有兩個方法,一個是生成支付代碼的get_code(),根據不同支付接口所需的參數進行配置,然后生成一個字符串,這個字符串就是支付代碼;另外一個是響應操作respond()。其中,接收響應的頁面都是通過return_url(basename(__FILE__, '.php'))函數指定的,生成的鏈接是respond.php?code=,其中code后面的參數就是根據不同的支付方式而不同。Respond.php則根據不同的第三方支付返回的信息進行處理。

目標二:開發支付插件(為了便於講解,再次開發ecshop自帶的支付寶接口alipay,我們改名為alipay_test)

搞清楚支付的基本流程,嘗試開發支付插件。假如要開發一個alipay_test.php插件。

首先,在語言包里面languages\zh_cn\payment新建一個alipay_test.php文件(這里復制alipay.php),然后修改里面的$LANG的下標,都加上_test,$_LANG['pay_button']可以不修改;

然后,在支付模塊includes\modules\payment里面新建一個alipay_test.php,修改模塊的基本信息跟語言包,封裝一個類alipay_test,並且實現兩個方法get_code()和respond();

最后登錄后台查看支付方式。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值