PHP SDK

Official COINQVEST SDK for PHP. Accept digital currencies like Bitcoin, Ether, or Stellar Lumens and settle in your national currency.

View SDKs for other programming languages.

README.md


COINQVEST Merchant SDK (PHP)

Official COINQVEST Merchant API SDK for PHP by www.coinqvest.com

This SDK implements the REST API documented at https://www.coinqvest.com/en/api-docs

For SDKs in different programming languages, see https://www.coinqvest.com/en/api-docs#sdks

Read our Merchant API development guide and the examples below to help you get started.

Requirements

  • PHP >=5.3.0
  • cURL extension for PHP
  • OpenSSL extension for PHP

Installation as Drop-In

Copy the contents of src into the "include path" of your project.

Usage Client

include('CQMerchantClient.class.php');

$client = new CQMerchantClient(
    'YOUR-API-KEY',
    'YOUR-API-SECRET',
    '/var/log/coinqvest.log' // an optional log file location
);

Get your API key and secret here: https://www.coinqvest.com/en/api-settings

Examples

Create a Customer (https://www.coinqvest.com/en/api-docs#post-customer)

Creates a customer object, which can be associated with checkouts, payments, and invoices. Checkouts associated with a customer generate more transaction details, help with your accounting, and can automatically create invoices for your customer and yourself.

$response = $client->post('/customer', array('customer' => array(
    'email' => 'john@doe.com',
    'firstname' => 'John',
    'lastname' => 'Doe',
    'company' => 'ACME Inc.',
    'adr1' => '810 Beach St',
    'adr2' => 'Finance Department',
    'zip' => 'CA 94133',
    'city' => 'San Francisco',
    'countrycode' => 'US'
)));

if ($response->httpStatusCode == 200) {   
    $data = json_decode($response->responseBody, true);
    $customerId = $data['customerId']; // use this to associate a checkout with this customer
}

Create a Hosted Checkout (https://www.coinqvest.com/en/api-docs#post-checkout-hosted)

Hosted checkouts are the simplest form of getting paid using the COINQVEST platform.

Using this endpoint, your server submits a set of parameters, such as the payment details including optional tax items, customer information, and settlement currency. Your server then receives a checkout URL in return, which is displayed back to your customer.

Upon visiting the URL, your customer is presented with a checkout page hosted on COINQVEST servers. This page displays all the information the customer needs to complete payment.

$response = $client->post('/checkout/hosted', array(
    'charge' => array(
        'customerId' => $customerId, // associates this charge with a customer as crated by POST /customer
        'billingCurrency' => 'USD', // a billing currency as given by GET /currencies
        'lineItems' => array( // a list of line items included in this charge
            array(
                'description' => 'T-Shirt',
                'netAmount' => 10, // denominated in the currency specified above
                'quantity' => 1
            )
        ),
        'discountItems' => array( // an optional list of discounts
            array(
                'description' => 'Loyalty Discount',
                'netAmount' => '0.5'
            )
        ),
        'shippingCostItems' => array( // any shipping costs?
            array(
                'description' => 'Shipping and Handling',
                'netAmount' => '3.99',
                'taxable' => false // sometimes shipping costs are taxable
            )
        ),
        'taxItems' => array( // any taxes?
            array(
                'name' => 'CA Sales Tax',
                'percent' => '0.0825' // 8.25% CA sales tax
            )
        )
    ),
    'settlementAsset' => 'USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN' // your settlement asset as given by GET /assets (or ORIGIN to omit conversion) 
));

if ($response->httpStatusCode == 200) {   
    $data = json_decode($response->responseBody, true);
    $checkoutId = $data['checkoutId']; // store this persistently in your database
    $url = $data['url']; // redirect your customer to this URL to complete the payment
}

Monitor Payment State (https://www.coinqvest.com/en/api-docs#get-checkout)

Once the payment is captured we notify you via email, webhook. You can also poll GET /checkout for payment status updates:

$response = $client->get('/checkout', array('id' => $checkoutId));

if ($response->httpStatusCode == 200) {   
    $data = json_decode($response->responseBody, true);
    $state = $data['checkout']['state'];
    if ($state == 'CHECKOUT_COMPLETED')) {
        echo "The payment has completed and your account was credited. You can now ship the goods."
    } else {
        // try again in 30 seconds or so...
    }
}

Query your USD Wallet (https://www.coinqvest.com/en/api-docs#get-wallet)

$response = $client->get('/wallet', array('assetCode' => 'USD'));

Query all Wallets (https://www.coinqvest.com/en/api-docs#get-wallets)

$response = $client->get('/wallets');

Withdraw USDC to your Bitcoin Account (https://www.coinqvest.com/en/api-docs#post-withdrawal)

$response = $client->post('/withdrawal', array(
    'sourceAsset' => 'USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN', // withdraw from your USDC wallet
    'sourceAmount' => '100',
    'targetNetwork' => 'BITCOIN', // a target network as given by GET /networks
    'targetAccount' => array(
        'address' => 'bc1qj633nx575jm28smgcp3mx6n3gh0zg6ndr0ew23'
    )
));

Withdraw USDC to your Stellar Account (https://www.coinqvest.com/en/api-docs#post-withdrawal)

$response = $client->post('/withdrawal', array(
    'sourceAsset' => 'USDC:GA5ZSEJYB37JRC5AVCIA5MOP4RHTM335X2KGX3IHOJAPP5RE34K4KZVN', // withdraw from your USDC wallet
    'sourceAmount' => '100',
    'targetNetwork' => 'STELLAR', // a target network as given by GET /networks
    'targetAccount' => array(
        'account' => 'GDONUHZKLSYLDOZWR2TDW25GFXOBWCCKTPK34DLUVSOMFHLGURX6FNU6',
        'memo' => 'Exodus',
        'memoType' => 'text'
    )
));

Update a Customer (https://www.coinqvest.com/en/api-docs#put-customer)

$response = $client->post('/customer', array('customer' => array(
        'id' => 'fd4f47a50c7f',
        'email' => 'new@email-address.com'
)));

Delete a Customer (https://www.coinqvest.com/en/api-docs#delete-customer)

$response = $client->delete('/customer', array('customer' => array(
        'id' => 'fd4f47a50c7f'
)));

List your 250 newest customers (https://www.coinqvest.com/en/api-docs#get-customers)

$response = $client->get('/customers', array('limit' => 250));

List all available assets (https://www.coinqvest.com/en/api-docs#get-assets)

$response = $client->get('/assets');

List all available networks (https://www.coinqvest.com/en/api-docs#get-networks)

$response = $client->get('/networks');

Please inspect https://www.coinqvest.com/en/api-docs for detailed API documentation or email us at service@coinqvest.com if you have questions.

Support and Feedback

We'd love to hear your feedback. If you have specific problems or bugs with this SDK, please file an issue on GitHub. For general feedback and support requests please email service@coinqvest.com.

Contributing

  1. Fork it ( https://github.com/COINQVEST/php-merchant-sdk/fork )
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request
View on GitHub View API Docs
© COINQVEST LLC 2018-2022 · Terms of Service · Privacy Policy · KYC/AML Policy · Anti-Fraud Policy · Data Processing · License COINQVEST LLC (Company Number 0000970546) is a limited liability company incorporated at 54 Jedności Street, 65-018 Zielona Góra, Poland. COINQVEST LLC reports to the General Inspector of Financial Information and is authorized by the Polish Ministry of Finance to provide virtual currency exchange and custody services under Virtual Asset Service Provider number RDWW-311. Licensed and Regulated in the EU © COINQVEST LLC 2018-2022 · Terms of Service · Privacy Policy · KYC/AML Policy · Anti-Fraud Policy · Data Processing · License
Space cat likes space and he surfs on a space ship.