close

        
        //測試環境
        $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;

arrow
arrow

    Austin 發表在 痞客邦 留言(0) 人氣()