ECSHOP 支付方式(金流)模組,其實並不複雜、反而是各家金流(銀行)的接口真是五花八門,想用的人還要請人撰寫模組,真是勞民傷財啊!所以我還是鼓勵用現成的模組,如綠界金流,他們負責整合多加刷卡銀行,並提供相對金流模組,而且模組的更新也很快,對於使用者可節省很多麻煩...
底下提供的作法只是一個參考,至少需要點PHP基礎,才能針對金流(銀行)的接口正確傳送資料,由於各家金流(銀行)都有一套自己的模式,沒有統一模式,因此應該多做測試...,支付方式(金流)模組一樣有個語言檔和PHP程式檔,語言檔和程式檔的檔案名稱必須一樣,而且是唯一的,不可與其他的支付模組重複...
假設我想建立一個XX銀行的支付方式模組,檔案名稱為 your_pay.php
1、在 languages/zh_tw/shipping 目錄內新增語言檔案,名稱為 your_pay.php
基本內容如下
2,在 includes/modules/shipping 目錄內新增程式檔案,名稱和語言檔相同 your_pay.php
參考內容如下
底下提供的作法只是一個參考,至少需要點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;
*/
}
}?>
沒有留言:
張貼留言