Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/joomla4/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/joomla4/mangolib.zip

PK��[B�>�''common/common.incnu�[���<?php
/**
 * Function to auto include files with entities and types
 * @param String $className
 */
function mangoPay_Autoload($className){
    $fileName = substr(strrchr($className, '\\'), 1);
    
    // include entities files
    if (mangoPay_AutoloadCheckAndInclude($fileName, 'entities'))
        return;
    
    // include types files
    if (mangoPay_AutoloadCheckAndInclude($fileName, 'types'))
        return;
    
    // include tools files
    if (mangoPay_AutoloadCheckAndInclude($fileName, 'tools'))
        return;
    
    // include exceptions files
    if (mangoPay_AutoloadCheckAndInclude($fileName,
'types/exceptions'))
        return;
}

function mangoPay_AutoloadCheckAndInclude($fileName, $module) {
    
    $path = __DIR__ . '/../' . $module . '/' .
lcfirst($fileName) . '.inc';
    if (file_exists($path)){
        include_once $path;
        return true;
    }
    
    return false;
}

// register auto load function
spl_autoload_register('mangoPay_Autoload');

// include file with enums
require_once __DIR__ . '/../tools/enums.inc';
PK��[�#o,,common/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK��[%a���entities/bankAccount.incnu�[���<?php
namespace MangoPay;

/**
 * Bank Account entity
 */
class BankAccount extends EntityBase {
    
    /**
     * User identifier
     * @var LeetchiId
     */
    public $UserId;
    
    /**
     * Type of bank account
     * @var string 
     */
    public $Type;
    
    /**
     * Owner name
     * @var string 
     */
    public $OwnerName;
    
    /**
     * Owner address
     * @var string 
     */
    public $OwnerAddress;
    
     /**
     * One of BankAccountDetails implementations, depending on $Type
     * @var object 
     */
    public $Details;
    
    /**
     * Get array with mapping which property depends on other property  
     * @return array
     */
    public function GetDependsObjects() {
        return array(
            'Type' => array(
                '_property_name' => 'Details',
                'IBAN' =>
'\MangoPay\BankAccountDetailsIBAN',
                'GB' =>
'\MangoPay\BankAccountDetailsGB',
                'US' =>
'\MangoPay\BankAccountDetailsUS',
                'CA' =>
'\MangoPay\BankAccountDetailsCA',
                'OTHER' =>
'\MangoPay\BankAccountDetailsOTHER',
            )
        );
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'UserId' );
        array_push( $properties, 'Type' );
        return $properties;
    }
}
PK��[{F�]entities/card.incnu�[���<?php
namespace MangoPay;

/**
 * Card entity
 */
class Card extends EntityBase {
    
    /**
     * Expiration date
     * @var string
     */
    public $ExpirationDate;
    
    /**
     * Alias
     * @var string 
     */
    public $Alias;
    
    /**
     * Card type
     * @var string 
     */
    public $CardType;
    
    /**
     * Product
     * @var string 
     */
    public $Product ;
    
    /**
     * Bank code
     * @var string 
     */
    public $BankCode;
    
    /**
     * Active
     * @var bool 
     */
    public $Active;
    
    /**
     * Currency
     * @var string 
     */
    public $Currency;
    
    /**
     * Validity
     * @var \MangoPay\CardValidity 
     */
    public $Validity;
}PK��[�u]�GG!entities/cardPreAuthorization.incnu�[���<?php
namespace MangoPay;

/**
 * Pre-authorization entity
 */
class CardPreAuthorization extends EntityBase {
    
    /**
     * The user Id of the author of the pre-authorization
     * @var string
     */
    public $AuthorId;
    
    /**
     * It represents the amount debited on the bank account 
     * of the Author.DebitedFunds = Fees + CreditedFunds 
     * (amount received on wallet)
     *  @var \MangoPay\Money
     */
    public $DebitedFunds;
    
    /**
     * Status of the PreAuthorization: CREATED, SUCCEEDED, FAILED
     * @var string
     */
    public $Status;
    
    /**
     * The status of the payment after the PreAuthorization:
     * WAITING, CANCELED, EXPIRED, VALIDATED
     * @var string 
     */
    public $PaymentStatus;
    
    /**
     * The PreAuthorization result code
     * @var string 
     */
    public $ResultCode;
    
    /**
     * The PreAuthorization result Message explaining the result code
     * @var string 
     */
    public $ResultMessage;
        
    /**
     * How the PreAuthorization has been executed. 
     * Only on value for now: CARD
     * @var string 
     */
    public $ExecutionType;
    
    /**
     * The SecureMode correspond to '3D secure' for CB Visa and
MasterCard 
     * or 'Amex Safe Key' for American Express. 
     * This field lets you activate it manually.
     * @var string 
     */
    public $SecureMode;
    
    /**
     * The ID of the registered card (Got through CardRegistration object)
     * @var string 
     */
    public $CardId;
    
    /**
     * Boolean. The value is 'true' if the SecureMode was used
     * @var string 
     */
    public $SecureModeNeeded;
    
    /**
     * This is the URL where to redirect users to proceed 
     * to 3D secure validation
     * @var string 
     */
    public $SecureModeRedirectURL;
    
    /**
     * This is the URL where users are automatically redirected 
     * after 3D secure validation (if activated)
     * @var string 
     */
    public $SecureModeReturnURL;
    
    /**
     * The date when the payment is processed
     * @var Timestamp 
     */
    public $ExpirationDate;
    
     /**
     * The date when the payment was authorized
     * @var Timestamp 
     */
    public $AuthorizationDate;
    
    /**
     * The type of pre-authorization ("CARD" is the only
acceptable value at present
     * @var string 
     */
    public $PaymentType;
    
    /**
     * The Id of the associated PayIn
     * @var string 
     */
    public $PayInId;
    
    /**
     * Get array with mapping which property is object and what type of
object 
     * @return array
     */
    public function GetSubObjects() {
        return array(
            'DebitedFunds' => '\MangoPay\Money'
        );
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'Status' );
        array_push( $properties, 'ResultCode' );
        array_push( $properties, 'ResultMessage' );
        
        return $properties;
    }
}
PK��[����entities/cardRegistration.incnu�[���<?php
namespace MangoPay;

/**
 * CardRegistration entity
 */
class CardRegistration extends EntityBase {
    
    /**
     * User Id
     * @var string
     */
    public $UserId;
    
    /**
     * Access key
     * @var string 
     */
    public $AccessKey;
        
    /**
     * Preregistration data
     * @var string 
     */
    public $PreregistrationData;
        
    /**
     * Card registration URL
     * @var string 
     */
    public $CardRegistrationURL;
        
    /**
     * Card Id
     * @var string 
     */
    public $CardId;
        
    /**
     * Card registration data
     * @var string 
     */
    public $RegistrationData;
        
    /**
     * The result code of the object
     * @var string 
     */
    public $ResultCode;
    
    /**
     * The message explaning the result code
     * @var string 
     */
    public $ResultMessage;
        
    /**
     * Currency
     * @var string 
     */
    public $Currency;
        
    /**
     * Status
     * @var string 
     */
    public $Status;
        
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'AccessKey' );
        array_push( $properties, 'PreregistrationData' );
        array_push( $properties, 'CardRegistrationURL' );
        array_push( $properties, 'CardId' );
        array_push( $properties, 'ResultCode' );
        array_push( $properties, 'ResultMessage' );
        array_push( $properties, 'Status' );
        return $properties;
    }
}PK��[7?I+��entities/client.incnu�[���<?php
namespace MangoPay;

/**
 * Client entity
 */
class Client extends EntityBase {
    
    /**
     * Client identifier
     * @var String
     */
    public $ClientId;
    
    /**
     * Name of client
     * @var String 
     */
    public $Name;
    
    /**
     * Email of client
     * @var String 
     */
    public $Email;
    
    /**
     * Password for client
     * @var String 
     */
    public $Passphrase;
}
PK��[)S��entities/entityBase.incnu�[���<?php

namespace MangoPay;

/**
 * Abstract class with common properties
 */
abstract class EntityBase extends Dto {
    
    /**
     * @var Int Unique identifier
     * (At this moment type is Integer - in the feature will be GUID)
     */
    public $Id;
    
    /**
     * @var String Custom data
     */
    public $Tag;
    
    /**
     * @var Time Date of creation
     */
    public $CreationDate;
    
    /**
     * Construct
     * @param type $id Entity identifier
     */
    function __construct($id = null) {
        $this->Id = $id;
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        return array( 'Id', 'CreationDate' );
    }
}
PK��[
G�SSentities/event.incnu�[���<?php
namespace MangoPay;

/**
 * Event entity
 */
class Event extends Dto {
    
    /**
     * Resource ID
     * @var string
     */
    public $ResourceId;
    
    /**
     * Event type
     * @var \MangoPay\EventType 
     */
    public $EventType;
        
    /**
     * Date of event
     * @var Date 
     */
    public $Date;
}
PK��[���y��entities/hook.incnu�[���<?php
namespace MangoPay;

/**
 * Hooks and Notifications entity
 */
class Hook extends EntityBase {
    
    /**
     * This is the URL where your receive notification for each EventType
     * @var string
     */
    public $Url;
        
    /**
     * Status: ENABLED, DISABLED
     * @var string 
     */
    public $Status;
    
    /**
     * Validity: VALID, INVALID
     * @var string 
     */
    public $Validity;
    
    /**
     * EventType
     * @var EventType 
     */
    public $EventType;
}PK��[�#o,,entities/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK��[�%�UUentities/kycDocument.incnu�[���<?php
namespace MangoPay;

/**
 * KYC document entity
 */
class KycDocument extends EntityBase {

    /**
     * Document type
     * @var \MangoPay\KycDocumentType
     */
    public $Type;
    
    /**
     * Document status
     * @var \MangoPay\KycDocumentStatus 
     */
    public $Status;
    
    /**
     * Refused reason type
     * @var type string
     */
    public $RefusedReasonType;
    
    /**
     * Refused reason message
     * @var type string
     */
    public $RefusedReasonMessage;
    
    /**
     * User identifier
     * @var type string
     */
    public $UserId;
}PK��[W+��entities/kycPage.incnu�[���<?php
namespace MangoPay;

/**
 * KYC page entity for Kyc document
 */
class KycPage extends Dto {
    
    /**
     * Image base64
     * @var type string
     */
    public $File;
}PK��[��z%%entities/payIn.incnu�[���<?php
namespace MangoPay;

/**
 * Pay-in entity
 */
class PayIn extends Transaction {

    /**
     * Credited wallet Id
     * @var int
     */
    public $CreditedWalletId;
    
    /**
     * PaymentType {CARD, BANK_WIRE, AUTOMATIC_DEBIT, DIRECT_DEBIT }
     * @var string  
     */
    public $PaymentType;
    
    /**
     * One of PayInPaymentDetails implementations, depending on
$PaymentType
     * @var object 
     */
    public $PaymentDetails;
    
    /**
     * ExecutionType { WEB, TOKEN, DIRECT, PREAUTHORIZED,
RECURRING_ORDER_EXECUTION }
     * @var string  
     */
    public $ExecutionType;
    
    /**
     * One of PayInExecutionDetails implementations, depending on
$ExecutionType
     * @var object 
     */
    public $ExecutionDetails;

    /**
     * Get array with mapping which property depends on other property  
     * @return array
     */
    public function GetDependsObjects() {
        return array(
            'PaymentType' => array(
                '_property_name' =>
'PaymentDetails',
                'CARD' =>
'\MangoPay\PayInPaymentDetailsCard',
                'PREAUTHORIZED' =>
'\MangoPay\PayInPaymentDetailsPreAuthorized',
                'BANK_WIRE' =>
'\MangoPay\PayInPaymentDetailsBankWire',
                'DIRECT_DEBIT' =>
'\MangoPay\PayInPaymentDetailsDirectDebit',
                // ...and more in future...
            ),
            'ExecutionType' => array(
                '_property_name' =>
'ExecutionDetails',
                'WEB' =>
'\MangoPay\PayInExecutionDetailsWeb',
                'DIRECT' =>
'\MangoPay\PayInExecutionDetailsDirect',
                // ...and more in future...
            )
        );
    }

    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'PaymentType' );
        array_push( $properties, 'ExecutionType' );
        
        return $properties;
    }
}
PK��[ܙ9W��entities/payOut.incnu�[���<?php
namespace MangoPay;

/**
 * PayOut entity
 */
class PayOut extends Transaction {
    
    /**
     * Debited wallet Id
     * @var int
     */
    public $DebitedWalletId;
    
    /**
     * PaymentType (BANK_WIRE, MERCHANT_EXPENSE, AMAZON_GIFTCARD)
     * @var string  
     */
    public $PaymentType;
    
    /**
     * One of PayOutPaymentDetails implementations, depending on
$PaymentType
     * @var object 
     */
    public $MeanOfPaymentDetails;
    
    
    /**
     * Get array with mapping which property depends on other property  
     * @return array
     */
    public function GetDependsObjects() {
        return array(
            'PaymentType' => array(
                '_property_name' =>
'MeanOfPaymentDetails',
                'BANK_WIRE' =>
'\MangoPay\PayOutPaymentDetailsBankWire',
                // ...and more in future...
            )
        );
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'PaymentType' );
        
        return $properties;
    }
}PK��[��&��entities/refund.incnu�[���<?php
namespace MangoPay;

/**
 * Refund entity
 */
class Refund extends Transaction {
    
    /**
     * Initial transaction Id
     * @var string
     */
    public $InitialTransactionId;
    
    /**
     * Debited wallet Id
     * @var string
     */
    public $DebitedWalletId;
    
    /**
     * Credited wallet Id
     * @var string
     */
    public $CreditedWalletId;
}PK��[�*o���$entities/temporaryImmediatePayIn.incnu�[���<?php
namespace MangoPay;

/**
 * WARNING!!
 * It's temporary entity and it will be removed in the future.
 * Please, contact with support before using these features or if you have
any questions.
 * 
 * Temporary immediate pay-in entity.
 */
class TemporaryImmediatePayIn extends Transaction {

    /**
     * Payment card Id
     * @var string
     */
    public $PaymentCardId;

    /**
     * Credited wallet Id
     * @var string
     */
    public $CreditedWalletId;
}PK��[�����!entities/temporaryPaymentCard.incnu�[���<?php
namespace MangoPay;

/**
 * WARNING!!
 * It's temporary entity and it will be removed in the future.
 * Please, contact with support before using these features or if you have
any questions.
 * 
 * Temporary Payment Card entity.
 */
class TemporaryPaymentCard extends EntityBase {
    
    /**
     * User Id
     * @var string
     */
    public $UserId;
    
    /**
     * Culture
     * @var string 
     */
    public $Culture;
    
    /**
     * Return URL
     * @var string 
     */
    public $ReturnURL;
    
    /**
     * Template URL
     * @var string 
     */
    public $TemplateURL;
    
    /**
     * Redirect URL
     * @var string 
     */
    public $RedirectURL;
    
    /**
     * Alias
     * @var string 
     */
    public $Alias;
}PK��[��}P��entities/transaction.incnu�[���<?php
namespace MangoPay;

/**
 * Transaction entity.
 * Base class for: PayIn, PayOut, Transfer.
 */
class Transaction extends EntityBase {
    
    /**
     * Author Id
     * @var int
     */
    public $AuthorId;
    
    /**
     * Credited user Id
     * @var int 
     */
    public $CreditedUserId;
    
    /**
     * Debited funds
     * @var \MangoPay\Money
     */
    public $DebitedFunds;
    
    /**
     * Credited funds
     * @var \MangoPay\Money
     */
    public $CreditedFunds;
    
    /**
     * Fees
     * @var \MangoPay\Money
     */
    public $Fees;
    
    /**
     * TransactionStatus {CREATED, SUCCEEDED, FAILED}
     * @var string 
     */
    public $Status;
    
    /**
     * Result code
     * @var string
     */
    public $ResultCode;
    
    /**
     * The PreAuthorization result Message explaining the result code
     * @var string 
     */
    public $ResultMessage;
    
    /**
     * Execution date;
     * @var date
     */
    public $ExecutionDate;
    
    /**
     * TransactionType {PAYIN, PAYOUT, TRANSFER}
     * @var string
     */
    public $Type;
    
    /**
     * TransactionNature { REGULAR, REFUND, REPUDIATION }
     * @var string
     */
    public $Nature;
    
    /**
     * Get array with mapping which property is object and what type of
object 
     * @return array
     */
    public function GetSubObjects() {
        return array(
            'DebitedFunds' => '\MangoPay\Money' ,
            'CreditedFunds' => '\MangoPay\Money' ,
            'Fees' => '\MangoPay\Money'
        );
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'Status' );
        array_push( $properties, 'ResultCode' );
        array_push( $properties, 'ExecutionDate' );
        
        return $properties;
    }
}
PK��[k�centities/transfer.incnu�[���<?php
namespace MangoPay;

/**
 * Transfer entity
 */
class Transfer extends Transaction {
    
    /**
     * Debited wallet Id
     * @var int
     */
    public $DebitedWalletId;
    
    /**
     * Credited wallet Id
     * @var int  
     */
    public $CreditedWalletId;
}PK��[�<���entities/user.incnu�[���<?php

namespace MangoPay;

/**
 * User entity
 */
abstract class User extends EntityBase {
    
    /**
     * Type of user
     * @var String
     */
    public $PersonType;
    
    /**
     * Email address
     * @var String 
     */
    public $Email;
    
    /**
     * Construct
     * @param string $personType String with type of person
     */
    protected function SetPersonType($personType) {
        $this->PersonType = $personType;
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'PersonType' );
        
        return $properties;
    }
}PK��[#�f++entities/userLegal.incnu�[���<?php
namespace MangoPay;

/**
 * UserLegal entity
 */
class UserLegal extends User {
    
    /**
     * Name of user
     * @var String
     */
    public $Name;
    
    /**
     * Type for legal user. Possible: ‘BUSINESS’, ’ORGANIZATION’
     * @var String 
     */
    public $LegalPersonType;
    
    /**
     * 
     * @var String 
     */
    public $HeadquartersAddress;
    
    /**
     * 
     * @var String 
     */
    public $LegalRepresentativeFirstName;
    
    /**
     * 
     * @var String 
     */
    public $LegalRepresentativeLastName;
    
    /**
     * 
     * @var String 
     */
    public $LegalRepresentativeAddress;
    
    /**
     * 
     * @var String 
     */
    public $LegalRepresentativeEmail;
    
    /**
     * 
     * @var Unix timestamp 
     */
    public $LegalRepresentativeBirthday;
    
    /**
     * 
     * @var String 
     */
    public $LegalRepresentativeNationality;
    
    /**
     * 
     * @var String 
     */
    public $LegalRepresentativeCountryOfResidence;
    
    /**
     * 
     * @var String 
     */
    public $Statute;
    
    /**
     * 
     * @var String 
     */
    public $ProofOfRegistration;
    
    /**
     * 
     * @var String 
     */
    public $ShareholderDeclaration;
    
    /**
     * Construct
     */
    function __construct($id = null) {
        parent::__construct($id);
        $this->SetPersonType(PersonType::Legal);
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'Statute' );
        array_push( $properties, 'ProofOfRegistration' );
        array_push( $properties, 'ShareholderDeclaration' );
        
        return $properties;
    }
}PK��[�Sz��entities/userNatural.incnu�[���<?php
namespace MangoPay;

/**
 * UserNatural entity
 */
class UserNatural extends User {
    
    /**
     * First name for user
     * @var String
     */
    public $FirstName;
    
     /**
     * Last name for user
     * @var String 
     */
    public $LastName;
    
     /**
     * Address for user
     * @var String 
     */
    public $Address;
    
     /**
     * Date of birth
     * @var Unix timestamp 
     */
    public $Birthday;
    
     /**
     * User's country
     * @var String 
     */
    public $Nationality;
    
     /**
     * Country of residence
     * @var String 
     */
    public $CountryOfResidence;
    
    /**
     * User's occupation
     * @var String 
     */
    public $Occupation;
    
    /**
     * 
     * @var Int 
     */
    public $IncomeRange;
    
    /**
     * 
     * @var String 
     */
    public $ProofOfIdentity;
    
    /**
     * 
     * @var String 
     */
    public $ProofOfAddress;
    
    /**
     * Construct
     */
    function __construct($id = null) {
        parent::__construct($id);
        $this->SetPersonType(PersonType::Natural);
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'ProofOfIdentity' );
        array_push( $properties, 'ProofOfAddress' );
        
        return $properties;
    }
}PK��[ƀIJ�entities/wallet.incnu�[���<?php
namespace MangoPay;

/**
 * Wallet entity
 */
class Wallet extends EntityBase {
    
    /**
     * Array with owners identities
     * @var array
     */
    public $Owners;
    
    /**
     * Wallet description
     * @var string 
     */
    public $Description;
    
    /**
     * Money in wallet
     * @var Money 
     */
    public $Balance;
    
    /**
     * Currency code in ISO
     * @var string
     */
    public $Currency;
    
    /**
     * Get array with mapping which property is object and what type of
object 
     * @return array
     */
    public function GetSubObjects() {
        return array( 'Balance' => '\MangoPay\Money'
);
    }
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'Balance' );
        
        return $properties;
    }
}
PK��[�#o,,
index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK��[��_��mangoPayApi.incnu�[���<?php
namespace MangoPay;
require_once __DIR__ . '/common/common.inc';

/**
 * MangoPay API main entry point.
 * Provides managers to connect, send and read data from MangoPay API
 * as well as holds configuration/authorization data.
 */
class MangoPayApi {
    
    /////////////////////////////////////////////////
    // Config/authorization related props
    /////////////////////////////////////////////////

    /**
     * Authorization token methods
     * @var \MangoPay\AuthorizationTokenManager
     */
    public $OAuthTokenManager;

    /**
     * Configuration instance
     * @var \MangoPay\Configuration
     */
    public $Config;
    
    /////////////////////////////////////////////////
    // API managers props
    /////////////////////////////////////////////////

    /**
     * OAuth methods
     * @var ApiOAuth
     */
    public $AuthenticationManager;

    /**
     * Clients methods
     * @var Client 
     */
    public $Clients;
    
    /**
     * Users methods
     * @var ApiUsers 
     */
    public $Users;
    
    /**
     * Wallets methods
     * @var ApiWallets
     */
    public $Wallets;
        
    /**
     * Transfers methods
     * @var ApiTransfers
     */
    public $Transfers;
    
    /**
     * Pay-in methods
     * @var ApiPayIns 
     */
    public $PayIns;
    
    /**
     * Pay-out methods
     * @var ApiPayOuts 
     */
    public $PayOuts;
        
    /**
     * Refund methods
     * @var ApiRefunds 
     */
    public $Refunds;
        
    /**
     * Card registration methods
     * @var ApiCardRegistrations 
     */
    public $CardRegistrations; 
        
    /**
     * Pre-authorization methods
     * @var ApiCardPreAuthorization 
     */
    public $CardPreAuthorizations;
        
    /**
     * Card methods
     * @var ApiCards 
     */
    public $Cards;
    
    /**
     * Events methods
     * @var ApiEvents 
     */
    public $Events;
    
    /**
     * Hooks methods
     * @var ApiHooks 
     */
    public $Hooks;
    
    /**
     * Kyc documents list
     * @var ApiKycDocuments 
     */
    public $KycDocuments;

    /**
     * Constructor
     */
    function __construct() {

        // default config setup
        $this->Config = new Configuration();
        $this->OAuthTokenManager = new
AuthorizationTokenManager($this);
        
        // API managers
        $this->AuthenticationManager = new ApiOAuth($this);
        $this->Clients = new ApiClients($this);
        $this->Users = new ApiUsers($this);
        $this->Wallets = new ApiWallets($this);
        $this->Transfers = new ApiTransfers($this);
        $this->PayIns = new ApiPayIns($this);
        $this->PayOuts = new ApiPayOuts($this);
        $this->Refunds = new ApiRefunds($this);
        $this->CardRegistrations = new ApiCardRegistrations($this);
        $this->Cards = new ApiCards($this);
        $this->Events = new ApiEvents($this);
        $this->Hooks = new ApiHooks($this);
        $this->CardPreAuthorizations = new
ApiCardPreAuthorizations($this);
        $this->KycDocuments = new ApiKycDocuments($this);
    }
}PK��[�	��F>F>tools/apiBase.incnu�[���<?php
namespace MangoPay;

/**
 * Base class for MangoPay API managers
 */
abstract class ApiBase {
    
    /**
     * Root/parent instance that holds the OAuthToken and Configuration
instance
     * @var \MangoPay\MangoPayApi
     */
    protected $_root;
    
    /**
     * Array with REST url and request type
     * @var array 
     */
    private $_methods = array(
        'authentication_base' => array(
'/api/clients/', RequestType::POST ),
        'authentication_oauth' => array( '/oauth/token
', RequestType::POST ),
        
        'events_all' => array( '/events',
RequestType::GET ),
        
        'hooks_create' => array( '/hooks',
RequestType::POST ),
        'hooks_all' => array( '/hooks',
RequestType::GET ),
        'hooks_get' => array( '/hooks/%s',
RequestType::GET ),
        'hooks_save' => array( '/hooks/%s',
RequestType::PUT ),
        
        'cardregistration_create' => array(
'/cardregistrations', RequestType::POST ),
        'cardregistration_get' => array(
'/cardregistrations/%s', RequestType::GET ),
        'cardregistration_save' => array(
'/cardregistrations/%s', RequestType::PUT ),
        
        'preauthorization_create' => array(
'/preauthorizations/card/direct', RequestType::POST ),
        'preauthorization_get' => array(
'/preauthorizations/%s', RequestType::GET ),
        'preauthorization_save' => array(
'/preauthorizations/%s', RequestType::PUT ),
                
        'card_get' => array( '/cards/%s',
RequestType::GET ),
        'card_save' => array( '/cards/%s',
RequestType::PUT ),
        
        // pay ins URLs
        'payins_card-web_create' => array(
'/payins/card/web/', RequestType::POST ),
        'payins_card-direct_create' => array(
'/payins/card/direct/', RequestType::POST ),
        'payins_preauthorized-direct_create' => array(
'/payins/preauthorized/direct/', RequestType::POST ),
        'payins_bankwire-direct_create' => array(
'/payins/bankwire/direct/', RequestType::POST ),
        'payins_directdebit-web_create' => array(
'/payins/directdebit/web', RequestType::POST ),
        'payins_get' => array( '/payins/%s',
RequestType::GET ),
        'payins_getrefunds' => array(
'/payins/%s/refunds', RequestType::GET ),
        'payins_createrefunds' => array(
'/payins/%s/refunds', RequestType::POST ),
        
        'payouts_bankwire_create' => array(
'/payouts/bankwire/', RequestType::POST ),
        'payouts_get' => array( '/payouts/%s',
RequestType::GET ),
        
        'refunds_get' => array( '/refunds/%s',
RequestType::GET ),
        
        'transfers_create' => array( '/transfers',
RequestType::POST ),
        'transfers_get' => array( '/transfers/%s',
RequestType::GET ),
        'transfers_getrefunds' => array(
'/transfers/%s/refunds', RequestType::GET ),
        'transfers_createrefunds' => array(
'/transfers/%s/refunds', RequestType::POST ),
        
        'users_createnaturals' => array(
'/users/natural', RequestType::POST ),
        'users_createlegals' => array(
'/users/legal', RequestType::POST ),
        
        'users_createbankaccounts_iban' => array(
'/users/%s/bankaccounts/iban', RequestType::POST ),
        'users_createbankaccounts_gb' => array(
'/users/%s/bankaccounts/gb', RequestType::POST ),
        'users_createbankaccounts_us' => array(
'/users/%s/bankaccounts/us', RequestType::POST ),
        'users_createbankaccounts_ca' => array(
'/users/%s/bankaccounts/ca', RequestType::POST ),
        'users_createbankaccounts_other' => array(
'/users/%s/bankaccounts/other', RequestType::POST ),
        
        'users_all' => array( '/users',
RequestType::GET ),
        'users_allwallets' => array(
'/users/%s/wallets', RequestType::GET ),
        'users_allbankaccount' => array(
'/users/%s/bankaccounts', RequestType::GET ),
        'users_allcards' => array(
'/users/%s/cards', RequestType::GET ),
        'users_alltransactions' => array(
'/users/%s/transactions', RequestType::GET ),
        'users_allkycdocuments' => array(
'/users/%s/KYC/documents', RequestType::GET ),
        'users_get' => array( '/users/%s',
RequestType::GET ),
        'users_getnaturals' => array(
'/users/natural/%s', RequestType::GET ),
        'users_getlegals' => array(
'/users/legal/%s', RequestType::GET ),
        'users_getbankaccount' => array(
'/users/%s/bankaccounts/%s', RequestType::GET ),
        'users_savenaturals' => array(
'/users/natural/%s', RequestType::PUT ),
        'users_savelegals' => array(
'/users/legal/%s', RequestType::PUT ),
        
        'wallets_create' => array( '/wallets',
RequestType::POST ),
        'wallets_alltransactions' => array(
'/wallets/%s/transactions', RequestType::GET ),
        'wallets_get' => array( '/wallets/%s',
RequestType::GET ),
        'wallets_save' => array( '/wallets/%s',
RequestType::PUT ),
        
        'kyc_documents_create' => array(
'/users/%s/KYC/documents/', RequestType::POST ),
        'kyc_documents_get' => array(
'/users/%s/KYC/documents/%s', RequestType::GET ),
        'kyc_documents_save' => array(
'/users/%s/KYC/documents/%s', RequestType::PUT ),
        'kyc_page_create' => array(
'/users/%s/KYC/documents/%s/pages', RequestType::POST ),
        'kyc_documents_all' => array(
'/KYC/documents', RequestType::GET ),
        
        // These are temporary functions and WILL be removed in the future.

        // Please, contact with support before using these features or if
you have any questions.
        'temp_paymentcards_create' => array(
'/temp/paymentcards', RequestType::POST ),
        'temp_paymentcards_get' => array(
'/temp/paymentcards/%s', RequestType::GET ),
        'temp_immediatepayins_create' => array(
'/temp/immediate-payins', RequestType::POST )
    );

    /**
     * Constructor
     * @param \MangoPay\MangoPayApi Root/parent instance that holds the
OAuthToken and Configuration instance
     */
    function __construct($root) {
        $this->_root = $root;
    }
    
    /**
     * Get URL for REST Mango Pay API
     * @param string $key Key with data
     * @return string 
     */
    protected function GetRequestUrl($key){
        return $this->_methods[$key][0];
    }
    
    /**
     * Get request type for REST Mango Pay API
     * @param string $key Key with data
     * @return RequestType 
     */
    protected function GetRequestType($key){
        return $this->_methods[$key][1];
    }
    
    /**
     * Create object in API
     * @param string $methodKey Key with request data
     * @param object $entity Entity object
     * @param object $responseClassName Name of entity class from response
     * @param int $entityId Entity identifier
     * @return object Response data
     */
    protected function CreateObject($methodKey, $entity, $responseClassName
= null, $entityId = null, $subEntityId = null) {

        if (is_null($entityId))
            $urlMethod = $this->GetRequestUrl($methodKey);
        elseif (is_null($subEntityId))
            $urlMethod = sprintf($this->GetRequestUrl($methodKey),
$entityId);
        else
            $urlMethod = sprintf($this->GetRequestUrl($methodKey),
$entityId, $subEntityId);
        
        $requestData = null;
        if (!is_null($entity))
            $requestData = $this->BuildRequestData($entity);

        $rest = new RestTool(true, $this->_root);
        $response = $rest->Request($urlMethod,
$this->GetRequestType($methodKey), $requestData);
        
        if (!is_null($responseClassName))
            return $this->CastResponseToEntity($response,
$responseClassName);
        
        return $response;
    }
    
    /**
     * Get entity object from API
     * @param string $methodKey Key with request data
     * @param int $entityId Entity identifier
     * @param object $responseClassName Name of entity class from response
     * @param int $secondEntityId Entity identifier for second entity
     * @return object Response data
     */
    protected function GetObject($methodKey, $entityId, $responseClassName
= null, $secondEntityId = null) {
        
        $urlMethod = sprintf($this->GetRequestUrl($methodKey),
$entityId, $secondEntityId);
        
        $rest = new RestTool(true, $this->_root);
        $response = $rest->Request($urlMethod,
$this->GetRequestType($methodKey));
        
        if (!is_null($responseClassName))
            return $this->CastResponseToEntity($response,
$responseClassName);
        
        return $response;
    }
    
    /**
     * Get lst with entities object from API
     * @param string $methodKey Key with request data
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param object $responseClassName Name of entity class from response
     * @param int $entityId Entity identifier
     * @param object $filter Object to filter data
     * @return object Response data
     */
    protected function GetList($methodKey, & $pagination,
$responseClassName = null, $entityId = null, $filter = null, $sorting =
null) {
        
        $urlMethod = sprintf($this->GetRequestUrl($methodKey),
$entityId);
        
        if (is_null($pagination) || !is_object($pagination) ||
get_class($pagination) != 'MangoPay\Pagination') {
            $pagination = new Pagination();
        }
        
        $rest = new RestTool(true, $this->_root);
        $additionalUrlParams = array();
        if (!is_null($filter))
            $additionalUrlParams["filter"] = $filter;
        if (!is_null($sorting)){
            if (!is_a($sorting, "\MangoPay\Sorting"))
                throw new Exception('Wrong type of sorting
object');
            
            $additionalUrlParams["sort"] =
$sorting->GetSortParameter();
        }
        
        $response = $rest->Request($urlMethod,
$this->GetRequestType($methodKey), null, $pagination,
$additionalUrlParams);
        
        if (!is_null($responseClassName))
            return $this->CastResponseToEntity($response,
$responseClassName);
        
        return $response;
    }
    
    /**
     * Save object in API
     * @param string $methodKey Key with request data
     * @param object $entity Entity object to save
     * @param object $responseClassName Name of entity class from response
     * @return object Response data
     */
    protected function SaveObject($methodKey, $entity, $responseClassName =
null, $secondEntityId = null) {
        
        if (is_null($secondEntityId))
            $urlMethod = sprintf($this->GetRequestUrl($methodKey),
$entity->Id);
        else
            $urlMethod = sprintf($this->GetRequestUrl($methodKey),
$secondEntityId, $entity->Id);

        $requestData = $this->BuildRequestData($entity);
        
        $rest = new RestTool(true, $this->_root);
        $response = $rest->Request($urlMethod,
$this->GetRequestType($methodKey), $requestData);
        
        if (!is_null($responseClassName))
            return $this->CastResponseToEntity($response,
$responseClassName);
        
        return $response;
    }
    
    /**
     * Cast response object to entity object
     * @param object $response Object from API response
     * @param string $entityClassName Name of entity class to cast
     * @return \MangoPay\$entityClassName Return entity object
     */
    protected function CastResponseToEntity($response, $entityClassName,
$asDependentObject = false)
    {
        if (is_array($response)) {
            
            $list = array();
            foreach ($response as $responseObject) {
                array_push($list,
$this->CastResponseToEntity($responseObject, $entityClassName));
            }
            
            return $list;
        }
        
        if (is_string($entityClassName)) {
            $entity = new $entityClassName();
        } else {
            throw new Exception('Cannot cast response to entity
object. Wrong entity class name');
        }
        
        $responseReflection = new \ReflectionObject($response);
        $entityReflection = new \ReflectionObject($entity);
        $responseProperties = $responseReflection->getProperties();
        
        $subObjects = $entity->GetSubObjects();
        $dependsObjects = $entity->GetDependsObjects();

        foreach ($responseProperties as $responseProperty) {
            
            $responseProperty->setAccessible(true);
            
            $name = $responseProperty->getName();
            $value = $responseProperty->getValue($response);
            
            if ($entityReflection->hasProperty($name)) {
                
                $entityProperty =
$entityReflection->getProperty($name);
                $entityProperty->setAccessible(true);
                
                // is sub object?
                if (isset($subObjects[$name])) {
                    if (is_null($value))
                        $object = null;
                    else
                        $object = $this->CastResponseToEntity($value,
$subObjects[$name]);
                    
                    $entityProperty->setValue($entity, $object);
                } else {
                    $entityProperty->setValue($entity, $value);
                }

                // has dependent object?
                if (isset($dependsObjects[$name])) {
                    $dependsObject = $dependsObjects[$name];
                    $entityDependProperty =
$entityReflection->getProperty($dependsObject['_property_name']);
                    $entityDependProperty->setAccessible(true);
                    $entityDependProperty->setValue($entity,
$this->CastResponseToEntity($response, $dependsObject[$value], true));
                }
            } else {
                if ($asDependentObject || !empty($dependsObjects)) {
                    continue;
                }
                else {
					/* UNCOMMENT THE LINE BELOW TO ENABLE RESTRICTIVE REFLECTION MODE */
					//throw new Exception('Cannot cast response to entity object.
Missing property ' . $name .' in entity ' .
$entityClassName);
					
					continue;
				}
            }
        }
        
        return $entity;
    }
    
    /**
     * Get array with request data
     * @param object $entity Entity object to send as request data
     * @return array 
     */
    protected function BuildRequestData($entity) {
        
        $entityProperties = get_object_vars($entity);
        $blackList = $entity->GetReadOnlyProperties();
        $requestData = array();
        foreach ($entityProperties as $propertyName => $propertyValue)
{
            
            if (in_array($propertyName, $blackList))
                continue;
        
            if ($this->CanReadSubRequestData($entity, $propertyName)) {
                $subRequestData =
$this->BuildRequestData($propertyValue);
                foreach ($subRequestData as $key => $value) {
                    $requestData[$key] = $value;
                }
            } else {
                if (isset($propertyValue))
                    $requestData[$propertyName] = $propertyValue;
            }
        }
        
        return $requestData;
    }
    
    private function CanReadSubRequestData($entity, $propertyName) {
        if (get_class($entity) == 'MangoPay\PayIn' && 
                    ($propertyName == 'PaymentDetails' ||
$propertyName == 'ExecutionDetails')) {
            return true;
        }
        
        if (get_class($entity) == 'MangoPay\PayOut' &&
$propertyName == 'MeanOfPaymentDetails') {
            return true;
        }
        
        if (get_class($entity) == 'MangoPay\BankAccount'
&& $propertyName == 'Details' ) {
            return true;
        }
        
        return false;
    }
}PK��[��Zii"tools/apiCardPreAuthorizations.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for pre-authorization process
 */
class ApiCardPreAuthorizations extends ApiBase {

    /**
     * Create new pre-authorization object
     * @param \MangoPay\CardPreAuthorization $cardPreAuthorization
PreAuthorization object to create
     * @return \MangoPay\CardPreAuthorization PreAuthorization object
returned from API
     */
    public function Create($cardPreAuthorization) {
        return $this->CreateObject('preauthorization_create',
$cardPreAuthorization, '\MangoPay\CardPreAuthorization');
    }
    
    /**
     * Get pre-authorization object
     * @param int $cardPreAuthorizationId PreAuthorization identifier
     * @return \MangoPay\CardPreAuthorization Card registration  object
returned from API
     */
    public function Get($cardPreAuthorizationId) {
        return $this->GetObject('preauthorization_get',
$cardPreAuthorizationId, '\MangoPay\CardPreAuthorization');
    }
    
    /**
     * Update pre-authorization object
     * @param \MangoPay\CardPreAuthorization $preAuthorization
PreAuthorization object to save
     * @return \MangoPay\CardPreAuthorization PreAuthorization object
returned from API
     */
    public function Update($cardPreAuthorization) {
        return $this->SaveObject('preauthorization_save',
$cardPreAuthorization, '\MangoPay\CardPreAuthorization');
    }
}PK��[��t�00tools/apiCardRegistrations.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for card registrations
 */
class ApiCardRegistrations extends ApiBase {

    /**
     * Create new card registration
     * @param \MangoPay\CardRegistration $cardRegistration Card
registration object to create
     * @return \MangoPay\CardRegistration Card registration object returned
from API
     */
    public function Create($cardRegistration) {
        return $this->CreateObject('cardregistration_create',
$cardRegistration, '\MangoPay\CardRegistration');
    }
    
    /**
     * Get card registration
     * @param int $cardRegistrationId Card Registration identifier
     * @return \MangoPay\CardRegistration Card registration  object
returned from API
     */
    public function Get($cardRegistrationId) {
        return $this->GetObject('cardregistration_get',
$cardRegistrationId, '\MangoPay\CardRegistration');
    }
    
    /**
     * Update card registration
     * @param \MangoPay\CardRegistration $cardRegistration Card
registration object to save
     * @return \MangoPay\CardRegistration Card registration object returned
from API
     */
    public function Update($cardRegistration) {
        return $this->SaveObject('cardregistration_save',
$cardRegistration, '\MangoPay\CardRegistration');
    }
}PK��[r��$$tools/apiCards.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for cards
 */
class ApiCards extends ApiBase {
    
    /**
     * Get card
     * @param int $cardId Card identifier
     * @return \MangoPay\Card object returned from API
     */
    public function Get($cardId) {
        return $this->GetObject('card_get', $cardId,
'\MangoPay\Card');
    }
    
    /**
     * Update card
     * @param \MangoPay\Card $card Card object to save
     * @return \MangoPay\Card Card object returned from API
     */
    public function Update($card) {
        return $this->SaveObject('card_save', $card,
'\MangoPay\Card');
    }
    
    /**
     * WARNING!!
     * It's temporary entity and it will be removed in the future.
     * Please, contact with support before using these features or if you
have any questions.
     * 
     * Create new temporary payment card
     * @param \MangoPay\TemporaryPaymentCard $paymentCard Payment card
object to create
     * @return \MangoPay\TemporaryPaymentCard Card registration object
returned from API
     */
    public function CreateTemporaryPaymentCard($paymentCard) {
        return $this->CreateObject('temp_paymentcards_create',
$paymentCard, '\MangoPay\TemporaryPaymentCard');
    }
    
    /**
     * WARNING!!
     * It's temporary entity and it will be removed in the future.
     * Please, contact with support before using these features or if you
have any questions.
     * 
     * Get temporary payment card
     * @param string $paymentCardId Card identifier
     * @return \MangoPay\TemporaryPaymentCard object returned from API
     */
    public function GetTemporaryPaymentCard($paymentCardId) {
        return $this->GetObject('temp_paymentcards_get',
$paymentCardId, '\MangoPay\TemporaryPaymentCard');
    }
}PK��[�~_��tools/apiClients.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for users
 */
class ApiClients extends ApiBase {
   
    /**
     * Get client data for Basic Access Authentication
     * @param string $clientId Client identifier
     * @param string $clientName Beautiful name for presentation
     * @param string $clientEmail Client's email
     * @return \MangoPay\Client Client object
     */
    public function Create($clientId, $clientName, $clientEmail) {

        $urlMethod =
$this->GetRequestUrl('authentication_base');
        $requestType =
$this->GetRequestType('authentication_base');
        $requestData = array(
            'ClientId' => $clientId,
            'Name' => $clientName,
            'Email' => $clientEmail,
        );
        
        $rest = new RestTool(false, $this->_root);
        $response = $rest->Request($urlMethod, $requestType,
$requestData);
        return $this->CastResponseToEntity($response,
'\MangoPay\Client');
    }
}PK��[�H��tools/apiEvents.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for cards
 */
class ApiEvents extends ApiBase {
    
    /**
     * Get events
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param \MangoPay\FilterEvents $filter Object to filter data
     * @return \MangoPay\Event[] Events list
     */
    public function GetAll(& $pagination = null, $filter = null) {
        return $this->GetList('events_all', $pagination,
'\MangoPay\Event', null, $filter);
    }
}
PK��[q̡���tools/apiHooks.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for hooks and notifications
 */
class ApiHooks extends ApiBase {
    
    /**
     * Create new hook
     * @param Hook $hook
     * @return \MangoPay\Hook Hook object returned from API
     */
    public function Create($hook) {
        return $this->CreateObject('hooks_create', $hook,
'\MangoPay\Hook');
    }
    
    /**
     * Get hook
     * @param type $hookId Hook identifier
     * @return \MangoPay\Hook Wallet object returned from API
     */
    public function Get($hookId) {
        return $this->GetObject('hooks_get', $hookId,
'\MangoPay\Hook');
    }
    
    /**
     * Save hook
     * @param type $hook Hook object to save
     * @return \MangoPay\Hook Hook object returned from API
     */
    public function Update($hook) {
        return $this->SaveObject('hooks_save', $hook,
'\MangoPay\Hook');
    }
    
    /**
     * Get all hooks
     * @param \MangoPay\Pagination $pagination Pagination object
     * @return \MangoPay\Hook[] Array with objects returned from API
     */
    public function GetAll(& $pagination = null) {
        return $this->GetList('hooks_all', $pagination,
'\MangoPay\Hook');
    }
}PK��[fj��??tools/apiKycDocuments.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for KYC document list
 */
class ApiKycDocuments extends ApiBase {
    
    /**
     * Get all KYC documents
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param \MangoPay\Sorting $sorting Object to sorting data
     * @return \MangoPay\KycDocument[] Array with objects returned from API
     */
    public function GetAll(& $pagination = null, $sorting = null) {
        return $this->GetList('kyc_documents_all',
$pagination, '\MangoPay\KycDocument', null, null, $sorting);
    }
}PK��[g*�m{{tools/apiOAuth.incnu�[���<?php
namespace MangoPay;

/**
 * Authentication manager
 */
class ApiOAuth extends ApiBase {
    
    /**
     * Get token information to OAuth Authentication
     * @return \MangoPay\OAuthToken OAuthToken object with token
information
     */
    public function CreateToken() {
        $urlMethod =
$this->GetRequestUrl('authentication_oauth');
        $requestType =
$this->GetRequestType('authentication_oauth');
        $requestData = array(
            'grant_type' => 'client_credentials'
        );
        
        $rest = new RestTool(false, $this->_root);
        $authHlp = new AuthenticationHelper($this->_root);
        
        $urlDetails = parse_url($this->_root->Config->BaseUrl);
        $rest->AddRequestHttpHeader('Host: ' .
@$urlDetails['host']);
        $rest->AddRequestHttpHeader('Authorization: Basic ' .
$authHlp->GetHttpHeaderBasicKey());
        $rest->AddRequestHttpHeader('Content-Type:
application/x-www-form-urlencoded');
        $response = $rest->Request($urlMethod, $requestType,
$requestData);
        return $this->CastResponseToEntity($response,
'\MangoPay\OAuthToken');
    }
}PK��[�D���tools/apiPayIns.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for pay-ins
 */
class ApiPayIns extends ApiBase {
    
    /**
     * Create new pay-in object
     * @param \MangoPay\PayIn $payIn \MangoPay\PayIn object
     * @return \MangoPay\PayIn Object returned from API
     */
    public function Create($payIn) {
        $paymentKey = $this->GetPaymentKey($payIn);
        $executionKey = $this->GetExecutionKey($payIn);
        return $this->CreateObject('payins_' . $paymentKey .
'-' . $executionKey . '_create', $payIn,
'\MangoPay\PayIn');
    }
    
    /**
     * Get pay-in object
     * @param $payInId Pay-in identifier
     * @return \MangoPay\PayIn Object returned from API
     */
    public function Get($payInId) {
        return $this->GetObject('payins_get', $payInId,
'\MangoPay\PayIn');
    }
    
    /**
     * Create refund for pay-in object
     * @param type $payInId Pay-in identifier
     * @param \MangoPay\Refund $refund Refund object to create
     * @return \MangoPay\Refund Object returned by REST API
     */
    public function CreateRefund($payInId, $refund) {
        return $this->CreateObject('payins_createrefunds',
$refund, '\MangoPay\Refund', $payInId);
    }

    /**
     * Get refund for pay-in object
     * @param type $payInId Pay-in identifier
     * @return \MangoPay\Refund Object returned by REST API
     */
    public function GetRefund($payInId) {
        return $this->GetObject('payins_getrefunds', $payInId,
'\MangoPay\Refund');
    }
    
    /**
     * WARNING!!
     * It's temporary entity and it will be removed in the future.
     * Please, contact with support before using these features or if you
have any questions.
     * 
     * Create new temporary immediate pay-in
     * @param \MangoPay\TemporaryImmediatePayIn $immediatePayIn Immediate
pay-in object to create
     * @return \MangoPay\TemporaryImmediatePayIn Immediate pay-in object
returned from API
     */
    public function CreateTemporaryImmediatePayIn($immediatePayIn) {
        return
$this->CreateObject('temp_immediatepayins_create',
$immediatePayIn, '\MangoPay\TemporaryImmediatePayIn');
    }
    
    private function GetPaymentKey($payIn) {
        
        if (!isset($payIn->PaymentDetails) ||
!is_object($payIn->PaymentDetails))
            throw new Exception ('Payment is not defined or it is not
object type');
        
        $className = str_replace('MangoPay\\PayInPaymentDetails',
'', get_class($payIn->PaymentDetails));
        return strtolower($className);
    }
    
    private function GetExecutionKey($payIn) {
        
        if (!isset($payIn->ExecutionDetails) ||
!is_object($payIn->ExecutionDetails))
            throw new Exception ('Execution is not defined or it is
not object type');
        
        $className =
str_replace('MangoPay\\PayInExecutionDetails', '',
get_class($payIn->ExecutionDetails));
        return strtolower($className);
    }
}PK��[�3�qqtools/apiPayOuts.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for pay-outs
 */
class ApiPayOuts extends ApiBase {
    
    /**
     * Create new pay-out
     * @param PayOut $payOut
     * @return \MangoPay\PayOut Object returned from API
     */
    public function Create($payOut) {
        $paymentKey = $this->GetPaymentKey($payOut);
        return $this->CreateObject('payouts_' . $paymentKey .
'_create', $payOut, '\MangoPay\PayOut');
    }
    
    /**
     * Get pay-out object
     * @param $payOutId PayOut identifier
     * @return \MangoPay\PayOut Object returned from API
     */
    public function Get($payOutId) {
        return $this->GetObject('payouts_get', $payOutId,
'\MangoPay\PayOut');
    }
    
    private function GetPaymentKey($payOut) {
        
        if (!isset($payOut->MeanOfPaymentDetails) ||
!is_object($payOut->MeanOfPaymentDetails))
            throw new Exception('Mean of payment is not defined or it
is not object type');
        
        $className =
str_replace('MangoPay\\PayOutPaymentDetails', '',
get_class($payOut->MeanOfPaymentDetails));
        return strtolower($className);
    }
}PK��[�"���tools/apiRefunds.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for refunds
 */
class ApiRefunds extends ApiBase {
   
    /**
     * Get refund object
     * @param string $refundId Refund Id
     * @return \MangoPay\Refund Refund object returned from API
     */
    public function Get($refundId) {
        return $this->GetObject('refunds_get', $refundId,
'\MangoPay\Refund');
    }
}PK��[�����tools/apiTransfers.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for transfers
 */
class ApiTransfers extends ApiBase {
    
    /**
     * Create new transfer
     * @param \MangoPay\Transfer $transfer
     * @return \MangoPay\Transfer Transfer object returned from API
     */
    public function Create($transfer) {
        return $this->CreateObject('transfers_create',
$transfer, '\MangoPay\Transfer');
    }
    
    /**
     * Get transfer
     * @param type $transferId Transfer identifier
     * @return \MangoPay\Transfer Transfer object returned from API
     */
    public function Get($transfer) {
        return $this->GetObject('transfers_get', $transfer,
'\MangoPay\Transfer');
    }
    
    /**
     * Create refund for transfer object
     * @param type $transferId Transfer identifier
     * @param \MangoPay\Refund $refund Refund object to create
     * @return \MangoPay\Refund Object returned by REST API
     */
    public function CreateRefund($transferId, $refund) {
        return $this->CreateObject('transfers_createrefunds',
$refund, '\MangoPay\Refund', $transferId);
    }
    
    /**
     * Get refund for transfer object
     * @param type $transferId Transfer identifier
     * @return \MangoPay\Refund Object returned by REST API
     */
    public function GetRefund($transferId) {
        return $this->GetObject('transfers_getrefunds',
$transferId, '\MangoPay\Refund');
    }
}
PK��[MȌ t(t(tools/apiUsers.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for users
 */
class ApiUsers extends ApiBase {
    
    /**
     * Create a new user
     * @param UserLegal/UserNatural $user
     * @return UserLegal/UserNatural User object returned from API
     */
    public function Create($user) {
        
        $className = get_class($user);
        if ($className == 'MangoPay\UserNatural')
            $methodKey = 'users_createnaturals';
        elseif ($className == 'MangoPay\UserLegal')
            $methodKey = 'users_createlegals';
        else
            throw new Exception('Wrong entity class for user');
        
        $response = $this->CreateObject($methodKey, $user);
        return $this->GetUserResponse($response);
    }
    
    /**
     * Get all users
     * @param \MangoPay\Pagination $pagination Pagination object
     * @return array Array with users
     */
    public function GetAll(& $pagination = null) {
        $usersList = $this->GetList('users_all',
$pagination);
        
        $users = array();
        if (is_array($usersList)) {
            foreach ($usersList as $user) {
                array_push($users, $this->GetUserResponse($user));
            }
        }
        return $users;
    }
    
    /**
     * Get natural or legal user by ID
     * @param Int/GUID $userId User identifier
     * @return UserLegal/UserNatural User object returned from API
     */
    public function Get($userId) {
        
        $response = $this->GetObject('users_get', $userId);
        return $this->GetUserResponse($response);
    }
    
    /**
     * Get natural user by ID
     * @param Int/GUID $userId User identifier
     * @return UserLegal/UserNatural User object returned from API
     */
    public function GetNatural($userId) {
        
        $response = $this->GetObject('users_getnaturals',
$userId);
        return $this->GetUserResponse($response);
    }
    
    /**
     * Get legal user by ID
     * @param Int/GUID $userId User identifier
     * @return UserLegal/UserNatural User object returned from API
     */
    public function GetLegal($userId) {
        
        $response = $this->GetObject('users_getlegals',
$userId);
        return $this->GetUserResponse($response);
    }
    
    /**
     * Save user
     * @param UserLegal/UserNatural $user
     * @return UserLegal/UserNatural User object returned from API
     */
    public function Update($user) {
        
        $className = get_class($user);
        if ($className == 'MangoPay\UserNatural')
            $methodKey = 'users_savenaturals';
        elseif ($className == 'MangoPay\UserLegal')
            $methodKey = 'users_savelegals';
        else
            throw new Exception('Wrong entity class for user');
        
        $response = $this->SaveObject($methodKey, $user);
        return $this->GetUserResponse($response);        
    }
    
    /**
     * Create bank account for user
     * @param int $userId User Id
     * @param \MangoPay\BankAccount $bankAccount Entity of bank account
object
     * @return \MangoPay\BankAccount Create bank account object
     */
    public function CreateBankAccount($userId, $bankAccount) {
        $type = $this->GetBankAccountType($bankAccount);
        return $this->CreateObject('users_createbankaccounts_'
. $type, $bankAccount, '\MangoPay\BankAccount', $userId);
    }
    
    /**
     * Get all bank accounts for user
     * @param int $userId User Id
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param \MangoPay\Sorting $sorting Object to sorting data
     * @return array Array with bank account entities
     */    
    public function GetBankAccounts($userId, & $pagination = null,
$sorting = null) {
        return $this->GetList('users_allbankaccount',
$pagination, 'MangoPay\BankAccount', $userId, null, $sorting);
    }
    
    /**
     * Get bank account for user
     * @param int $userId User Id
     * @param int $bankAccountId Bank account Id
     * @return \MangoPay\BankAccount Entity of bank account object
     */
    public function GetBankAccount($userId, $bankAccountId) {
        return $this->GetObject('users_getbankaccount',
$userId, 'MangoPay\BankAccount', $bankAccountId);
    }
    
    /**
     * Get all wallets for user
     * @param int $userId User Id
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param \MangoPay\Sorting $sorting Object to sorting data
     * @return \MangoPay\Wallet[] Array with objects returned from API
     */
    public function GetWallets($userId, & $pagination = null, $sorting
= null) {
        return $this->GetList('users_allwallets', $pagination,
'MangoPay\Wallet', $userId, null, $sorting);
    }
        
    /**
     * Get all transactions for user
     * @param int $userId User Id
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param \MangoPay\FilterTransactions $filter Object to filter data
     * @param \MangoPay\Sorting $sorting Object to sorting data
     * @return \MangoPay\Transaction[] Transactions for user returned from
API
     */
    public function GetTransactions($userId, & $pagination = null,
$filter = null, $sorting = null) {
        return $this->GetList('users_alltransactions',
$pagination, '\MangoPay\Transaction', $userId, $filter,
$sorting);
    }
    
    /**
     * Get all cards for user
     * @param int $userId User Id
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param \MangoPay\Sorting $sorting Object to sorting data
     * @return \MangoPay\Card[] Cards for user returned from API
     */
    public function GetCards($userId, & $pagination = null, $sorting =
null) {
        return $this->GetList('users_allcards', $pagination,
'\MangoPay\Card', $userId, null, $sorting);
    }
    
    /**
     * Create new KYC document
     * @param int $userId User Id
     * @param \MangoPay\KycDocument $kycDocument
     * @return \MangoPay\KycDocument Document returned from API
     */
    public function CreateKycDocument($userId, $kycDocument) {
        return $this->CreateObject('kyc_documents_create',
$kycDocument, '\MangoPay\KycDocument', $userId);
    }
    
    /**
     * Get all KYC documents for user
     * @param int $userId User Id
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param \MangoPay\Sorting $sorting Object to sorting data
     * @return array Array with KYC documents entities
     */    
    public function GetKycDocuments($userId, & $pagination = null,
$sorting = null) {
        return $this->GetList('users_allkycdocuments',
$pagination, 'MangoPay\KycDocument', $userId, null, $sorting);
    }
    
    /**
     * Get KYC document
     * @param int $userId User Id
     * @param string $kycDocumentId Document identifier
     * @return \MangoPay\KycDocument Document returned from API
     */
    public function GetKycDocument($userId, $kycDocumentId) {
        return $this->GetObject('kyc_documents_get', $userId,
'\MangoPay\KycDocument', $kycDocumentId);
    }
    
    /**
     * Save KYC document
     * @param int $userId User Id
     * @param \MangoPay\KycDocument $kycDocument Document to save
     * @return \MangoPay\KycDocument Document returned from API
     */
    public function UpdateKycDocument($userId, $kycDocument) {
        return $this->SaveObject('kyc_documents_save',
$kycDocument, '\MangoPay\KycDocument', $userId);
    }
    
    /**
     * Create page for Kyc document
     * @param int $userId User Id
     * @param \MangoPay\KycPage $page Kyc
     */
    public function CreateKycPage($userId, $kycDocumentId, $kycPage) {
        
        try{
            $this->CreateObject('kyc_page_create', $kycPage,
null, $userId, $kycDocumentId);
        } catch (\MangoPay\ResponseException $exc) {
            if ($exc->getCode() != 204)
                throw $exc;
        }
    }
    
    /**
     * Create page for Kyc document from file
     * @param int $userId User Id
     * @param \MangoPay\KycPage $page Kyc
     */
    public function CreateKycPageFromFile($userId, $kycDocumentId, $file)
{
        
        $filePath = $file;
        if (is_array($file)) {
            $filePath = $file['tmp_name'];
        }
        
        if (empty($filePath))
            throw new \MangoPay\Exception('Path of file cannot be
empty');
        
        if (!file_exists($filePath))
            throw new \MangoPay\Exception('File not exist');
        
        $kycPage = new \MangoPay\KycPage();
        $kycPage->File = base64_encode(file_get_contents($filePath));
        
        if (empty($kycPage->File))
            throw new \MangoPay\Exception('Content of the file cannot
be empty');
        
        $this->CreateKycPage($userId, $kycDocumentId, $kycPage);
    }
    
    /**
     * Get correct user object
     * @param object $response Response from API
     * @return UserLegal/UserNatural User object returned from API
     * @throws \MangoPay\Exception If occur unexpected response from API 
     */
    private function GetUserResponse($response) {
        
        if (isset($response->PersonType)) {
            
            switch ($response->PersonType) {
                case PersonType::Natural:
                    return $this->CastResponseToEntity($response,
'\MangoPay\UserNatural');
                case PersonType::Legal:
                    return $this->CastResponseToEntity($response,
'\MangoPay\UserLegal');
                default:
                    throw new Exception('Unexpected response. Wrong
PersonType value');
            }            
        } else {
            throw new Exception('Unexpected response. Missing
PersonType property');
        }
    }
    
    private function GetBankAccountType($bankAccount) {
        
        if (!isset($bankAccount->Details) ||
!is_object($bankAccount->Details))
            throw new Exception ('Details is not defined or it is not
object type');
        
        $className = str_replace('MangoPay\\BankAccountDetails',
'', get_class($bankAccount->Details));
        return strtolower($className);
    }
}
PK��[�8M�tools/apiWallets.incnu�[���<?php
namespace MangoPay;

/**
 * Class to management MangoPay API for wallets
 */
class ApiWallets extends ApiBase {
    
    /**
     * Create new wallet
     * @param Wallet $wallet
     * @return \MangoPay\Wallet Wallet object returned from API
     */
    public function Create($wallet) {
        return $this->CreateObject('wallets_create', $wallet,
'\MangoPay\Wallet');
    }
    
    /**
     * Get wallet
     * @param int $walletId Wallet identifier
     * @return \MangoPay\Wallet Wallet object returned from API
     */
    public function Get($walletId) {
        return $this->GetObject('wallets_get', $walletId,
'\MangoPay\Wallet');
    }
    
    /**
     * Save wallet
     * @param Wallet $wallet Wallet object to save
     * @return \MangoPay\Wallet Wallet object returned from API
     */
    public function Update($wallet) {
        return $this->SaveObject('wallets_save', $wallet,
'\MangoPay\Wallet');
    }

    /**
     * Get transactions for the wallet
     * @param type $walletId Wallet identifier
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param \MangoPay\FilterTransactions $filter Object to filter data
     * @param \MangoPay\Sorting $sorting Object to sorting data
     * @return \MangoPay\Transaction[] Transactions for wallet returned
from API
     */
    public function GetTransactions($walletId, & $pagination = null,
$filter = null, $sorting = null) {
        return $this->GetList('wallets_alltransactions',
$pagination, '\MangoPay\Transaction', $walletId, $filter,
$sorting);
    }
}
PK��[C�a�	�	tools/authenticationHelper.incnu�[���<?php
namespace MangoPay;

class AuthenticationHelper {
    
    /**
     * Root/parent instance that holds the OAuth token and Configuration
instance
     * @var \MangoPay\MangoPayApi
     */
    private $_root;

    /**
     * Constructor
     * @param \MangoPay\MangoPayApi Root/parent instance that holds the
OAuth token and Configuration instance
     */
    function __construct($root) {
        $this->_root = $root;
    }
    
    /**
     * Get HTTP header value with authorization string
     * @return string Authorization string
     */
    public function GetHttpHeaderKey(){
        return $this->GetHttpHeaderStrong();
    }
    
    /**
     * Get basic key for HTTP header
     * @return string
     * @throws \MangoPay\Exception If MangoPay_ClientId or
MangoPay_ClientPassword is not defined
     */
    public function GetHttpHeaderBasicKey() {
        if (is_null($this->_root->Config->ClientId) ||
strlen($this->_root->Config->ClientId) == 0)
            throw new Exception ('MangoPayApi.Config.ClientId is not
set.');
        
        if (is_null($this->_root->Config->ClientPassword) ||
strlen($this->_root->Config->ClientPassword) == 0)
            throw new Exception ('MangoPayApi.Config.ClientPassword is
not set.');
        
        $signature = $this->_root->Config->ClientId .
':' . $this->_root->Config->ClientPassword;
        return base64_encode($signature);
    }
    
    /**
     * Get HTTP header value with authorization string for basic
authentication
     * 
     * @return string Value for HTTP header with authentication string
     * @throws \MangoPay\Exception If required constants are not defined.
     */
    private function GetHttpHeaderBasic() {
        
        return 'Authorization: Basic ' .
$this->GetHttpHeaderBasicKey();
    }
    
    /**
     * Get HTTP header value with authorization string for strong
authentication
     * 
     * @return string Value for HTTP header with authentication string
     * @throws \MangoPay\Exception If OAuth token is not created (or is
invalid) for strong authentication.
     */
    private function GetHttpHeaderStrong() {
        $token = $this->_root->OAuthTokenManager->GetToken();

        if (is_null($token) || !isset($token->access_token) ||
!isset($token->token_type))
            throw new Exception ('OAuth token is not created (or is
invalid) for strong authentication');

        return 'Authorization: ' . $token->token_type . '
' . $token->access_token;
    }
}PK��[�U
T55#tools/authorizationTokenManager.incnu�[���<?php
namespace MangoPay;

/**
* Authorization token manager
*/
class AuthorizationTokenManager extends ApiBase {

    /**
     * Storage object
     * @var \MangoPay\IStorageStrategy
     */
    private $_storageStrategy;
    
    function __construct($root) {
        $this->_root = $root;

        $this->RegisterCustomStorageStrategy(new
DefaultStorageStrategy($this->_root->Config));
    }
    
    /**
     * Gets the current authorization token.
     * In the very first call, this method creates a new token before
returning.
     * If currently stored token is expired, this method creates a new
one.
     * @return \MangoPay\OAuthToken Valid OAuthToken instance.
     */
    public function GetToken() {
        $token = $this->_storageStrategy->get();
        
        if (is_null($token) || $token->IsExpired()) {
           
$this->storeToken($this->_root->AuthenticationManager->createToken());
        }
    
        return $this->_storageStrategy->get();
    }
    
    /**
     * Stores authorization token passed as an argument in the underlying
     * storage strategy implementation.
     * @param \MangoPay\OAuthToken $token Token instance to be stored.
     */
    public function StoreToken($token) {
        $this->_storageStrategy->Store($token);
    }
    
    /**
     * Registers custom storage strategy implementation.
     * By default, the DefaultStorageStrategy instance is used. 
     * There is no need to explicitly call this method until some more
complex 
     * storage implementation is needed.
     * @param \MangoPay\IStorageStrategy $customStorageStrategy
IStorageStrategy interface implementation.
     */
    public function RegisterCustomStorageStrategy($customStorageStrategy)
{
        $this->_storageStrategy = $customStorageStrategy;
    }
}PK��[�#aCMM
tools/defaultStorageStrategy.incnu�[���<?php
namespace MangoPay;

/**
 * Default storage strategy implementation.
 */
class DefaultStorageStrategy implements IStorageStrategy {
    
    private $_prefixContent = '<?php exit(); ?>';
    private $_fileName = 'MangoPaySdkStorage.tmp.php';
    private $_config;
    
    function __construct($config) {
        $this->_config = $config;
    }
    
    /**
     * Gets the current authorization token.
     * @return \MangoPay\OAuthToken Currently stored token instance or
null.
     */
    public function Get() {
        
        $filename = $this->GetPathToFile();
        if (!file_exists($filename))
            return null;
        
        $data = file_get_contents($filename);
        if ($data === false)
            return null;
        
        $serialized = str_replace($this->_prefixContent, '',
$data);
        return unserialize($serialized);
    }

    /**
     * Stores authorization token passed as an argument.
     * @param \MangoPay\OAuthToken $token Token instance to be stored.
     */
    public function Store($token) {
        
        if (!is_writable($this->GetPathToTemporaryFolder()))
            throw new \MangoPay\Exception('Cannot create or write to
file ' . $this->GetPathToTemporaryFolder());
        
        $serialized = serialize($token);
        $result = file_put_contents($this->GetPathToFile(),
$this->_prefixContent . $serialized, LOCK_EX);
        if ($result === false)
            throw new \MangoPay\Exception('Cannot put token to
file');
    }
    
    /**
     * Get path to storage file 
     * @return string
     */
    private function GetPathToFile() {
        return $this->GetPathToTemporaryFolder() . DIRECTORY_SEPARATOR .
$this->_fileName;
    }
    
    /**
     * Get path to temporary folder  
     * @return string
     */
    private function GetPathToTemporaryFolder() {
        
        if (is_null($this->_config->TemporaryFolder))
            throw new \MangoPay\Exception('Path to temporary folder is
not defined');
        
        return $this->_config->TemporaryFolder;
    }
}PK��[�`���tools/enums.incnu�[���<?php
namespace MangoPay;

/**
 * Request type enum
 */
class RequestType {
    const GET = 'GET';
    const POST = 'POST';
    const PUT = 'PUT';
    const DELETE = 'DELETE';
}

/**
 * Person type for users
 */
class PersonType {
    const Natural = 'NATURAL';
    const Legal = 'LEGAL';
}

/**
 * Event types
 */
class EventType {
    const KycCreated = "KYC_CREATED";
    const KycSucceeded = "KYC_SUCCEEDED";
    const KycFailed = "KYC_FAILED";
    const KycValidationAsked  = "KYC_VALIDATION_ASKED ";
    const PayinNormalCreated = "PAYIN_NORMAL_CREATED";
    const PayinNormalSucceeded = "PAYIN_NORMAL_SUCCEEDED";
    const PayinNormalFailed = "PAYIN_NORMAL_FAILED";
    const PayoutNormalCreated = "PAYOUT_NORMAL_CREATED";
    const PayoutNormalSucceeded = "PAYOUT_NORMAL_SUCCEEDED";
    const PayoutNormalFailed = "PAYOUT_NORMAL_FAILED";
    const TransferNormalCreated = "TRANSFER_NORMAL_CREATED";
    const TransferNormalSucceeded = "TRANSFER_NORMAL_SUCCEEDED";
    const TransferNormalFailed = "TRANSFER_NORMAL_FAILED";
    const PayinRefundCreated = "PAYIN_REFUND_CREATED";
    const PayinRefundSucceeded = "PAYIN_REFUND_SUCCEEDED";
    const PayinRefundFailed = "PAYIN_REFUND_FAILED";
    const PayoutRefundCreated = "PAYOUT_REFUND_CREATED";
    const PayoutRefundSucceeded = "PAYOUT_REFUND_SUCCEEDED";
    const PayoutRefundFailed = "PAYOUT_REFUND_FAILED";
    const TransferRefundCreated = "TRANSFER_REFUND_CREATED";
    const TransferRefundSucceeded = "TRANSFER_REFUND_SUCCEEDED";
    const TransferRefundFailed = "TRANSFER_REFUND_FAILED";
}

/**
 * KYC document types
 */
class KycDocumentType {
    const IdentityProof = 'IDENTITY_PROOF';
    const RegistrationProof = 'REGISTRATION_PROOF';
    const ArticlesOfAssociation = 'ARTICLES_OF_ASSOCIATION';
    const ShareholderDeclaration = 'SHAREHOLDER_DECLARATION';
    const AddressProof = 'ADDRESS_PROOF';
}

/**
 * KYC document statuses
 */
class KycDocumentStatus{
    const Created = 'CREATED';
    const ValidationAsked = 'VALIDATION_ASKED';
    const Validated = 'VALIDATED';
    const Refused = 'REFUSED';
}

class CardValidity {
    const Unknown = 'UNKNOWN';
    const Valid = 'VALID';
    const Invalid = 'INVALID';
}

class SortDirection {
    const DESC = 'desc';
    const ASC = 'asc';
}PK��[2�SҘ�tools/filterBase.incnu�[���<?php
namespace MangoPay;

 /**
 * Base filter object
 */
class FilterBase extends Dto {
    /**
     * Start date in unix format:
     * return only records that have CreationDate BEFORE this date
     * @var time
     */
    public $BeforeDate;
    
    /**
     * End date in unix format:
     * return only records that have CreationDate AFTER this date
     * @var time 
     */
    public $AfterDate;
}PK��[p��2��tools/filterEvents.incnu�[���<?php
namespace MangoPay;

/**
 * Filter for event list
 */
class FilterEvents extends FilterBase {
    
    /**
     * Event type
     * @var \MangoPay\EventType
     */
    public $EventType;
}
PK��[�ľ11tools/filterTransactions.incnu�[���<?php
namespace MangoPay;

/**
 * Filter for transaction list
 */
class FilterTransactions extends FilterBase {
    
    /**
     * TransactionStatus {CREATED, SUCCEEDED, FAILED}
     * @var string
     */
    public $Status;
    
    /**
     * TransactionType {PAYIN, PAYOUT, TRANSFER}
     * @var string 
     */
    public $Type;
    
    /**
     * TransactionNature { REGULAR, REFUND, REPUDIATION }
     * @var string
     */
    public $Nature;
    
    /**
     * TransactionDirection {DEBIT, CREDIT}
     * @var string 
     */
    public $Direction;
}PK��[�#o,,tools/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK��[~/���tools/iStorageStrategy.incnu�[���<?php
namespace MangoPay;

/**
 * Storage strategy interface.
 */
interface IStorageStrategy {
    
    /**
     * Gets the current authorization token.
     * @return \MangoPay\OAuthToken Currently stored token instance or
null.
     */
    function Get();
    
    /**
     * Stores authorization token passed as an argument.
     * @param \MangoPay\OAuthToken $token Token instance to be stored.
     */
    function Store($token);
}PK��[>��00tools/logs.incnu�[���<?php
namespace MangoPay;

/**
 * Class to manage debug logs in MangoPay SDK
 */
class Logs {
    
    public static function Debug($message, $data){
        
        print '<pre>';
        print $message . ': ';
        print_r($data);
        print
'<br/>-------------------------------</pre>';
    }
}PK��[zk��L'L'tools/restTool.incnu�[���<?php
namespace MangoPay;

/**
 * Class to prepare HTTP request, call the request and decode the response
 */
class RestTool {

    /**
     * Root/parent instance that holds the OAuthToken and Configuration
instance
     * @var \MangoPay\MangoPayApi
     */
    private $_root;

    /**
     * Variable to flag that in request authentication data are required
     * @var bool 
     */
    private $_authRequired;
    
    /**
     * Array with HTTP header to send with request
     * @var array 
     */
    private $_requestHttpHeaders;
    
    /**
     * cURL handle
     * @var resource  
     */
    private $_curlHandle;
    
    /**
     * Request type for current request
     * @var RequestType 
     */
    private $_requestType;
    
    /**
     * Array with data to pass in the request
     * @var array 
     */
    private $_requestData;
    
    /**
     * Code get from response
     * @var int 
     */
    private $_responseCode;
    
    /**
     * Pagination object
     * @var MangoPay\Pagination 
     */
    private $_pagination;
    
    private $_requestUrl;
    
    private static $_JSON_HEADER = 'Content-Type:
application/json';
        
    /**
     * Constructor
     * @param bool $authRequired Variable to flag that in request the
authentication data are required
     * @param \MangoPay\MangoPayApi Root/parent instance that holds the
OAuthToken and Configuration instance
     */
    function __construct($authRequired = true, $root) {
        $this->_authRequired = $authRequired;
        $this->_root = $root;
    }
    
    public function AddRequestHttpHeader($httpHeader) {
        
        if (is_null($this->_requestHttpHeaders))
            $this->_requestHttpHeaders = array();
        
        array_push($this->_requestHttpHeaders, $httpHeader);
    }
    
    /**
     * Call request to MangoPay API
     * @param string $urlMethod Type of method in REST API
     * @param \MangoPay\RequestType $requestType Type of request
     * @param array $requestData Data to send in request
     * @param \MangoPay\Pagination $pagination Pagination object
     * @param array Array with additional parameters to URL. Expected keys:
"sort" and "filter"
     * @return object Response data
     */
    public function Request($urlMethod, $requestType, $requestData = null,
& $pagination = null, $additionalUrlParams = null) {
        
        $this->_requestType = $requestType;
        $this->_requestData = $requestData;
        
        $this->BuildRequest($urlMethod, $pagination,
$additionalUrlParams);
        $responseResult = $this->RunRequest();
        
        if(!is_null($pagination)){
            $pagination = $this->_pagination;
        }
        
        return $responseResult;
    }
    
    /**
     * Execute request and check response
     * @return object Response data
     * @throws Exception If cURL has error
     */
    private function RunRequest() {
        
        $result = curl_exec($this->_curlHandle);
        if ($result === false && curl_errno($this->_curlHandle)
!= 0)
            throw new Exception('cURL error: ' .
curl_error($this->_curlHandle));
        
        $this->_responseCode = (int)curl_getinfo($this->_curlHandle,
CURLINFO_HTTP_CODE);
        
        curl_close($this->_curlHandle);

        $logClass = $this->_root->Config->LogClass;
        if ($this->_root->Config->DebugMode) 
            $logClass::Debug('Response JSON', $result);
        
        $response = json_decode($result); 
        
        if ($this->_root->Config->DebugMode) 
            $logClass::Debug('Response object', $response);
        
        $this->CheckResponseCode($response);
        
        return $response;
    }
    
    /**
     * Prepare all parameter to request
     * @param String $urlMethod Type of method in REST API
     * @throws Exception If some parameters are not set
     */
    private function BuildRequest($urlMethod, $pagination,
$additionalUrlParams = null) {
        
        $urlTool = new UrlTool($this->_root);
        $restUrl = $urlTool->GetRestUrl($urlMethod,
$this->_authRequired, $pagination, $additionalUrlParams);

        $this->_requestUrl = $urlTool->GetFullUrl($restUrl);
        $logClass = $this->_root->Config->LogClass;
        if ($this->_root->Config->DebugMode) 
            $logClass::Debug('FullUrl', $this->_requestUrl);
        
        $this->_curlHandle = curl_init($this->_requestUrl);
        if ($this->_curlHandle === false)
            throw new Exception('Cannot initialize cURL
session');
        
        curl_setopt($this->_curlHandle, CURLOPT_RETURNTRANSFER, true);

        if ($this->_root->Config->CertificatesFilePath ==
'')
            curl_setopt($this->_curlHandle, CURLOPT_SSL_VERIFYPEER,
false);
        else {
            curl_setopt($this->_curlHandle, CURLOPT_SSL_VERIFYPEER,
true);
            curl_setopt($this->_curlHandle, CURLOPT_CAINFO,
$this->_root->Config->CertificatesFilePath);
        }
        
        if (!is_null($pagination)) {
            curl_setopt($this->_curlHandle, CURLOPT_HEADERFUNCTION,
array(&$this, 'ReadResponseHeader'));
            $this->_pagination = $pagination;
        }
        
        switch ($this->_requestType) {
            case RequestType::POST:
                curl_setopt($this->_curlHandle, CURLOPT_POST, true);
                break;
            case RequestType::PUT:
                curl_setopt($this->_curlHandle, CURLOPT_CUSTOMREQUEST,
'PUT');
                break;
            case RequestType::DELETE:
                curl_setopt($this->_curlHandle, CURLOPT_CUSTOMREQUEST,
"DELETE");
                break;
        }
        
        if ($this->_root->Config->DebugMode) 
            $logClass::Debug('RequestType',
$this->_requestType);

        $httpHeaders = $this->GetHttpHeaders();
        curl_setopt($this->_curlHandle, CURLOPT_HTTPHEADER,
$httpHeaders);
        if ($this->_root->Config->DebugMode) 
            $logClass::Debug('HTTP Headers', $httpHeaders);

        if (!is_null($this->_requestData)) {

            if ($this->_root->Config->DebugMode) 
                $logClass::Debug('RequestData object',
$this->_requestData);

            // encode to json if needed
            if (in_array(self::$_JSON_HEADER, $httpHeaders)) {
                $this->_requestData =
json_encode($this->_requestData);
                if ($this->_root->Config->DebugMode) 
                    $logClass::Debug('RequestData JSON',
$this->_requestData);
            }

            curl_setopt($this->_curlHandle, CURLOPT_POSTFIELDS,
$this->_requestData);
        }
    }
    
    /**
     * Callback to read response headers
     * @param resource $handle cURL handle
     * @param string $header Header from response
     * @return int Length of header
     */
    private function ReadResponseHeader($handle, $header) {
        
        $logClass = $this->_root->Config->LogClass;
        if ($this->_root->Config->DebugMode) 
            $logClass::Debug('Response headers', $header);
        
        if (strpos($header, 'X-Number-Of-Pages:') !== false) {
            $this->_pagination->TotalPages =
(int)trim(str_replace('X-Number-Of-Pages:', '',
$header));
        }
        
        if (strpos($header, 'X-Number-Of-Items:') !== false) {
            $this->_pagination->TotalItems =
(int)trim(str_replace('X-Number-Of-Items:', '',
$header));
        }
        
        if (strpos($header, 'Link: ') !== false) {

            $strLinks = trim(str_replace('Link:', '',
$header));
            $arrayLinks = explode(',', $strLinks);
            if ($arrayLinks !== false) {
                $this->_pagination->Links = array();
                foreach ($arrayLinks as $link) {

                    $tmp = str_replace(array('<"',
'">', ' rel="', '"'),
'', $link);
                    $oneLink = explode(';', $tmp);
                    if (is_array($oneLink) && isset($oneLink[0])
&& isset($oneLink[1]))
                        $this->_pagination->Links[$oneLink[1]] =
$oneLink[0];
                }
            }
        }
        
        return strlen($header);
    }
    
    /**
     * Get HTTP header to use in request
     * @return array Array with HTTP headers 
     */
    private function GetHttpHeaders(){
        // return if already created...
        if (!is_null($this->_requestHttpHeaders))
            return $this->_requestHttpHeaders;
        
        // ...or initialize with default headers
        $this->_requestHttpHeaders = array();
        
        // content type
        array_push($this->_requestHttpHeaders, self::$_JSON_HEADER);
        
        // Authentication http header
        if ($this->_authRequired) {
            $authHlp = new AuthenticationHelper($this->_root);
            array_push($this->_requestHttpHeaders,
$authHlp->GetHttpHeaderKey());
        }        

        return $this->_requestHttpHeaders;
    }
    
    /**
     * Check response code
     * @param object $response Response from REST API
     * @throws ResponseException If response code not OK
     */
    private function CheckResponseCode($response){

        if ($this->_responseCode != 200) {
            
            if (isset($response) && is_object($response) &&
isset($response->Message)) {
                
                $error = new Error();
                $error->Message = $response->Message;
                $error->Errors = property_exists($response,
'Errors') 
                        ? $response->Errors 
                        : property_exists($response, 'errors') ?
$response->errors : null;
                throw new ResponseException($this->_requestUrl,
$this->_responseCode, $error);
                
            } else         
                throw new ResponseException($this->_requestUrl,
$this->_responseCode);
        }
    }
}PK��[��]��tools/sorting.incnu�[���<?php
namespace MangoPay;

 /**
 * Base sorting object
 */
class Sorting {
    
    /**
     * Fields separator in sort parameters in URL
     */
    const SortFieldSeparator = "_";
    
    /**
     * Fields separator in sort parameters in URL
     */
    const SortUrlParameterName = "Sort";
    
    /**
     * Array with fileds to sort
     * @var type Array
     */
    private $_sortFields;
    
    /**
     * Add filed to sort
     * @param string $filedName Property name to sort
     * @param \MangoPay\SortDirection $sortDirection Sort direction
     */
    public function AddFiled($filedName, $sortDirection) {
        $this->_sortFields[$filedName] = $sortDirection;
    }
    
    /**
     * Get sort parametrs to URL
     * @return array 
     */
    public function GetSortParameter() {
        return array(self::SortUrlParameterName =>
$this->_getFields());
    }
    
    private function _getFields() {
        $sortValues = "";
        foreach ($this->_sortFields as $key => $value) {
            if (!empty($sortValues))
                $sortValues .= self::SortFieldSeparator;
     
            $sortValues .= $key . ":" . $value;
        }
        
        return $sortValues;
    }
}PK��[� <�tools/urlTool.incnu�[���<?php
namespace MangoPay;

class UrlTool {

    /**
     * Root/parent instance that holds the OAuthToken and Configuration
instance
     * @var \MangoPay\MangoPayApi
     */
    private $_root;

    /**
     * Constructor
     * @param \MangoPay\MangoPayApi Root/parent instance that holds the
OAuthToken and Configuration instance
     */
    function __construct($root) {
        $this->_root = $root;
    }
    
    private function GetHost(){
        
        if (is_null($this->_root->Config->BaseUrl) ||
strlen($this->_root->Config->BaseUrl) == 0)
            throw new Exception ('Neither MangoPay_BaseUrl constant
nor BaseUrl config setting is defined.');
        
        $baseUrl = $this->_root->Config->BaseUrl;
        if (strpos($baseUrl, '/', strlen($baseUrl) - 1 ))
             $baseUrl = substr ($baseUrl, 0, strlen($baseUrl) - 1);  
        
        return $baseUrl;
    }
    
    public function GetRestUrl($urlKey, $addClientId = true, $pagination =
null, $additionalUrlParams = null) {

        if (!$addClientId) {
            $url = '/v2' . $urlKey;
        } else {
            $url = '/v2/' .
$this->_root->Config->ClientId . $urlKey;
        }

        $paramsAdded = false;
        if (!is_null($pagination)) {
            $url .= '?page=' . $pagination->Page .
'&per_page=' . $pagination->ItemsPerPage;
            $paramsAdded = true;
        }

        if (!is_null($additionalUrlParams)) {
            
            if (array_key_exists("sort", $additionalUrlParams)) {
                $url .= $paramsAdded ? '&' : '?';
                $url .=
http_build_query($additionalUrlParams["sort"]);
                $paramsAdded = true;
            }
            
            if (array_key_exists("filter", $additionalUrlParams))
{
                $url .= $paramsAdded ? '&' : '?';
                $url .=
http_build_query($additionalUrlParams["filter"]);
                $paramsAdded = true;
            }
        }

        return $url;
    }
    
    public function GetFullUrl($restUrl) {
        return $this->GetHost() . $restUrl;
    } 
}
PK��[�{�B��types/bankAccountDetails.incnu�[���<?php
namespace MangoPay;

/**
 * Marker interface for classes with details option in BankAccount entity
 */
interface BankAccountDetails {
}PK��[bDj]

types/bankAccountDetailsCA.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents CA bank account type for in BankAccount entity
 */
class BankAccountDetailsCA extends Dto implements BankAccountDetails {
    
    /**
     * Bank name
     * @var string
     */
    public $BankName;
    
    /**
     * Institution number
     * @var string 
     */
    public $InstitutionNumber;
    
    /**
     * Branch code
     * @var string 
     */
    public $BranchCode;
    
    /**
     * Account number
     * @var string 
     */
    public $AccountNumber;
}PK��[b��AWWtypes/bankAccountDetailsGB.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents GB bank account type for in BankAccount entity
 */
class BankAccountDetailsGB extends Dto implements BankAccountDetails {
    
    /**
     * Account number
     * @var string
     */
    public $AccountNumber;
    
    /**
     * Sort code
     * @var string 
     */
    public $SortCode;
}PK��[��V_DD
types/bankAccountDetailsIBAN.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents IBAN bank account type for in BankAccount entity
 */
class BankAccountDetailsIBAN extends Dto implements BankAccountDetails {
    
    /**
     * IBAN number
     * @var string
     */
    public $IBAN;
    
    /**
     * BIC
     * @var string 
     */
    public $BIC;
}PK��[�҅uEE!types/bankAccountDetailsOTHER.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents OTHER bank account type for in BankAccount entity
 */
class BankAccountDetailsOTHER extends Dto implements BankAccountDetails {
    
    /**
     * Type  
     * @var string
     */
    public $Type;
    
    /**
     * The Country associate to the BankAccount, 
     * ISO 3166-1 alpha-2 format is expected
     * @var string 
     */
    public $Country;
    
    /**
     * Valid BIC format
     * @var string
     */
    public $BIC;
    
    /**
     * Account number 
     * @var string 
     */
    public $AccountNumber;
}PK��[��LLtypes/bankAccountDetailsUS.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents US bank account type for in BankAccount entity
 */
class BankAccountDetailsUS extends Dto implements BankAccountDetails {
    
    /**
     * Account number
     * @var string
     */
    public $AccountNumber;
    
    /**
     * ABA
     * @var string 
     */
    public $ABA;
}PK��[~
�~**types/configuration.incnu�[���<?php
namespace MangoPay;

/**
 * Configuration settings
 */
class Configuration {

    /**
     * Client Id
     * @var string
     */
    public $ClientId;
	
    /**
     * Client password
     * @var string 
     */
    public $ClientPassword;
	
    /**
     * Base URL to MangoPay API
     * @var string 
     */
    /**Producion URL changes to {public $BaseUrl =
'https://api.mangopay.com';}**/
    public $BaseUrl = 'https://api.sandbox.mangopay.com';
    
    /**
    * Path to folder with temporary files (with permissions to write)
    */
    public $TemporaryFolder = null;
    
    /**
     * Absolute path to file holding one or more certificates to verify the
peer with.
     * If empty - don't verifying the peer's certificate.
     * @var string 
     */
    public $CertificatesFilePath = '';
    
    /**
     * [INTERNAL USAGE ONLY] 
     * Switch debug mode: log all request and response data
     */
    public $DebugMode = false;
    
    /**
     * Set the logging class if DebugMode is enabled
     */
    public $LogClass = 'MangoPay\Logs';
}PK��[�Q
�OO
types/dto.incnu�[���<?php

namespace MangoPay;

/**
 * Abstract class for all DTOs (entities and their composites)
 */
abstract class Dto {
    
    /**
     * Get array with mapping which property is object and what type of
object.
     * To be overridden in child class if has any sub objects.
     * @return array
     */
    public function GetSubObjects() { return array(); }

    /**
     * Get array with mapping which property depends on other property  
     * To be overridden in child class if has any dependent objects.
     * @return array
     */
    public function GetDependsObjects() { return array(); }
    
    /**
     * Get array with read only properties - not used in response
     * To be overridden in child class if has any read-only properties.
     * @return array
     */
    public function GetReadOnlyProperties() { return array(); }
}
PK��[SmGNNtypes/error.incnu�[���<?php

namespace MangoPay;

/**
 * Class represents error object
 */
class Error {
    
    /**
     * Error message
     * @var String
     * @access public
     */
    public $Message;
        
    /**
     * Array with errors information
     * @var KeyValueArray
     * @access public
     */
    public $Errors;
    
    
    
}
PK��[�m5BBtypes/exceptions/exception.incnu�[���<?php
namespace MangoPay;

class Exception extends \Exception {
}
PK��[�#o,,types/exceptions/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK��[^[lyy&types/exceptions/responseException.incnu�[���<?php
namespace MangoPay;

/**
 * Response exception class
 */
class ResponseException extends Exception {
    
    /**
     * Array with response code and corresponding response message
     * @var array
     */
    private $_responseCodes = array(
        200 => 'OK',
        206 => 'PartialContent',
        400 => 'Bad request',
        401 => 'Unauthorized',
        403 => 'Prohibition to use the method',
        404 => 'Not found',
        405 => 'Method not allowed',
        413 => 'Request entity too large',
        422 => 'Unprocessable entity',
        500 => 'Internal server error',
        501 => 'Not implemented'
    );
    
    /**
     * Error details
     * @var Error 
     */
    private $_errorInfo;
    
    /**
     * Request URL
     * @var string
     */
    public $RequestUrl;
    
    /**
     * Construct
     * @param int $code Response code
     * @param Error $errorInfo Details with the error
     */
    function __construct($requestUrl, $code, $errorInfo = null) {
        
        $this->RequestUrl = $requestUrl;
        $this->_code = $code;
        
        if (isset($this->_responseCodes[$code])) {
            $errorMsg = $this->_responseCodes[$code];
        } else {
            $errorMsg = 'Unknown response error';
        }
        
        if (!is_null($errorInfo)) {
            $errorMsg .= '. ' . $errorInfo->Message;
            $this->_errorInfo = $errorInfo;
        }
        
        parent::__construct($errorMsg, $code);
    }
    
    /**
     * Get Error object returned by REST API
     * @return Error
     */
    public function GetErrorDetails(){
        return $this->_errorInfo;
    }
}PK��[�#o,,types/index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK��[�F+~AAtypes/keyValueArray.incnu�[���<?php

namespace MangoPay;

/**
 * Class represents tabular values
 */
class KeyValueArray {
    
    /**
     * Key for tabular variable
     * @var String
     * @access public
     */
    public $Key;
    
    /**
     * Value for tabular variable
     * @var String
     * @access public
     */
    public $Value;
}
PK��[�x�@@types/money.incnu�[���<?php

namespace MangoPay;

/**
 * Class represents money value with currency
 */
class Money extends Dto {
    
    /**
     * Text with currency code with ISO 4217 standard
     * @var String
     */
    public $Currency;
    
    /**
     * The currency amount of money
     * @var Long
     */
    public $Amount;
}
PK��[�((types/oAuthToken.incnu�[���<?php
namespace MangoPay;

/**
 * OAuthToken
 */
class OAuthToken extends Dto {
    
    /**
     * Created time
     * @var int
     */
    private $create_time;
    
    /**
     * Value of token
     * @var string
     */
    public $access_token;
    
    /**
     * Token type
     * @var string
     */
    public $token_type;
    
    /**
     * Expires time for the token
     * @var int
     */
    public $expires_in;
    
    /**
     * Constructor
     */
    function __construct() {
        $this->create_time = time() - 5;
    }
    
    /**
     * Check that current tokens are expire and return true if yes
     * @return bool
     */
    public function IsExpired() {
        return (time() >= ($this->create_time +
$this->expires_in));
    }
}PK��[ņSc��types/pagination.incnu�[���<?php

namespace MangoPay;

/**
 * Class represents pagination information
 */
class Pagination extends Dto {
    
    /**
     * Page number
     * @var Int
     */
    public $Page;
    
    /**
     * Number of items per page
     * @var Int
     */
    public $ItemsPerPage;
    
    /**
     * Number of total pages
     * @var Int
     */
    public $TotalPages;
    
    /**
     * Number of total items
     * @var Int
     */
    public $TotalItems;
    
    /**
     * Array with links to navigation. 
     * All values optional. Format:
     * array(
     *      first => http url
     *      prev => http url
     *      next => http url
     *      last => http url
     * )
     * @var array 
     */
    public $Links = array();
    
    /**
     * Construct
     * @param int $page Number of page
     * @param int $itemsPerPage Number of items on one page
     */
    function __construct($page = 1, $itemsPerPage = 10) {
        $this->Page = $page;
        $this->ItemsPerPage = $itemsPerPage;
    }
}PK��[d�!��types/payInExecutionDetails.incnu�[���<?php
namespace MangoPay;

/**
 * Marker interface for classes with details of execution option in PayIn
entity
 */
interface PayInExecutionDetails { }
PK��[0��>%types/payInExecutionDetailsDirect.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents Web type for execution option in PayIn entity
 */
class PayInExecutionDetailsDirect extends Dto implements
PayInExecutionDetails {
    
    /**
     * SecureMode { DEFAULT, FORCE }
     * @var string
     */
    public $SecureMode;
    
    /**
     * SecureModeReturnURL
     * @var string 
     */
    public $SecureModeReturnURL;
    
    /**
     * SecureModeRedirectURL
     * @var string 
     */
    public $SecureModeRedirectURL;
}
PK��[̎l�NN"types/payInExecutionDetailsWeb.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents Web type for execution option in PayIn entity
 */
class PayInExecutionDetailsWeb extends Dto implements PayInExecutionDetails
{

    /**
     * URL format expected
     * @var string
     */
    public $RedirectURL;
    
    /**
     * URL format expected
     * @var string
     */
    public $ReturnURL;
    
    /**
     * URL format expected.
     * @var string
     */
    public $TemplateURL;
    
    /**
     * The URL where you host the iFramed template.
     * For CB, Visa, MasterCard you need to specify PAYLINE: before your
URL 
     * with the iFramed template 
     * ex: PAYLINE: https://www.maysite.com/payline_template/
     * Used for:
     *  - direct debit web type pay-in.
     * 
     * @var PayInTemplateURLOptions 
     */
    public $TemplateURLOptions;
    
    /**
     * @var string
     */
    public $Culture;
    
    /**
     * Mode3DSType { DEFAULT, FORCE }
     * @var string
     */
    public $SecureMode;
    
    /**
     * Get array with read-only properties
     * @return array
     */
    public function GetReadOnlyProperties() {
        $properties = parent::GetReadOnlyProperties();
        array_push( $properties, 'RedirectURL' );
        
        return $properties;
    }
    
    /**
     * Get array with mapping which property is object and what type of
object 
     * @return array
     */
    public function GetSubObjects() {
        return array(
            'TemplateURLOptions' =>
'\MangoPay\PayInTemplateURLOptions'
        );
    }
}PK��[��ҭ��types/payInPaymentDetails.incnu�[���<?php
namespace MangoPay;

/**
 * Marker interface for classes with details of means of payment in PayIn
entity
 */
interface PayInPaymentDetails { }
PK��[�ӛ��%types/payInPaymentDetailsBankWire.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents BankWire type for mean of payment in PayIn entity
 */
class PayInPaymentDetailsBankWire extends Dto implements
PayInPaymentDetails {
    
    /**
     * Declared debited funds
     * @var \MangoPay\Money
     */
    public $DeclaredDebitedFunds;

    /**
     * Declared fees
     * @var \MangoPay\Money
     */
    public $DeclaredFees;

    /**
     * Bank account details
     * @var \MangoPay\BankAccount
     */
    public $BankAccount;
    
    /**
     * Wire reference
     * @var string 
     */
    public $WireReference;
    
    /**
     * Get array with mapping which property is object and what type of
object 
     * @return array
     */
    public function GetSubObjects() {
        return array(
            'DeclaredDebitedFunds' =>
'\MangoPay\Money' ,
            'DeclaredFees' => '\MangoPay\Money' ,
            'BankAccount' => '\MangoPay\BankAccount'
        );
    }
}
PK��[�?Axx!types/payInPaymentDetailsCard.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents Card type for mean of payment in PayIn entity
 */
class PayInPaymentDetailsCard extends Dto implements PayInPaymentDetails {

    /**
     * CardType { CB_VISA_MASTERCARD, AMEX }
     * @var string
     */
    public $CardType;
    
    /**
     * CardId
     * @var string 
     */
    public $CardId;
}
PK��[�+bK22(types/payInPaymentDetailsDirectDebit.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents direct debit type for mean of payment in PayIn entity
 */
class PayInPaymentDetailsDirectDebit extends Dto implements
PayInPaymentDetails {

    /**
     * Direct debit type {SOFORT, ELV, GIROPAY}
     * @var string
     */
    public $DirectDebitType;
}
PK��[L�//*types/payInPaymentDetailsPreAuthorized.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents Web type for execution option in PayIn entity
 */
class PayInPaymentDetailsPreAuthorized extends Dto implements
PayInPaymentDetails {
    
    /**
     * The ID of the Preauthorization object
     * @var string
     */
    public $PreauthorizationId;
}PK��[�A����!types/payInTemplateURLOptions.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents template URL options
 */
class PayInTemplateURLOptions extends Dto  {
    
    /**
     * PAYLINE options
     * 
     * @var string 
     */
    public $PAYLINE;
}PK��[�[����types/payOutPaymentDetails.incnu�[���<?php
namespace MangoPay;

/**
 * Marker interface for classes with details of means of payment in PayOut
entity
 */
interface PayOutPaymentDetails { }
PK��[	e.���&types/payOutPaymentDetailsBankWire.incnu�[���<?php
namespace MangoPay;

/**
 * Class represents BankWire type for mean of payment in PayOut entity
 */
class PayOutPaymentDetailsBankWire extends Dto implements
PayOutPaymentDetails {
    
    /**
     * Bank account Id
     * @var string
     */
    public $BankAccountId;
    
    /**
     * A custom reference you wish to appear on the user’s bank statement

     * @var string
     */
    public $BankWireRef;
}
PK��[B�>�''common/common.incnu�[���PK��[�#o,,hcommon/index.htmlnu�[���PK��[%a����entities/bankAccount.incnu�[���PK��[{F�]�
entities/card.incnu�[���PK��[�u]�GG!-entities/cardPreAuthorization.incnu�[���PK��[�����entities/cardRegistration.incnu�[���PK��[7?I+���!entities/client.incnu�[���PK��[)S���#entities/entityBase.incnu�[���PK��[
G�SS�&entities/event.incnu�[���PK��[���y��o(entities/hook.incnu�[���PK��[�#o,,�*entities/index.htmlnu�[���PK��[�%�UU+entities/kycDocument.incnu�[���PK��[W+���-entities/kycPage.incnu�[���PK��[��z%%�.entities/payIn.incnu�[���PK��[ܙ9W��7entities/payOut.incnu�[���PK��[��&���;entities/refund.incnu�[���PK��[�*o���$�=entities/temporaryImmediatePayIn.incnu�[���PK��[�����!�?entities/temporaryPaymentCard.incnu�[���PK��[��}P��KCentities/transaction.incnu�[���PK��[k�c-Kentities/transfer.incnu�[���PK��[�<����Lentities/user.incnu�[���PK��[#�f++�Oentities/userLegal.incnu�[���PK��[�Sz��Wentities/userNatural.incnu�[���PK��[ƀIJ�]entities/wallet.incnu�[���PK��[�#o,,

aindex.htmlnu�[���PK��[��_��pamangoPayApi.incnu�[���PK��[�	��F>F>Qntools/apiBase.incnu�[���PK��[��Zii"جtools/apiCardPreAuthorizations.incnu�[���PK��[��t�00��tools/apiCardRegistrations.incnu�[���PK��[r��$$�tools/apiCards.incnu�[���PK��[�~_��w�tools/apiClients.incnu�[���PK��[�H����tools/apiEvents.incnu�[���PK��[q̡�����tools/apiHooks.incnu�[���PK��[fj��??��tools/apiKycDocuments.incnu�[���PK��[g*�m{{U�tools/apiOAuth.incnu�[���PK��[�D����tools/apiPayIns.incnu�[���PK��[�3�qq�tools/apiPayOuts.incnu�[���PK��[�"�����tools/apiRefunds.incnu�[���PK��[�������tools/apiTransfers.incnu�[���PK��[MȌ
t(t(��tools/apiUsers.incnu�[���PK��[�8M�Otools/apiWallets.incnu�[���PK��[C�a�	�	�tools/authenticationHelper.incnu�[���PK��[�U
T55#�#tools/authorizationTokenManager.incnu�[���PK��[�#aCMM
j+tools/defaultStorageStrategy.incnu�[���PK��[�`���4tools/enums.incnu�[���PK��[2�SҘ�!=tools/filterBase.incnu�[���PK��[p��2���>tools/filterEvents.incnu�[���PK��[�ľ11@tools/filterTransactions.incnu�[���PK��[�#o,,�Btools/index.htmlnu�[���PK��[~/����Btools/iStorageStrategy.incnu�[���PK��[>��00Etools/logs.incnu�[���PK��[zk��L'L'oFtools/restTool.incnu�[���PK��[��]���mtools/sorting.incnu�[���PK��[�
<��rtools/urlTool.incnu�[���PK��[�{�B��N{types/bankAccountDetails.incnu�[���PK��[bDj]

'|types/bankAccountDetailsCA.incnu�[���PK��[b��AWW�~types/bankAccountDetailsGB.incnu�[���PK��[��V_DD
'�types/bankAccountDetailsIBAN.incnu�[���PK��[�҅uEE!��types/bankAccountDetailsOTHER.incnu�[���PK��[��LLQ�types/bankAccountDetailsUS.incnu�[���PK��[~
�~**�types/configuration.incnu�[���PK��[�Q
�OO
\�types/dto.incnu�[���PK��[SmGNN�types/error.incnu�[���PK��[�m5BBu�types/exceptions/exception.incnu�[���PK��[�#o,,�types/exceptions/index.htmlnu�[���PK��[^[lyy&|�types/exceptions/responseException.incnu�[���PK��[�#o,,K�types/index.htmlnu�[���PK��[�F+~AA��types/keyValueArray.incnu�[���PK��[�x�@@?�types/money.incnu�[���PK��[�((��types/oAuthToken.incnu�[���PK��[ņSc��*�types/pagination.incnu�[���PK��[d�!��j�types/payInExecutionDetails.incnu�[���PK��[0��>%Q�types/payInExecutionDetailsDirect.incnu�[���PK��[̎l�NN"��types/payInExecutionDetailsWeb.incnu�[���PK��[��ҭ��K�types/payInPaymentDetails.incnu�[���PK��[�ӛ��%.�types/payInPaymentDetailsBankWire.incnu�[���PK��[�?Axx!4�types/payInPaymentDetailsCard.incnu�[���PK��[�+bK22(��types/payInPaymentDetailsDirectDebit.incnu�[���PK��[L�//*��types/payInPaymentDetailsPreAuthorized.incnu�[���PK��[�A����!�types/payInTemplateURLOptions.incnu�[���PK��[�[����8�types/payOutPaymentDetails.incnu�[���PK��[	e.���&�types/payOutPaymentDetailsBankWire.incnu�[���PKRR1�