//測試環境
$status = 1;
//訂單編號
$order_id = "20190119140124";
switch($status){
case 1: //測試
$token_url = 'sandbox-';
$accpwd = base64_encode("app_id:test_secret_code");
break;
case 2: //正式
$token_url = '';
$accpwd = base64_encode("app_id:secret_code");
break;
}
$headers = array('Content-Type:application/json','Authorization:Basic '.$accpwd);
$ch = curl_init();
curl_setopt($ch,CURLOPT_HTTPHEADER,$headers);
curl_setopt($ch,CURLOPT_URL,'https://'.$token_url.'api.pchomepay.com.tw/v1/token');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_POST,TRUE);
curl_setopt($ch,CURLOPT_POSTFIELDS,null);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
$result=curl_exec($ch);
curl_close($ch);
$token = json_decode($result);
$pay_headers = array(
'Content-Type:application/json',
'pcpay-token:'.$token->token);
//傳送給 PChome 想要查詢的訂單編號
$go_url = 'https://'.$token_url.'api.pchomepay.com.tw/v1/payment/'.$order_id;
$ch = curl_init();
curl_setopt($ch,CURLOPT_HTTPHEADER,$pay_headers);
curl_setopt($ch,CURLOPT_URL,$go_url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,false);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_HTTPAUTH,CURLAUTH_BASIC);
$result=curl_exec($ch);
curl_close($ch);
//PChome回傳資訊
$response = json_decode($result);
//回傳格式 {"order_id":"20190119140124","amount":"10000","pay_type":"ATM","trade_amount":10000,"platform_amount":10000,"pp_fee":0,"create_date":"20190119140126","pay_date":null,"actual_pay_date":null,"fail_date":null,"status":"W","status_code":"WP","payment_info":{"virtual_account":"0702902258016987","bank_code":"011","expire_date":"20190122235959"},"available_date":null,"items":[{"name":"test","url":null}]}
//訂單狀態代碼
$status_code=$response->status_code;
switch($status_code){
case "FE": $status_code = '訂單逾時'; break;
case "FT": $status_code = '連線失敗'; break;
case "FF":case "FA": $status_code = '信用卡授權失敗'; break;
case "FP": $status_code = '支付連審單拒絕'; break;
case "FC": $status_code = '廠商自行審單拒絕'; break;
case "FEL": $status_code = '銀行支付超過限額'; break;
case "FEC": $status_code = '銀行支付超過交易次數'; break;
case "FEB": $status_code = '銀行支付帳戶存款不足'; break;
case "FEA": $status_code = '銀行支付帳戶異常'; break;
case "FES": $status_code = '銀行支付接收單位業務停止或關閉'; break;
case "FET": $status_code = '銀行支付交易逾時'; break;
case "FB": $status_code = '支付連餘額不足'; break;
case "WB": $status_code = '尚未選擇銀行'; break;
case "WP": $status_code = 'ATM 待繳款'; break;
case "WAP": $status_code = '支付連審單中'; break;
case "WAC": $status_code = '廠商自行審單中'; break;
case "WO": $status_code = '等待OTP驗證'; break;
}
if($status_code == ''){ $status_code = ''; }else{$status_code = "(".$status_code.")";}
//訂單狀態
$status = $response->status;
switch($status){
case "S": $status = '交易完成'; break;
case "F": $status = '交易失敗'.$status_code; break;
case "W": $status = '交易等待中'.$status_code; break;
}
echo "訂單編號:".$response->order_id."<br/>";
echo "訂單金額:".$response->amount."<br/>";
echo "付款方式:".$response->pay_type."<br/>";
echo "訂單狀態:".$status;