V 1.0.0
2014/07/30
...................................................................................................................................... 3
.............................................................................................................................. 3
.................................................................................................................. 4
...................................................................................................................... 5
.............................................................................................................. 6
...................................................................................................................................... 9
CheckValue ........................................................................................................ 10
.............................................................................................................. 11
1.
ebATM
ATM
2.
API
3.
1.
HTTP POST
2.
3.
UTF-8
() https://capi.pay2go.com/API/QueryTradeInfo
1.
(1) https://cweb.pay2go.com/
(2)
2.
3.
30
() https://api.pay2go.com/API/QueryTradeInfo
1.
(1) https://www.pay2go.com/
(2)
2.
3.
Post
1.
MerchantID
Varchar(15)
Version
Varchar(5)
1.0
RespondType
Varchar(5)
JSONString
CheckValue
Varchar(255)
Unix 1970
1 1 00:00:00
TimeStamp
Varchar(50)
php
time()
2014-05-15 15:00:00
1400137200
1.
MerchantOrderNo
Varchar(20)
_
201406010001
2.
Amt
Int(10)
1000
2.
Web Services
JSON String
1. SUCCESS
Status
Varchar(10)
2.
Message
Varchar(30)
MerchantID
Varchar(15)
Amt
Int(15)
TradeNo
Varchar(20)
MerchantOrderNo
Varchar(20)
0=
TradeStatus
Int(1)
1=
2=
3=
CREDIT=
PaymentType
VACC= ATM
Varchar(10)
WEBATM=
BARCODE=
CVS=
CreateTime
DateTime
PayTime
DateTime
2014-06-25 16:43:49
2014-06-25 16:43:49
CheckValue
Hash
Pay2go
1.
RespondCode
Varchar(10)
2.
1.
Auth
Varchar(10)
2.
1.3D eci=1,2,5,6 3D
ECI
ECI
Varchar (1)
2.
CloseAmt
Int(11)
0=
CloseStatus
Int(1)
1=
2=
3=
BackBalance
Int(11)
0=
BackStatus
Int(1)
1=
2=
3=
(2) String
Status=SUCCESS&Message=
&MerchantID=11250&Amt=10&MerchantOrderNo=20140519193443
&CheckValue=478AD4CE7CD7FA691D79172B9D7E
MEM40013
MEM40008
MEM40014
TRA10001
TRA10003
TRA10009
TRA10012
TRA10021
TRA10036
RespondType
TRA10037
TRA10054
(CheckValue)
CheckValue
1.
(Amt)(MerchantID)
(MerchantOrderNo)(TradeNo) A~Z
&
TradeNo CheckValue
2.
Key IV
3.
SHA256
PHP strtoupper(hash("sha256", $check_code_str))
1.
Amt=100&MerchantID=1422967&MerchantOrderNo=840f022
2.
3.
SHA256
157DF3A1113977D6322BEDA6F959DBF1CBD3A1E0381D7A989064B201CDE9
0502
10
<?php
$url = "https://capi.pay2go.com/API/QueryTradeInfo";
$merchant_id = "123456"; //
$key = "tZT07t9z5PxvMVN1YBJRtqzhaaZJo1pS";
// Key
$iv = "1jT8N2HSSfoFacH8"; // IV
$RespondType= "JSON";
// JSON String
$Amt = 1;
$MerchantOrderNo = "1401423320";
$CheckValue="IV=$iv&Amt=$Amt&MerchantID=$merchant_id&$MerchantOrderNo
=$MerchantOrderNo&Key=$key"
$ CheckValue = strtoupper(hash("sha256", $CheckValue))
function curl_work($url = "", $parameter = "") {
$curl_options = array(
CURLOPT_URL => $url,
CURLOPT_HEADER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERAGENT => "Google Bot",
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_SSL_VERIFYHOST => FALSE,
CURLOPT_POST => "1",
CURLOPT_POSTFIELDS => $parameter
//
);
$ch = curl_init();
curl_setopt_array($ch, $curl_options);
$result = curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curl_error = curl_errno($ch);
curl_close($ch);
11
$return_info = array(
"url" => $url,
"sent_parameter" => $parameter,
"http_status" => $retcode,
"curl_error_no" => $curl_error,
"web_info" => $result
);
return $return_info;
}
//========
$post_data_array = array( //post_data
"RespondType" => $RespondType,
"Amt" => $Amt,
"TradeNo" =>$TradeNo,
"MerchantOrderNo" =>$MerchantOrderNo,
"TimeStamp" => time(),
"CheckValue" => $CheckValue,
);
$post_data_str = http_build_query($post_data_array);
$post_data = trim(bin2hex(mcrypt_encrypt(MCRYPT_RIJNDAEL_128,
$key, addpadding($post_data_str), MCRYPT_MODE_CBC, $iv))); //
$transaction_data_array = array( //
"MerchantID_" => $merchant_id,
"PostData_" => $post_data
);
$transaction_data_str = http_build_query($transaction_data_array);
if($RespondType=="JSON") {
echo " <hr>JSON <hr>";
12
echo ":".$value[Status]."<br>";
echo ":".$value[Message]."<br>";
echo ":".$value[MerchantID]."<br>"; //
echo ":".$value[Amt]."<br>";
//
echo ":".$value[TradeNo]."<br>";
//
echo ":".$value[MerchantOrderNo]."<br>";
echo ":".$value[CheckValue]."<br>";
//
//
echo ":".$value[Status]."<br>"; //
echo ":".$value[PaymentType]."<br>"; //
echo ":".$value[PayTime]."<br>"; //
//
echo ":".$value[RespondCode]."<br>"; //
echo ":".$value[Auth]."<br>"; //
echo " ECI:".$value[ECI]."<br>"; // ECI
echo ":".$value[CloseAmt]."<br>"; //
echo ":".$value[CloseStatus]."<br>"; //
echo ":".$value[BackBalance]."<br>"; //
13
echo ":".$value[BackStatus]."<br>"; //
}
if($RespondType=="String") {
echo " <hr>String <hr>";
$str=$result['web_info'];
parse_str(trim($str),$value);
echo ":".$value[Status]."<br>";
echo ":".$value[Message]."<br>";
echo ":".$value[MerchantID]."<br>"; //
echo ":".$value[Amt]."<br>";
//
echo ":".$value[TradeNo]."<br>";
//
echo ":".$value[MerchantOrderNo]."<br>";
echo ":".$value[CheckValue]."<br>";
//
//
echo ":".$value[Status]."<br>"; //
echo ":".$value[PaymentType]."<br>"; //
echo ":".$value[PayTime]."<br>"; //
//
echo ":".$value[RespondCode]."<br>"; //
echo ":".$value[Auth]."<br>"; //
echo " ECI:".$value[ECI]."<br>"; // ECI
14
echo ":".$value[CloseAmt]."<br>"; //
echo ":".$value[CloseStatus]."<br>"; //
echo ":".$value[BackBalance]."<br>"; //
echo ":".$value[BackStatus]."<br>"; //
15