網站商城平臺交易支付接口HPH源碼演示服務教程

樓主  收藏   舉報   帖子創建時間:  2018-10-25 18:32 回復:0 關注量:344
提交訂單(商戶通過POST方式用下面代碼將支付請求提交至ChinaBank)
  交易支付接口開發對接

//4位數字,必填,由ChinaBank負責分配

//64位字符以內,必填,兩日內不重復

//必填,單位元,小數點后保留兩位,如10或12.34

//最長25字符

//最長32個字符

//最長12位

//最長128字符

//最長61字符

//不可為空值,長度為8位,格式為yyyymmdd

//商戶配貨狀態,0為未配齊,1為已配齊

//0為人民幣,1為美元

//為消費者完成購物后返回的商戶頁面,URL參數是以http://開頭的完整URL地址

//數字簽名,確保是商戶提供的訂單。

網銀在線支付


說明:1.將漢字改為相應內容,編號、訂單號、訂單總金額為數字。

2.商戶編號為4位數字以上,由網銀分配。

2.訂單號一天內不能重復,如果沒有提供,ChinaEbank系統會自動生成一個訂單號。

3. 訂單金額由數字組成,單位為元,如12 代表12元,不能寫成12.00 。12.34代表12元3角4分。

4.訂單日期由ChinaEbank系統自動生成,以服務器時間為準(北京時間)。

5.關于數字簽名。如果提交v_ md5info, ChinaEbank系統將會啟動數字簽名安全檢測系統,對商戶提交訂單數據及簽名值進行校驗,以保證只接受來自商戶的訂單,并且其內容真實可信,校驗目前必須。

6.高級用戶的功能需要向ChinaEbank辦理相關手續后才能使用。

v_ md5info由開發包的新增函數實現,支持ASP/PHP/JAVA,是推薦的方式。在使用該功能前需要先在服務器上安裝相關文件,詳細安裝法請參見README.TXT。 在開發前請到ChinaEbank管理后臺上設置私鑰值,這里暫為test

MD5字符串值=md5函數(“字符串”,”私鑰”),其中字符串為v_moneytype+v_ymd+v_amount+v_rcvtel+v_oid+v_mid+v_url+password (+表示連接符,起拼湊用,不是需要遞交的字符”+”)

設v_moneytype=”0”, v_ymd=”19990720”, v_amount=”13.45”, v_rcvtel=”12345678”, v_oid=” 19990720-1001-000001234”, v_mid=”1001”, v_url=” http://domain/program”,MD5函數名為md5,私鑰等于 “password” ,變量ordermd5存儲MD5字符串值,則調用方法如下:

ordermd5=md5(“01999072013.451234567819990720-1001-0000012341001http://domain/programpassword”);

注意:拼湊的字符串里不能含有中文。

[以下僅提供參考和建議]

如果你的系統支持php,則可以通過調用PHP內帶MD5函數生成的MD5字符串,這樣可以減少安裝開發包的麻煩。

設v_moneytype=”0”, v_ymd=”19990720”, v_amount=”13.45”, v_rcvtel=”12345678”, v_oid=” 19990720-1001-000001234”, v_mid=”1001”, v_url=” http://domain/program”, 函數名為md5,私鑰等于 “password” ,變量ordermd5存儲MD5字符串值,則調用方法如下:

設v_mid=”0001” , v_oid=”123456” , v_amoun=”12.34” , 函數名為md5,私鑰等于 “password” ,變量ordermd5存儲MD5字符串值,則調用方法如下:



[以上參考和建議結束]

上述v_ md5info值必須提交。特別注意字符串中間不能有空格。

二、返回結果接收與處理(ChinaEbank通過POST方式用下面代碼將支付結果返至商戶)



//訂單編號

//支付方式

//支付狀態 20表示支付成功 1表示非實時卡扣款成功 30表示支付失敗

//支付結果說明,如’支付完成’ 或 ‘支付失敗’

//數字簽名,用于核對上述數據真實性。

//支付金額

//支付貨幣類型

//數字簽名,用于核對支付金額及支付貨幣類型的數據真實性。

//這是上面用到MD5必須的校驗碼,建議商戶對其校驗



說 明:

注意返回結果代碼是由ChinaEbank系統自動實現的,并不需要商戶實現該代碼。提供該代碼的用意是方便商戶理解ChinaEbank返回數據的原理及變量值,以便實時接收訂單支付結果。

商戶自定義返回url地址,帶http頭是指商戶接收支付結果的網頁,如果不涉及到實時銷售,可以簡單的設成商戶域名,如http://www.domain.com ,注意要包括 http:// 。該網址在商戶提交支付表單時自定義。ChinaEbank在消費者網上支付后實時的向該地址通過POST的方式發送支付結果說明。

為了確保安全,有技術開發實力的商戶,一定要通過v_md5info及v_md5money數據簽名來檢驗接收數據的真實有效性,防止惡意行為。

[-----------------------------------------------------------------------------------------------------------------

v_md5info由開發包的新增函數實現,支持ASP/PHP/JAVA,是推薦的方式。在使用該功能前需要先在服務器上安裝相關文件,詳細安裝方法請 參見README.TXT。 v_md5info字符串值=md5函數(“字符串”,”私鑰”),其中字符串為v_oid+v_pstatus+v_pstring+v_pmode的 連接值。

設v_oid=”20040415-1001-123456”,v_pstatus=”20”,v_pstring=”支付完成”,v_pmode=”工商銀行”,函數名為hmac ,私鑰等于 “password” ,變量pmd5存儲MD5字符串值,則調用方法如下:

pmd5 =hmac(“20040415-1001-12345620支付完成工商銀行”,” password”);

if (pmd5== v_md5info) {訂單支付結果可信 ,進入支付結果處理,如果支付成功發貨,不成功給提示。}

-----------------------------------------------------------------------------------------------------------]

如果使用PHP字帶的MD5,上述v_md5info無須校驗和使用,可對返回值v_md5進行校驗。

v_md5:其拼湊及加密是虛擬主機型用戶專用,具體內容見下:

其返回的v_md5拼接字符串的順序為:v_oid,v_pstatus,v_amount,v_moneytype,key

注意:上面的key值是商戶與網銀私下約定的密鑰,在真正用戶支付完畢后,網銀不返回key值。

用戶需要對返回的v_oid,v_pstatus,v_amount,v_moneytype及自己掌握的key進行拼湊,具體操作見演示文檔。

實時性應用強的商戶(售卡網站等),因為各平臺對漢字MD5校驗值存在偏差現象,請商戶勿對v_pmode和v_pstring信息進行唯一確認。因以v_pstatus的值為判斷對象,同時,建議商戶對返回金額與商戶自己數據庫中記錄的金額做進一步判斷操作。

定義:

定義值=md5(v_oid+v_pstatus+v_amount+v_moneytype+key)

在匹配的時候,如果系統對大小寫有區分,請自行轉換。譬如ASP函數中:LCase是將字符轉換為小寫; Ucase是將字符轉換為大寫,相關代碼:大寫 = Ucase(char)

網銀支付接口目前只接受大寫MD5。

實時提貨的商戶還需要對金額信息進一步校驗,即v_md5money校驗,v_md5money字符串=md5函數(“字符串”,”私鑰”),其中字符串為v_amount+v_moneytype的連接值。

設v_amount=”12.34”,v_moneytype=”0”,函數名為hmac ,私鑰等于 “password” ,變量m_pmd5存儲MD5字符串值,則調用方法如下:

m_pmd5=hmac(“12.340”,” password”);

將m_pmd5與接收的v_md5money作比較,如果是相等,剛表明該結果的金額是可信的,注意,商戶要加強安全性的話,除了對支付完成及支付金額做判斷處理,還需要對自己訂單數據庫表中的金額做判斷,防止消費者支付的金額不足。

[以下僅做開發人員參考使用]

v_nmd5由開發包的新增函數實現,支持ASP/PHP/JAVA,該函數只對數字部分的數據進行簽名,主要是解決字符集兼容性問題,使用方法與 v_pmd5類似,區別是取消了。在使用該功能前需要先在服務器上安裝相關文件,詳細安裝方法請參見README.TXT。 MD5字符串值=md5函數(“字符串”,”私鑰”),其中字符串為v_oid+v_pstatus+v_amount+v_moneytype 的連接值。

如果你的系統支持php,則可以通過調用PHP內帶MD5函數生成的MD5字符串,這樣可以減少安裝開發包的麻煩。設 v_oid=”20040415-1001-123456”,v_pstatus=”20”,v_amount=”20.0000”,v_moneytype=”0”, 函數名為md5 ,私鑰等于 “password” ,變量phpmd5存儲MD5字符串值,則調用方法如下:



$phpmd5=md5(“20040415-1001-1234562020.00000password”); ?

if ($phpmd5==HTTP_POST_VARS[‘v_md5’]) { //支付結果可信

…處理支付結果 ,如果成功則發貨,不成功給給予提示。

注意,還要做支付金額判斷處理,防止消費者支付的金額不足。

//同理還需對返回的參數v_md5money值校驗

}

?>

[參考內容,旨在給開發人員提供開發思路]

三.演示代碼(ASP/PHP)

1、PHP代碼



//PHP提交程序示范,僅供參考

$v_mid ="0001"; //商戶編號,改成ChinaEbank負責分配給商戶的編號

$v_oid ="200404161001000001"; //定單號,由商戶負責產生的64位之內訂單編號,一天內不能重復

$v_amount ="00.01"; //定單金額,單位元,小數點后保留兩位,如10或12.34,如果為整數,則不需要小數點

$v_rcvname ="test"; //收貨人名字

$v_rcvtel ="8008101234"; //收貨人電話

$v_rcvpost ="100000"; //收貨人郵編

$v_rcvaddr ="beijing"; //收貨人地址

$v_ordername="chinabank"; //發貨人名字

$v_ymd ="20040415"; //訂單生成日期

$v_orderstatus ="0"; //配貨狀態

$v_moneytype ="0"; //支付幣種

$v_url ="http://www.test.com/receive.php"; //返回商戶頁面地址

$key ="test"; //默認的私鑰值,更改私鑰后要修改這里

$md5string=strtoupper(md5($v_moneytype.$v_ymd.$v_amount.$v_rcvtel.$v_oid.$v_mid.$v_url.$key));

?>商務信息網




網銀在線支付


//PHP接收程序示范,僅供參考

//-----------接收ChinaBank平臺返回的信息--------------------------------------------------------------------

$v_oid =trim($HTTP_POST_VARS['v_oid' ]); //支付定單號

$v_pmode =trim($HTTP_POST_VARS['v_pmode' ]); //支付方式

$v_pstatus=trim($HTTP_POST_VARS['v_pstatus']); //支付狀態(如果為”20“,則表示支付成功,1為已對非實時支付卡扣款成功,30表示支付失敗)

$v_pstring=trim($HTTP_POST_VARS['v_pstring']); //支付結果說明,如”支付完成”或”支付失敗”

$v_amount=trim($HTTP_POST_VARS['v_amount']); //支付金額

$v_md5info =trim($HTTP_POST_VARS['v_md5info' ]); //數字簽名

$v_moneytype =trim($HTTP_POST_VARS['v_moneytype' ]); //支付貨幣類型

$v_md5money =trim($HTTP_POST_VARS['v_md5money' ]); //數字簽名,核對支付金額及支付幣種

//-----------重新計算md5的值---------------------------------------------------------------------------

$key ="test"; //默認的私鑰值,更改私鑰后要修改這里

$md5string=md5($v_oid.$v_pstatus.$v_amount.$v_moneytype.$key);

//$md5money=md5($v_amount.$v_moneytype.$key);

//3-----------判斷返回信息,如果支付成功,并且支付結果可信,則做進一步的處理----------------------------

if(($v_pstatus=="20")&&($v_md5==$md5string)){

// $ v_pstring="支付完成" ---- 亦可以做為判斷支付成功的語句

//do something here;

}

//4---------判斷返回金額信息,對金額及支付幣種校驗

if($v_md5money==$md5money){

//do something here;

}

?> 
有疑惑聯系【技術服務商】:
南陽三百六信息技術有限公司專注支付系統開發、網貸系統開發、智能還款系統開發,8年專注互聯網+金融系統開發,公司,原南陽地區360搜索總代理,公司坐落于河南省南陽市師范學院經緯國際廣場,座機電話:0377-83867263,服務QQ:1123313500,歡迎廣大客戶來我司蒞臨指導,我們竭誠為您服務!

打賞