<?php
// Pull in the NuSOAP code
require_once($master_config_root_path . "shared/nusoap-0.9.5/lib/nusoap.php");

//PMD wrapper
class PMD {   
    
    private $url = 'https://depot.payment-gate.net/ws/transact.asmx?wsdl';
    private $data = array();
    private $ExtData="<TrainingMode>T</TrainingMode>";
    private $mode = 'LIVE'; // TEST, LIVE
            
    function PMD() {
        $this->data['UserName'] = 'bang7537';
        $this->data['Password'] = 'KU64L4xM';
        if($this->mode == 'LIVE'){
            $this->ExtData = "<TrainingMode>F</TrainingMode>";
        }
    }
    
    function Sale($InvNum = '', $Amount = '', $CardNumber = '', $CardExpMonth = '', $CardExpYear = '', $CardCVV = '') { 
        if(strlen($CardExpYear)==4) $CardExpYear = substr($CardExpYear,2);
        $this->data['TransType'] = "Sale";        
        $this->data['CardNum'] = $CardNumber;
        $this->data['ExpDate'] = $CardExpMonth . $CardExpYear;
        $this->data['MagData'] ="";
        $this->data['NameOnCard'] ="";
        $this->data['Amount'] = $Amount;
        $this->data['InvNum'] = $InvNum;
        $this->data['PNRef'] ="";        
        $this->data['CVNum'] = $CardCVV;
        
        return $this->SendRequest("ProcessCreditCard");
    } 
    
    function Refund($TransactionId = '', $Amount = '', $CardNumber = '', $CardExpMonth = '', $CardExpYear = '') {  
        if(strlen($CardExpYear)==4) $CardExpYear = substr($CardExpYear,2);
        $this->data['TransType'] = "Return";        
        $this->data['CardNum'] = $CardNumber;  
        $this->data['ExpDate'] = $CardExpMonth . $CardExpYear;
        $this->data['Amount'] = $Amount;
        $this->data['PNRef'] = $TransactionId;        
        return $this->SendRequest("ProcessCreditCard");
    } 
    
    function SendRequest($action) {
        $client = new nusoap_client($this->url, true);
        $this->data['ExtData'] = $this->ExtData;
        $return = $client->call($action, $this->data);
        return $return;
    }
}


function PMD_sale($InvNum = '', $Amount = '', $CardNumber = '', $CardExpMonth = '', $CardExpYear = '', $CardCVV = ''){
    
    $result = array('success'=>false, 'message'=>'');
    
    $PMD = new PMD();
    $response = $PMD->Sale($InvNum, $Amount, $CardNumber, $CardExpMonth, $CardExpYear, $CardCVV);

    //test('response', $response);
    
    $result['message'] = $response['ProcessCreditCardResult']['RespMSG'];
    if(isset($response['ProcessCreditCardResult']['Message']))
        $result['message'] = $response['ProcessCreditCardResult']['Message'];
    
    if($response['ProcessCreditCardResult']['RespMSG'] == 'Approved'){
        $result['success'] = true;        
        $result['TransactionID'] = $response['ProcessCreditCardResult']['PNRef'];
        $result['ResponseCode'] = $response['ProcessCreditCardResult']['AuthCode'];
    }
    
    return $result;
}

function PMD_refund($TransactionId = '', $Amount = '', $CardNumber = '', $CardExpMonth = '', $CardExpYear = ''){
    
    $result = array('success'=>false, 'message'=>'');
    
    $PMD = new PMD();
    $response = $PMD->Refund($TransactionId, $Amount, $CardNumber, $CardExpMonth, $CardExpYear);

    //test('response', $response);
    
    $result['message'] = $response['ProcessCreditCardResult']['RespMSG'];
    if(isset($response['ProcessCreditCardResult']['Message']))
        $result['message'] = $response['ProcessCreditCardResult']['Message'];
    if($response['ProcessCreditCardResult']['RespMSG'] == 'Approved'){
        $result['success'] = true;        
        $result['TransactionID'] = $response['ProcessCreditCardResult']['PNRef'];
        $result['ResponseCode'] = $response['ProcessCreditCardResult']['AuthCode'];
    }
    
    return $result;
}

?>