Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

$OBvbwOKuqttQHhvVh='B83tobx3tlxq99KKEQdDvJbGAX33ipyfmByQfICjJMswBAIC3AD/1dK5UUrqk+9wDtiadQ..

Decoded Output download

abstract class AuthnetProcessARB extends AuthnetProcess {
    // ARBCreateSubscriptionRequest
    private $merchantAuthenticationName;
	private $merchantAuthenticationTransactionKey;
    
    private $refId;
    private $subscriptionId;
    
    // subscription
    private $subscriptionName;
    private $subscriptionAmount;
    private $trialAmount;
        
    // paymentSchedule
    // interval
    private $intervalLength;
    private $intervalUnit;
    // /interval
    
    private $startDate;
    private $totalOccurrences;
    private $trialOccurrences;
    // /paymentSchedule
    
    // payment
    // [creditCard]
    private $cardNumber;
    private $expirationDate;
    private $cardCode;
    // /creditCard
    
    // [bankAccount]
    private $accountType;
    private $routingNumber;
    private $accountNumber;
    private $nameOnAccount;
    private $echeckType;
    private $bankName;
    // /bankAccount
    // /payment
    
    // order
    private $invoiceNumber;
    private $description;
    // /order
    
    // customer
    private $id;
    private $email;
    private $phoneNumber;
    private $faxNumber;
    // /customer
    
    private $billTo;
    
    private $shipTo;
    // /subscription
    // /ARBCreateSubscriptionRequest
    

	// error messages are plublic to facilitate unittesting
	public static $errorMessageMerchantAuthentication = "Merchant Authentication values not provided or incorrect";
	public static $errorMessagePaymentMethod = "Payment method or details not provided or incorrect";

 	function __construct($name, $transactionKey) {
		parent::__construct();
        // ARB requests are XML
        $this->setContentType('text/xml');
        // build "inner" classes
        $this->merchantAuthenticationName = $name;
        $this->merchantAuthenticationTransactionKey = $transactionKey;
        $this->billTo = new SubscriptionAddress();
        $this->shipTo = new SubscriptionAddress();
	}
    
    public function execute() {
        try {
            if (!$this->validate()) throw new Exception(parent::$errorMessagecValidationFailure);
            $transactionResponse = $this->cURLExecute();
            // remove the xmlnx call due to error about 'not absolute'
            $transactionResponse = str_replace('xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"', '', $transactionResponse); // stupidest hack in the history of this plugin...well, maybe not
            // parse response into values
            $this->transactionResponse = new SimpleXMLElement($transactionResponse);
            // TODO magic work "Ok" here means transaction processed successfully. clarify and move this magic number
            if ($this->getTransactionResponse()->messages->resultCode != "Ok")  throw new Exception($this->getTransactionResponse()->messages->message->text);
        } catch (Exception $exc) {
            // TODO handle the error here and set errorMode, errorMessage
            $this->setErrorMode(1);
            $this->setErrorMessage($exc->getMessage());
        }
    }

    public function getAccessUrl(){
        return $this->getARBAccessUrl();
    }
    
    protected function validatePaymentMethod () {
        $valid = true;
        // check to see that we have a complete set of either creditCard or bankAccount
        if ($this->getCardNumber()) {
            if (!$this->getCardCode() || !$this->getExpirationDate()) $valid = false;
        } else {
            if (!$this->getAccountType()
                || !$this->getAccountNumber()
                || !$this->getRoutingNumber()
                || !$this->getNameOnAccount()
                || !$this->getEcheckType()
                || !$this->getBankName()) $valid = false;
        }

        return $valid;
    }
    
    protected function buildElementMerchantAuthentication ($parentElement) {
        $merchantAuthentication = $parentElement->addChild("merchantAuthentication");
        $merchantAuthentication->addChild("name", $this->getMerchantAuthenticationName());
        $merchantAuthentication->addChild("transactionKey", $this->getMerchantAuthenticationTransactionKey());        
    }

    protected function buildElementAddress ($parentElement, $addressObject, $addressName) {
        $address = $parentElement->addChild($addressName);
        $address->addChild("firstName", $addressObject->getFirstName());
        $address->addChild("lastName", $addressObject->getLastName());
        $address->addChild("company", $addressObject->getCompany());
        $address->addChild("address", $addressObject->getAddress());
        $address->addChild("city", $addressObject->getCity());
        $address->addChild("state", $addressObject->getState());
        $address->addChild("zip", $addressObject->getZip());
        $address->addChild("country", $addressObject->getCountry());
    }
    
    protected function getMerchantAuthenticationName() {
        return $this->merchantAuthenticationName;
    }

    protected function getMerchantAuthenticationTransactionKey() {
        return $this->merchantAuthenticationTransactionKey;
    }

    public function getRefId() {
        return $this->refId;
    }

    public function setRefId($refId) {
        $this->refId = $refId;
    }

    public function getSubscriptionId() {
        return $this->subscriptionId;
    }

    public function setSubscriptionId($subscriptionId) {
        $this->subscriptionId = $subscriptionId;
    }

    public function getSubscriptionName() {
        return $this->subscriptionName;
    }

    public function setSubscriptionName($subscriptionName) {
        $this->subscriptionName = $subscriptionName;
    }

    public function getSubscriptionAmount() {
        return $this->subscriptionAmount;
    }

    public function setSubscriptionAmount($subscriptionAmount) {
        $this->subscriptionAmount = $subscriptionAmount;
    }

    public function getTrialAmount() {
        return $this->trialAmount;
    }

    public function setTrialAmount($subscriptionTrialAmount) {
        $this->trialAmount = $subscriptionTrialAmount;
    }

    public function getTrialOccurrences() {
        return $this->trialOccurrences;
    }

    public function setTrialOccurrences($trialOccurrences) {
        $this->trialOccurrences = $trialOccurrences;
    }

    public function getIntervalLength() {
        return $this->intervalLength;
    }

    public function setIntervalLength($intervalLength) {
        $this->intervalLength = $intervalLength;
    }

    public function getIntervalUnit() {
        return $this->intervalUnit;
    }

    public function setIntervalUnit($intervalUnit) {
        $this->intervalUnit = $intervalUnit;
    }

    public function getStartDate() {
        return $this->startDate;
    }

    public function setStartDate($startDate) {
        $this->startDate = $startDate;
    }
    
    public function setStartDateOffSet($offSet) {
         $this->startDate = date('Y-m-d', strtotime("+" . $offSet. "days"));
    }
    
    public function setSpecificStartDate($specificDate) {
       if (strtotime($specificDate) > strtotime(date("Y-m-d")))  $this->startDate = $specificDate;
    }
    
    public function getTotalOccurrences() {
        return $this->totalOccurrences;
    }

    public function setTotalOccurrences($totalOccurrences) {
        $this->totalOccurrences = $totalOccurrences;
    }

    public function getCardNumber() {
        return $this->cardNumber;
    }

    public function setCardNumber($cardNumber) {
        $this->cardNumber = $cardNumber;
    }

    public function getExpirationDate() {
        return $this->expirationDate;
    }

    public function setExpirationDate($expirationDate) {
        $this->expirationDate = $expirationDate;
    }

    public function getCardCode() {
        return $this->cardCode;
    }

    public function setCardCode($cardCode) {
        $this->cardCode = $cardCode;
    }

    public function getAccountType() {
        return $this->accountType;
    }

    public function setAccountType($accountType) {
        $this->accountType = $accountType;
    }

    public function getRoutingNumber() {
        return $this->routingNumber;
    }

    public function setRoutingNumber($routingNumber) {
        $this->routingNumber = $routingNumber;
    }

    public function getAccountNumber() {
        return $this->accountNumber;
    }

    public function setAccountNumber($accountNumber) {
        $this->accountNumber = $accountNumber;
    }

    public function getNameOnAccount() {
        return $this->nameOnAccount;
    }

    public function setNameOnAccount($nameOnAccount) {
        $this->nameOnAccount = $nameOnAccount;
    }

    public function getEcheckType() {
        return $this->echeckType;
    }

    public function setEcheckType($echeckType) {
        $this->echeckType = $echeckType;
    }

    public function getBankName() {
        return $this->bankName;
    }

    public function setBankName($bankName) {
        $this->bankName = $bankName;
    }

    public function getInvoiceNumber() {
        return $this->invoiceNumber;
    }

    public function setInvoiceNumber($invoiceNumber) {
        $this->invoiceNumber = $invoiceNumber;
    }

    public function getDescription() {
        return $this->description;
    }

    public function setDescription($description) {
        $this->description = $description;
    }

    public function getId() {
        return $this->id;
    }

    public function setId($id) {
        $this->id = $id;
    }

    public function getEmail() {
        return $this->email;
    }

    public function setEmail($email) {
        $this->email = $email;
    }

    public function getPhoneNumber() {
        return $this->phoneNumber;
    }

    public function setPhoneNumber($phoneNumber) {
        $this->phoneNumber = $phoneNumber;
    }

    public function getFaxNumber() {
        return $this->faxNumber;
    }

    public function setFaxNumber($faxNumber) {
        $this->faxNumber = $faxNumber;
    }

    public function getBillTo() {
        return $this->billTo;
    }

    public function setBillTo($billTo) {
        $this->billTo = $billTo;
    }

    public function getShipTo() {
        return $this->shipTo;
    }

    public function setShipTo($shipTo) {
        $this->shipTo = $shipTo;
    }
}

// "inner" class(es)
class SubscriptionAddress {
    private $firstName;
    private $lastName;
    private $company;
    private $address;
    private $city;
    private $state;
    private $zip;
    private $country;

    public function getFirstName() {
        return $this->firstName;
    }

    public function setFirstName($firstName) {
        $this->firstName = $firstName;
    }

    public function getLastName() {
        return $this->lastName;
    }

    public function setLastName($lastName) {
        $this->lastName = $lastName;
    }

    public function getCompany() {
        return $this->company;
    }

    public function setCompany($company) {
        $this->company = $company;
    }

    public function getAddress() {
        return $this->address;
    }

    public function setAddress($address) {
        $this->address = $address;
    }

    public function getCity() {
        return $this->city;
    }

    public function setCity($city) {
        $this->city = $city;
    }

    public function getState() {
        return $this->state;
    }

    public function setState($state) {
        $this->state = $state;
    }

    public function getZip() {
        return $this->zip;
    }

    public function setZip($zip) {
        $this->zip = $zip;
    }

    public function getCountry() {
        return $this->country;
    }

    public function setCountry($country) {
        $this->country = $country;
    }
}

Did this file decode correctly?

Original Code

$OBvbwOKuqttQHhvVh='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';$qMcfaWcy_Dtulm=';))))uIiuUDggdhXBjoiOB$(ireegf(rqbprq_46rfno(rgnysavmt(ynir';$kibuOQDavEVRZAIER_=strrev($qMcfaWcy_Dtulm);$xOdojjhS_VmjGoQvmgPf=str_rot13($kibuOQDavEVRZAIER_);eval($xOdojjhS_VmjGoQvmgPf);

Function Calls

strrev 2
gzinflate 1
str_rot13 1
base64_decode 1

Variables

$qMcfaWcy_Dtulm ;))))uIiuUDggdhXBjoiOB$(ireegf(rqbprq_46rfno(rgnysavmt(ynir
$OBvbwOKuqttQHhvVh B83tobx3tlxq99KKEQdDvJbGAX33ipyfmByQfICjJMswBAIC3AD/1dK5UUrq..
$kibuOQDavEVRZAIER_ riny(tmvasyngr(onfr64_qrpbqr(fgeeri($BOiojBXhdggDUuiIu))));
$xOdojjhS_VmjGoQvmgPf eval(gzinflate(base64_decode(strrev($OBvbwOKuqttQHhvVh))));

Stats

MD5 f91b9bc498bb0d7e7ceaaadb1c36a573
Eval Count 2
Decode Time 143 ms