# SDKs
Source: https://paylinky.vercel.app/docs/sdks

Zero-dependency clients for Node.js, Python and PHP.

# SDKs

Drop-in, zero-dependency clients. Download from the links below and replace `YOUR_PAYLINKY_DOMAIN` with `https://paylinky.vercel.app` (or pass `baseUrl`).

| Language | Download | Requires |
| - | - | - |
| Node.js | [`paylinky.js`](https://paylinky.vercel.app/sdk/paylinky.js) | Node 18+ |
| Python | [`paylinky.py`](https://paylinky.vercel.app/sdk/paylinky.py) | `requests` |
| PHP | [`Paylinky.php`](https://paylinky.vercel.app/sdk/Paylinky.php) | PHP 7.4+, ext-curl |

:::tabs
```javascript Node.js
const { Paylinky, PaylinkyError } = require("./paylinky.js");
const plk = new Paylinky(process.env.PAYLINKY_KEY, { baseUrl: "https://paylinky.vercel.app" });

// Direct API
const tx = await plk.collect({ amount: 1000, currency: "XAF", country_code: "CM", operator: "MTN Mobile Money", phone: "+237000000001", reference: "order_1" });

// Hosted page
const link = await plk.createPaymentLink({ title: "Order #1", amount: 10000, currency: "XAF" }, "order-1");
console.log(link.payment_link);

// Errors
try { await plk.collect({}); } catch (e) { if (e instanceof PaylinkyError) console.log(e.status, e.code, e.message); }
```
```python Python
from paylinky import Paylinky, PaylinkyError
plk = Paylinky(os.environ["PAYLINKY_KEY"], base_url="https://paylinky.vercel.app")

tx = plk.collect(amount=1000, currency="XAF", country_code="CM",
                 operator="MTN Mobile Money", phone="+237000000001", reference="order_1")
link = plk.create_payment_link(idempotency_key="order-1", title="Order #1", amount=10000, currency="XAF")
print(link["payment_link"])
```
```php PHP
require "Paylinky.php";
$plk = new Paylinky(getenv("PAYLINKY_KEY"), "https://paylinky.vercel.app");
$tx = $plk->collect(["amount" => 1000, "currency" => "XAF", "country_code" => "CM",
  "operator" => "MTN Mobile Money", "phone" => "+237000000001", "reference" => "order_1"]);
$link = $plk->createPaymentLink(["title" => "Order #1", "amount" => 10000, "currency" => "XAF"], "order-1");
echo $link["payment_link"];
```
:::

## Methods

| Method | Endpoint |
| - | - |
| `countries()` | `GET /countries` |
| `cryptoAssets()` | `GET /crypto/assets` |
| `fees()` / `balance()` | `GET /fees`, `GET /balance` |
| `collect(params)` | `POST /collect` |
| `cryptoCollect(params)` | `POST /crypto/collect` |
| `transaction(id)` | `GET /transaction/{id}` |
| `createPaymentLink(params, idempotencyKey)` | `POST /payment-links` |
| `paymentLink(id)` | `GET /payment-links/{id}` |
| `simulate(id, status)` | `POST /sandbox/simulate` |
| `verifyWebhook(raw, headers, secret)` | Signature check |
