2014年1月9日 星期四

ECSHOP 自訂支付方式(金流)模組) 轉載自 we-shop



ECSHOP 支付方式(金流)模組,其實並不複雜、反而是各家金流(銀行)的接口真是五花八門,想用的人還要請人撰寫模組,真是勞民傷財啊!所以我還是鼓勵用現成的模組,如綠界金流,他們負責整合多加刷卡銀行,並提供相對金流模組,而且模組的更新也很快,對於使用者可節省很多麻煩...

底下提供的作法只是一個參考,至少需要點PHP基礎,才能針對金流(銀行)的接口正確傳送資料,由於各家金流(銀行)都有一套自己的模式,沒有統一模式,因此應該多做測試...,支付方式(金流)模組一樣有個語言檔和PHP程式檔,語言檔和程式檔的檔案名稱必須一樣,而且是唯一的,不可與其他的支付模組重複...

假設我想建立一個XX銀行的支付方式模組,檔案名稱為 your_pay.php

1、在 languages/zh_tw/shipping 目錄內新增語言檔案,名稱為 your_pay.php
基本內容如下
代碼: [選擇]
<?phpglobal $_LANG;$_LANG['your_pay'] = 'XX 線上金流名稱';$_LANG['your_pay_desc'] = ' XX 線上金流描述';$_LANG['your_pay_account'] = '商店代號或帳號';$_LANG['your_pay_checkcode'] = 'XX 檢查碼或密碼';$_LANG['pay_button'] = '線上信用卡付款';/*
可以加上其他的語言,如:
$_LANG['your_pay_language'] = '付款界面語言';
$_LANG['your_pay_language_desc'] = '出現在付款界面的語言';
$_LANG['your_pay_language_range'][0] = '繁體中文';
$_LANG['your_pay_language_range'][1] = 'English';
*/
?>

2,在 includes/modules/shipping 目錄內新增程式檔案,名稱和語言檔相同 your_pay.php
參考內容如下
代碼: [選擇]
<?php//載入語言檔$payment_lang ROOT_PATH 'languages/' .$GLOBALS['_CFG']['lang']. '/payment/your_pay.php';

if (
file_exists($payment_lang))
{
    global 
$_LANG;

    include_once(
$payment_lang);
}
//模組的基本設定if(isset($set_modules) && $set_modules == TRUE)
{
    
$i = (isset($modules)) ? count($modules) : 0;//模組的代碼必須與檔案同名
    
$modules[$i]['code']    = basename(__FILE__'.php');//模組的描述,來自語言檔
    
$modules[$i]['desc']    = 'your_pay_desc';
  
//模組的版本 
    
$modules[$i]['version'] = '1.0.0';//是否使用貨到付款,是=TRUE、否=FALSE
    
$modules[$i]['cod']     = TRUE;//模組的作者
    
$modules[$i]['author']  = "andy";//模組作者的網站
    
$modules[$i]['website'] = "http://www.we-shop.net";//配送接口需要的參數
    
$modules[$i]['configure'] = array(
        array(
'name' => 'your_pay_account',           'type' => 'text',   'value' => ''),//商店代號或帳號
        
array('name' => 'your_pay_checkcode',         'type' => 'text',   'value' => ''),//XX 檢查碼或密碼
/*外加選項
array('name' => 'your_pay_language',          'type' => 'select',    'value' => '0')// 付款界面語言
*/
    
);
    return;
}
//模組的類與檔案同名class your_pay{//傳送訂單資料
    
function get_code($order$payment)
    {
        
//導入轉碼檔案,如果需要
        //include_once(ROOT_PATH.'includes/iconv/cls_iconv.php');
        //$iconv = new Chinese(ROOT_PATH);
        
trim($payment['your_pay_account']); //商店代號或帳號
        
$order['order_sn'];//訂單編號
        
$order['log_id'];//訂單ID
        
trim($order['consignee']);        //收貨人
        
trim($order['address']);    //送貨地址
        
trim($order['tel']);    //電話
        
trim($order['mobile']);//手機
        
trim($order['zipcode']);//郵遞區號
        
trim($order['email']);//電子郵件
        
round($order['order_amount']);//訂單金額
        
date('Ymd',time());//目前日期
        
return_url(basename(__FILE__'.php'));//回傳頁面,本頁
        //$payment['your_pay_language'];// 付款界面語言

//通常會附帶傳送一組自訂的加密自串供回傳判斷
    
$mitycat_verify    md5('XXXXX');//按照接口要求,以表單傳送必要資料
        
$def_url  '<br /><form style="text-align:center;" method=get或post action="接口網址">';//使用隱藏欄位傳送資料
        
$def_url .= "<input type='hidden' name='XXX' value='".$XXX."'>";
        
$def_url .= "<input type='hidden' name='XXX' value='".$XXX."'>";
        
$def_url .= "<input type='hidden' name='XXX' value='".$XXX."'>";
        
$def_url .= "<input type='hidden' name='XXX' value='".$XXX."'>";
        
$def_url .= "<input type='hidden' name='XXX' value='".$XXX."'>";
        
$def_url .= "<input type='hidden' name='XXX' value='".$XXX."'>";//表單會顯示在結帳完成頁面
        
$def_url .= "<input type='submit' value='" $GLOBALS['_LANG']['pay_button'] . "'>";
        
$def_url .= "</form><br />";
        return 
$def_url;
    }
// 接收回傳資料
    
function respond()
    {
/*
在這裡可以對付款後回傳的資料進行處理,如接收
訂單編號
訂單金額
訂單產生日期
訂單號
交易成功
付款幣種
付款失敗原因       
加密後的字
......   
接收回參數之後,必須對其真實性進行驗証,然後變更收款狀態...

//PS_PAYING  代表已經付款
order_paid('訂單編號', PS_PAYED, '備註');
// PS_PAYED   代表還沒有付款
order_paid('訂單編號', PS_PAYING, '備註');
return true;
*/
    
}
   
}
?>

沒有留言:

張貼留言