telepaycash / sdk-telepay-php
Library to receive payments with TelePay
Requires
- php: >=7.0
Requires (Dev)
- phpunit/phpunit: ^10.0.3
README
TelePay client library for the PHP language, so you can easely process cryptocurrency payments using the REST API.
Installation
Install the package with composer:
composer require telepaycash/sdk-telepay-php
Using the library
Import the library classes using the Composer autoload:
require 'vendor/autoload.php'; use TelePay\TelePayClient; use TelePay\TelePayEnvironment;
Configure the TelePay client using the secret of your merchant
$clientSecret = "YOUR API SECRET KEY"; $environment = new TelePayEnvironment($clientSecret); $telepay = new TelePayClient($environment);
Get your current merchant
$me = $telepay->getMe(); print_r($me);
Response
Array ( [version] => 1.0 [merchant] => Array ( [name] => MyMerchant [url] => https://mymerchant.com/ [logo_url] => https://ik.imagekit.io/telepay/merchants/descarga_-k4ehiTd5.jpeg [logo_thumbnail_url] => https://ik.imagekit.io/telepay/tr:n-media_library_thumbnail/merchants/descarga_-k4ehiTd5.jpeg [verified] => [username] => merchant_username [public_profile] => https://telepay.cash/to/merchant_username [owner] => Array ( [first_name] => Raubel [last_name] => Guerra [username] => raubel1993 ) [created_at] => 2022-04-13T00:51:37.802614Z [updated_at] => ) )
Get the balance of all merchant wallets
$balances = $telepay->getAllBalances(); print_r($balances);
Response
Array ( [wallets] => Array ( [0] => Array ( [asset] => TON [blockchain] => TON [balance] => 10.005 [network] => mainnet ) [1] => Array ( [asset] => TON [blockchain] => TON [balance] => 0 [network] => testnet ) ) )
Get the balance of one of the merchant wallets
$asset = new TelePayAssetInput("TON", "TON", "mainnet"); $balance = $telepay->getBalance($asset); print_r($balance);
Response
Array ( [wallets] => Array ( [0] => Array ( [asset] => TON [blockchain] => TON [balance] => 0 [network] => mainnet ) ) )
Get the assets
Get assets suported by TelePay. Read docs
$assets = $telepay->getAssets(); print_r($assers);
Response
Array ( [assets] => Array ( [0] => Array ( [asset] => TON [blockchain] => TON [usd_price] => 1.050999999999999934 [url] => https://ton.org [networks] => Array ( [0] => mainnet [1] => testnet ) [coingecko_id] => the-open-network ) ) )
You can get the detail of a single asset. Read docs
$asset = new TelePayAssetInput("TON", "TON", "mainnet"); $assetDetail = $telepay->getAsset($asset);
Create one invoice
$orderId = 56; $invoice = new TelePayInvoiceInput("TON", "TON", "testnet", "0.2"); $invoice->setDescription("Test using SDK TelePay PHP"); $invoice->setMetadata([ "my_reference_id" => $orderId, "other_metadata" => "any value" ]); $invoice->setSuccessUrl("https://www.example.com/payment_success?order_id=$orderId"); $invoice->setCancelUrl("https://www.example.com/payment_cancelled?order_id=$orderId"); $respCreateInvoice = $telepay->createInvoice($invoice); print_r($respCreateInvoice);
Response
Array ( [number] => YJ1EJO9PLA [asset] => TON [blockchain] => TON [network] => mainnet [status] => pending [amount] => 2.000000000000000000 [amount_remaining] => 0.000000000000000000 [amount_real] => 0.000000000000000000 [description] => Test using SDK TelePay PHP [metadata] => Array ( [my_reference_id] => 56 [other_metadata] => any value ) [checkout_url] => https://telepay.cash/checkout/YJ1EJO9PLA [onchain_url] => ton://transfer/UQDoFjaqMtuxkJV-caGiEdxMxjkTAWU9oskjpfAA1uwHbe4u?amount=2000000000 [success_url] => https://www.example.com/payment_success?order_id=56 [cancel_url] => https://www.example.com/payment_cancelled?order_id=56 [explorer_url] => [expires_at] => 2022-06-28T00:09:52.038782Z [created_at] => 2022-06-27T14:09:52.038908Z [updated_at] => )
View invoices
Find many invoices. Read docs
$invoicesResponse = $telepay->getInvoices();
Find one invoice by number. Read docs
$invoiceNumber = "UIOAXSSFNB"; $respGetInvoice = $telepay->getInvoice($invoiceNumber);
Cancel invoice
$invoiceNumber = "8N1DLRKV5S"; $respCancelInvoice = $telepay->cancelInvoice($invoiceNumber); print_r($respCancelInvoice);
Response
Array ( [number] => YJ1EJO9PLA [asset] => TON [blockchain] => TON [network] => mainnet [status] => cancelled [amount] => 2.000000000000000000 [amount_remaining] => 0.000000000000000000 [amount_real] => 0.000000000000000000 [description] => Test using SDK TelePay PHP [metadata] => Array ( [other_metadata] => any value [my_reference_id] => 56 ) [checkout_url] => https://telepay.cash/checkout/YJ1EJO9PLA [onchain_url] => [success_url] => https://www.example.com/payment_success?order_id=56 [cancel_url] => https://www.example.com/payment_cancelled?order_id=56 [explorer_url] => [expires_at] => 2022-06-28T00:09:52.038782Z [created_at] => 2022-06-27T14:09:52.038908Z [updated_at] => 2022-06-27T14:09:53.205920Z )
Delete invoice
$invoiceNumber = "8N1DLRKV5S"; $respDeleteInvoice = $telepay->deleteInvoice($invoiceNumber); print_r($respDeleteInvoice);
Response
Array
(
[success] => invoice.deleted
[message] => Invoice deleted.
)
Transfer
$transfer = new TelePayTransferInput("TON", "TON", "mainnet", "0.00005", "raubel1993"); $transfer->setMessage("Debt settled"); $respTransfer= $telepay->transfer($transfer); print_r($respTransfer);
Response
Array
(
[success] => transfer.ok
[message] => Transfer performed.
)
Withdraw Fee
$withdraw = new TelePayWithdrawInput("TON", "TON", "mainnet", "0.2", "EQCwLtwjII1yBfO3m6T9I7__6CUXj60ZFmN3Ww2aiLQLicsO"); $withdraw->setMessage("for my savings account"); $respWithdrawFee = $telepay->getWithdrawFee($withdraw); print_r($respWithdrawFee);
Response
Array ( [blockchain_fee] => 0.001824 [processing_fee] => 0.01 [total] => 0.011824 )
Withdraw
$withdraw = new TelePayWithdrawInput("TON", "TON", "mainnet", "0.2", "EQCwLtwjII1yBfO3m6T9I7__6CUXj60ZFmN3Ww2aiLQLicsO"); $withdraw->setMessage("for my savings account"); $respWithdraw = $telepay->withdraw($withdraw); print_r($respWithdraw);
Response
Array ( [success] => 1 )
View webhooks
Find many webhooks. Read docs
$webhooksResponse = $telepay->getWebhooks();
Find one webhook by Id. Read docs
$webhookId = 325; $webhookResponse = $telepay->getWebhook($webhookId); print_r($webhookResponse);
Response
Array ( [id] => 325 [url] => https://www.example.com/webhook [secret] => secret [events] => Array ( [0] => invoice.completed ) [active] => 1 )
Create or update a webhook
For create a webhook is required the url, a secret and the events associated. Read docs
$urlWebhook = "https://www.example.com/webhook"; $secretWebhook = "secret"; $eventsWebhook = [ TelePayEvents::INVOICE_COMPLETED ]; $webhookInput = new TelePayWebhookInput($urlWebhook, $secretWebhook, $eventsWebhook); $responseCreateWebhook = $telepay->createWebhook($webhookInput);
For update a webhook is required a webhookId and the new params. Read docs
$webhookId = 325; $responseUpdateWebhook = $telepay->updateWebhook($webhookId, $webhookInput);
Activate or deativate a webhook
$webhookId = 325; $telepay->activateWebhook($webhookId); $telepay->deactivateWebhook($webhookId);
Delete a webhook
$webhookId = 325; $telepay->deleteWebhook($webhookId);
Tests
All endpoint responses were tested. To run the tests yourself, you need your TelePay merchant secret with at least 3 testnet toncoins, a Telepay user who will receive the test transfer, and a testnet wallet which will receive the test withdraw.
TELEPAY_SECRET_API_KEY= USERNAME_TELEPAY_TRANSFER= WHITDRAW_TO_WALLET= composer tests
Contributors ✨
The library is made by (emoji key):
Raubel Guerra 💻 |
Carlos Lugones 🧑🏫 |
This project follows the all-contributors specification. Contributions of any kind welcome!