1. Go to this page and download the library: Download yabacon/paystack-php library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
yabacon / paystack-php example snippets
$paystack = new Yabacon\Paystack(SECRET_KEY);
try
{
$tranx = $paystack->transaction->initialize([
'amount'=>$amount, // in kobo
'email'=>$email, // unique to customers
'reference'=>$reference, // unique to transactions
]);
} catch(\Yabacon\Paystack\Exception\ApiException $e){
print_r($e->getResponseObject());
die($e->getMessage());
}
// store transaction reference so we can query in case user never comes back
// perhaps due to network issue
save_last_transaction_reference($tranx->data->reference);
// redirect to page so User can pay
header('Location: ' . $tranx->data->authorization_url);
// Retrieve the request's body and parse it as JSON
$event = Yabacon\Paystack\Event::capture();
http_response_code(200);
/* It is a important to log all events received. Add code *
* here to log the signature and body to db or file */
openlog('MyPaystackEvents', LOG_CONS | LOG_NDELAY | LOG_PID, LOG_USER | LOG_PERROR);
syslog(LOG_INFO, $event->raw);
closelog();
/* Verify that the signature matches one of your keys*/
$my_keys = [
'live'=>'sk_live_blah',
'test'=>'sk_test_blah',
];
$owner = $event->discoverOwner($my_keys);
if(!$owner){
// None of the keys matched the event's signature
die();
}
// Do something with $event->obj
// Give value to your customer but don't give any output
// Remember that this is a call from Paystack's servers and
// Your customer is not seeing the response here at all
switch($event->obj->event){
// charge.success
case 'charge.success':
if('success' === $event->obj->data->status){
// TIP: you may still verify the transaction
// via an API call before giving value.
}
break;
}
$reference = isset($_GET['reference']) ? $_GET['reference'] : '';
if(!$reference){
die('No reference supplied');
}
// initiate the Library's Paystack Object
$paystack = new Yabacon\Paystack(SECRET_KEY);
try
{
// verify using the library
$tranx = $paystack->transaction->verify([
'reference'=>$reference, // unique to transactions
]);
} catch(\Yabacon\Paystack\Exception\ApiException $e){
print_r($e->getResponseObject());
die($e->getMessage());
}
if ('success' === $tranx->data->status) {
// transaction was successful...
// please check other things like whether you already gave value for this ref
// if the email matches the customer who owns the product etc
// Give value
}
$fee = new Yabacon\Paystack\Fee();
$fee->withPercentage(0.015); // 1.5%
$fee->withAdditionalCharge(10000); // plus 100 NGN
$fee->withThreshold(250000); // when total is above 2,500 NGN
$fee->withCap(200000); // capped at 2000
$my_keys = [
'live'=>'sk_live_blah',
'test'=>'sk_test_blah',
];
$owner = $event->discoverOwner($my_keys);
if(!$owner){
// None of my keys matched the event's signature
die();
}
$evt->forwardTo('http://another-webhook.url');
$builder = new MetadataBuilder();
$builder->withQuoteId(10); // will add as quote_id: 10 unless you turn auto_snake_case off
$builder->withMobileNumber(08012345678); // will add as mobile_number: 08012345678
$builder->withCSRF('dontacceptpaymentunlessthismatches');
MetadataBuilder::$auto_snake_case = false;
$builder->withCustomField('Mobile Number', '080123456789');
$builder->withCustomField('See Me', 'I\'m Visible on your Dashboard');