如何開發ecshop支付外掛

thinkyoung發表於2015-06-26

如何開發ecshop支付外掛

ecshop模板網 / 2014-06-03

目標一:搞懂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把每一種支付方式都封裝成一個類,比如支付寶支付方式,對應的檔案是

includesmodulespaymentalipay.php,這個檔案裡面封裝了類是alipay,這個類有兩個方法,一個是生成支付程式碼的get_code(),根據不同支付介面所需的引數進行配置,然後生成一個字串,這個字串就是支付程式碼;另外一個是響應操作respond()。其中,接收響應的頁面都是通過return_url(basename(__FILE__, `.php`))函式指定的,生成的連結是respond.php?code=,其中code後面的引數就是根據不同的支付方式而不同。Respond.php則根據不同的第三方支付返回的資訊進行處理。

  

目標二:開發支付外掛(為了便於講解,再次開發ecshop自帶的支付寶介面alipay,我們改名為alipay_test)

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

首先,在語言包裡面languageszh_cnpayment新建一個alipay_test.php檔案(這裡複製alipay.php),然後修改裡面的$LANG的下標,都加上_test,$_LANG[`pay_button`]可以不修改;

然後,在支付模組includesmodulespayment裡面新建一個alipay_test.php,修改模組的基本資訊跟語言包,封裝一個類alipay_test,並且實現兩個方法get_code()和respond();

最後登入後臺檢視支付方式。


相關文章