A PHP library to easily integrate the Notch Pay API into your applications.
You can install the package via Composer:
composer require notchpay/notchpay-phpBefore using the library, you need to configure your API key:
useNotchPay\NotchPay;
// Set your API key
NotchPay::setApiKey('b.xxxxxxx'); // Production API key// or
NotchPay::setApiKey('sb.xxxxxxx'); // Sandbox API key// Optional: Set a Private key for certain operations
NotchPay::setPrivateKey('private_key_here');
// Optional: Set a Sync ID for certain operations
NotchPay::setSyncId('sync_id_here');useNotchPay\NotchPay;
useNotchPay\Payment;
NotchPay::setApiKey('b.xxxxxxx');
try {
$payment = Payment::initialize([
'amount' => 5000, // Amount according to currency format'email' => 'client@example.com', // Unique customer email'currency' => 'XAF', // ISO currency code'callback' => 'https://example.com/callback', // Callback URL (optional)'reference' => 'order_123', // Unique transaction reference'description' => 'Product purchase', // Description (optional)'metadata' => [ // Metadata (optional)'customer_id' => '123',
'order_id' => '456'
]
]);
// Redirect user to payment URLheader('Location: ' . $payment->authorization_url);
exit();
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}For more details on parameters, see the official documentation.
useNotchPay\NotchPay;
useNotchPay\Payment;
NotchPay::setApiKey('b.xxxxxxx');
try {
$reference = $_GET['reference']; // Get reference from callback URL$payment = Payment::verify($reference);
if ($payment->transaction->status === 'complete') {
// Payment was successful// Deliver product or service
} else {
// Payment is not yet completed or failed
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Payment;
NotchPay::setApiKey('b.xxxxxxx');
try {
$payments = Payment::all([
'limit' => 20, // Number of items per page (optional)'page' => 1, // Page number (optional)'status' => 'complete', // Filter by status (optional)'date_start' => '2023-01-01', // Start date (optional)'date_end' => '2023-12-31'// End date (optional)
]);
foreach ($payments->itemsas$payment) {
echo$payment->reference . ' - ' . $payment->amount . '' . $payment->currency . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Payment;
NotchPay::setApiKey('b.xxxxxxx');
try {
$reference = 'order_123';
$data = [
"channel": "cm.mtn",
"account_number" => "670000000" ];
$result = Payment::charge($reference, $data);
if ($result->status === 'success') {
// Payment cancelled successfully
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Payment;
NotchPay::setApiKey('b.xxxxxxx');
try {
$reference = 'order_123';
$result = Payment::cancel($reference);
if ($result->transaction->status === 'success') {
// Payment cancelled successfully
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Transfer;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$r = Transfer::initialize([
'amount' => 5000, // Amount according to currency format'currency' => 'XAF', // ISO currency code'recipient' => [
'name' => 'John Doe',
'email' => 'recipient@example.com',
'phone' => '+237600000000',
'account_number' => '237600000000', // Mobile Money Account or phone number'channel' => 'cm.mtn'// Provider (mtn_momo, orange_money, etc.)
],
'description' => 'Salary payment', // Description (optional)'reference' => 'transfer_123', // Unique reference (optional)'metadata' => [ // Metadata (optional)'employee_id' => '123'
]
]);
// Process responseecho"Transfer initialized with reference: " . $r->transfer->reference;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Transfer;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$reference = 'transfer_123';
$transfer = Transfer::verify($reference);
echo"Transfer status: " . $transfer->status;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Transfer;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$transfers = Transfer::all([
'limit' => 20, // Number of items per page (optional)'page' => 1// Page number (optional)
]);
foreach ($transfers->dataas$transfer) {
echo$transfer->reference . ' - ' . $transfer->amount . '' . $transfer->currency . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Beneficiary;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$beneficiary = Beneficiary::create([
'name' => 'John Doe',
'email' => 'john@example.com',
'phone' => '+237600000000',
'account' => '237600000000',
'provider' => 'mtn_momo',
'country' => 'CM',
'currency' => 'XAF',
'description' => 'Employee'// Optional
]);
echo"Beneficiary created with ID: " . $beneficiary->id;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Beneficiary;
NotchPay::setPrivateKey('private_key_here');
NotchPay::setApiKey('b.xxxxxxx');
try {
$id = 'ben_123456';
$beneficiary = Beneficiary::retrieve($id);
echo"Beneficiary name: " . $beneficiary->name;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Beneficiary;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$id = 'ben_123456';
$beneficiary = Beneficiary::update($id, [
'name' => 'John Updated',
'description' => 'New position'
]);
echo"Beneficiary updated: " . $beneficiary->name;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Beneficiary;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$beneficiaries = Beneficiary::all([
'limit' => 20, // Number of items per page (optional)'page' => 1// Page number (optional)
]);
foreach ($beneficiaries->dataas$beneficiary) {
echo$beneficiary->name . ' - ' . $beneficiary->account . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Beneficiary;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$id = 'ben_123456';
$result = Beneficiary::delete($id);
if ($result->status === 'success') {
echo"Beneficiary deleted successfully";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Customer;
NotchPay::setApiKey('b.xxxxxxx');
try {
$customer = Customer::create([
'name' => 'John Doe',
'email' => 'john@example.com',
'phone' => '+237600000000',
'metadata' => [ // Optional'age' => 30,
'address' => 'Douala, Cameroon'
]
]);
echo"Customer created with ID: " . $customer->id;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Customer;
NotchPay::setApiKey('b.xxxxxxx');
try {
$id = 'cus_123456';
$customer = Customer::retrieve($id);
echo"Customer name: " . $customer->name;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Customer;
NotchPay::setApiKey('b.xxxxxxx');
try {
$id = 'cus_123456';
$customer = Customer::update($id, [
'name' => 'John Updated',
'phone' => '+237611111111'
]);
echo"Customer updated: " . $customer->name;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Customer;
NotchPay::setApiKey('b.xxxxxxx');
try {
$customers = Customer::all([
'limit' => 20, // Number of items per page (optional)'page' => 1// Page number (optional)
]);
foreach ($customers->dataas$customer) {
echo$customer->name . ' - ' . $customer->email . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Customer;
NotchPay::setApiKey('b.xxxxxxx');
try {
$id = 'cus_123456';
$result = Customer::block($id);
if ($result->status === 'success') {
echo"Customer blocked successfully";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Customer;
NotchPay::setApiKey('b.xxxxxxx');
try {
$id = 'cus_123456';
$result = Customer::unblock($id);
if ($result->status === 'success') {
echo"Customer unblocked successfully";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Customer;
NotchPay::setApiKey('b.xxxxxxx');
try {
$id = 'cus_123456';
$paymentMethods = Customer::paymentMethods($id);
foreach ($paymentMethods->dataas$method) {
echo$method->type . ' - ' . $method->last4 . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Customer;
NotchPay::setApiKey('b.xxxxxxx');
try {
$id = 'cus_123456';
$payments = Customer::payments($id, [
'limit' => 10,
'page' => 1
]);
foreach ($payments->dataas$payment) {
echo$payment->reference . ' - ' . $payment->amount . '' . $payment->currency . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Webhook;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$webhook = Webhook::create([
'url' => 'https://example.com/webhooks',
'events' => ['payment.complete', 'payment.failed'],
'description' => 'Webhook for payments', // Optional'active' => true// Optional
]);
echo"Webhook created with ID: " . $webhook->id;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Webhook;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$id = 'wh_123456';
$webhook = Webhook::retrieve($id);
echo"Webhook URL: " . $webhook->url;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Webhook;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$id = 'wh_123456';
$webhook = Webhook::update($id, [
'events' => ['payment.complete', 'payment.failed', 'transfer.complete'],
'active' => true
]);
echo"Webhook updated: " . $webhook->url;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Webhook;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$webhooks = Webhook::all();
foreach ($webhooks->dataas$webhook) {
echo$webhook->url . ' - ' . ($webhook->active ? 'Active' : 'Inactive') . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Webhook;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$id = 'wh_123456';
$result = Webhook::delete($id);
if ($result->status === 'success') {
echo"Webhook deleted successfully";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Balance;
NotchPay::setApiKey('b.xxxxxxx');
NotchPay::setPrivateKey('private_key_here');
try {
$balance = Balance::check();
echo"Available balance: " . $balance->available . "" . $balance->currency . "\n";
echo"Pending balance: " . $balance->pending . "" . $balance->currency;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Channel;
NotchPay::setApiKey('b.xxxxxxx');
try {
$channels = Channel::all();
foreach ($channels->dataas$channel) {
echo$channel->name . ' - ' . $channel->code . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Channel;
NotchPay::setApiKey('b.xxxxxxx');
try {
$code = 'mtn_momo';
$channel = Channel::retrieve($code);
echo"Channel name: " . $channel->name;
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Country;
NotchPay::setApiKey('b.xxxxxxx');
try {
$countries = Country::all();
foreach ($countries->dataas$country) {
echo$country->name . ' - ' . $country->code . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}useNotchPay\NotchPay;
useNotchPay\Currency;
NotchPay::setApiKey('b.xxxxxxx');
try {
$currencies = Currency::all();
foreach ($currencies->dataas$currency) {
echo$currency->name . ' - ' . $currency->code . "\n";
}
} catch(\NotchPay\Exceptions\ApiException$e) {
// Handle errorecho$e->getMessage();
}The library throws different exceptions that you can catch to handle errors:
try {
// Your NotchPay code here
} catch(\NotchPay\Exceptions\ApiException$e) {
// API errors (validation errors, server errors, etc.)echo"API Error: " . $e->getMessage();
print_r($e->errors); // Error details
} catch(\NotchPay\Exceptions\InvalidArgumentException$e) {
// Invalid argument errorsecho"Invalid Argument: " . $e->getMessage();
} catch(\NotchPay\Exceptions\NotchPayException$e) {
// Other NotchPay errorsecho"NotchPay Error: " . $e->getMessage();
}For more information on API parameters and responses, see the official NotchPay documentation.
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email hello@notchpay.co instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.