aceraven777/laravel-paymaya
| Install | |
|---|---|
composer require aceraven777/laravel-paymaya |
|
| Latest Version: | v1.1.3 |
| PHP: | >=5.3.0 |
| Laravel: | 4 – 9 |
| License: | MIT |
| Last Updated: | Oct 4, 2022 |
| Links: | GitHub · Packagist |
Integrate PayMaya payments in Laravel
Integrated PayMaya SDK (https://github.com/PayMaya/PayMaya-PHP-SDK) and port it to Laravel.
Installation
Run the following command to install:
composer require aceraven777/laravel-paymaya "~1.1"
Run the following command to publish User library file:
php artisan vendor:publish --provider "Aceraven777\PayMaya\PayMayaServiceProvider"
Usage
When you run php artisan vendor:publish it will create file in config/paymaya.php and app/Libraries/PayMaya/User.php, you may edit this file based on your needs.
For the sample codes below you have to define PAYMAYA_PUBLIC_KEY and PAYMAYA_SECRET_KEY in your .env file for your API keys. Here's the link for sandbox API keys for PayMaya: https://developers.maya.ph/reference/sandbox-credentials-and-cards#sandbox-api-keys
Setting up Webhooks
use Aceraven777\PayMaya\PayMayaSDK;
use Aceraven777\PayMaya\API\Webhook;
public function setupWebhooks()
{
PayMayaSDK::getInstance()->initCheckout(
config('paymaya.public_key'),
config('paymaya.secret_key'),
(app()->environment('production') ? 'PRODUCTION' : 'SANDBOX')
);
$this->clearWebhooks();
$successWebhook = new Webhook();
$successWebhook->name = Webhook::CHECKOUT_SUCCESS;
$successWebhook->callbackUrl = url('callback/success');
$successWebhook->register();
$failureWebhook = new Webhook();
$failureWebhook->name = Webhook::CHECKOUT_FAILURE;
$failureWebhook->callbackUrl = url('callback/error');
$failureWebhook->register();
$dropoutWebhook = new Webhook();
$dropoutWebhook->name = Webhook::CHECKOUT_DROPOUT;
$dropoutWebhook->callbackUrl = url('callback/dropout');
$dropoutWebhook->register();
}
private function clearWebhooks()
{
$webhooks = Webhook::retrieve();
foreach ($webhooks as $webhook) {
$webhook->delete();
}
}
Customize Merchant Page
use Aceraven777\PayMaya\PayMayaSDK;
use Aceraven777\PayMaya\API\Customization;
public function customizeMerchantPage()
{
PayMayaSDK::getInstance()->initCheckout(
config('paymaya.public_key'),
config('paymaya.secret_key'),
(app()->environment('production') ? 'PRODUCTION' : 'SANDBOX')
);
$shopCustomization = new Customization();
$shopCustomization->get();
$shopCustomization->logoUrl = asset('logo.jpg');
$shopCustomization->iconUrl = asset('favicon.ico');
$shopCustomization->appleTouchIconUrl = asset('favicon.ico');
$shopCustomization->customTitle = 'PayMaya Payment Gateway';
$shopCustomization->colorScheme = '#f3dc2a';
$shopCustomization->set();
}
Checkout
use Aceraven777\PayMaya\PayMayaSDK;
use Aceraven777\PayMaya\API\Checkout;
use Aceraven777\PayMaya\Model\Checkout\Item;
use App\Libraries\PayMaya\User as PayMayaUser;
use Aceraven777\PayMaya\Model\Checkout\ItemAmount;
use Aceraven777\PayMaya\Model\Checkout\ItemAmountDetails;
public function checkout()
{
PayMayaSDK::getInstance()->initCheckout(
config('paymaya.public_key'),
config('paymaya.secret_key'),
(app()->environment('production') ? 'PRODUCTION' : 'SANDBOX')
);
$sample_item_name = 'Product 1';
$sample_total_price = 1000.00;
$sample_user_phone = '1234567';
$sample_user_email = 'test@gmail.com';
$sample_reference_number = '1234567890';
// Item
$itemAmountDetails = new ItemAmountDetails();
$itemAmountDetails->tax = "0.00";
$itemAmountDetails->subtotal = number_format($sample_total_price, 2, '.', '');
$itemAmount = new ItemAmount();
$itemAmount->currency = "PHP";
$itemAmount->value = $itemAmountDetails->subtotal;
$itemAmount->details = $itemAmountDetails;
$item = new Item();
$item->name = $sample_item_name;
$item->amount = $itemAmount;
$item->totalAmount = $itemAmount;
// Checkout
$itemCheckout = new Checkout();
$user = new PayMayaUser();
$user->contact->phone = $sample_user_phone;
$user->contact->email = $sample_user_email;
$itemCheckout->buyer = $user->buyerInfo();
$itemCheckout->items = array($item);
$itemCheckout->totalAmount = $itemAmount;
$itemCheckout->requestReferenceNumber = $sample_reference_number;
$itemCheckout->redirectUrl = array(
"success" => url('returl-url/success'),
"failure" => url('returl-url/failure'),
"cancel" => url('returl-url/cancel'),
);
if ($itemCheckout->execute() === false) {
$error = $itemCheckout::getError();
return redirect()->back()->withErrors(['message' => $error['message']]);
}
if ($itemCheckout->retrieve() === false) {
$error = $itemCheckout::getError();
return redirect()->back()->withErrors(['message' => $error['message']]);
}
return redirect()->to($itemCheckout->url);
}
Webhook Callback
use Illuminate\Http\Request;
use Aceraven777\PayMaya\PayMayaSDK;
use Aceraven777\PayMaya\API\Checkout;
public function callback(Request $request)
{
PayMayaSDK::getInstance()->initCheckout(
config('paymaya.public_key'),
config('paymaya.secret_key'),
(app()->environment('production') ? 'PRODUCTION' : 'SANDBOX')
);
$transaction_id = $request->get('id');
if (! $transaction_id) {
return ['status' => false, 'message' => 'Transaction Id Missing'];
}
$itemCheckout = new Checkout();
$itemCheckout->id = $transaction_id;
$checkout = $itemCheckout->retrieve();
if ($checkout === false) {
$error = $itemCheckout::getError();
return redirect()->back()->withErrors(['message' => $error['message']]);
}
return $checkout;
}
Void Payment
use Aceraven777\PayMaya\PayMayaSDK;
use Aceraven777\PayMaya\API\VoidPayment;
public function voidPayment($checkoutId)
{
PayMayaSDK::getInstance()->initCheckout(
config('paymaya.public_key'),
config('paymaya.secret_key'),
(app()->environment('production') ? 'PRODUCTION' : 'SANDBOX')
);
$voidPayment = new VoidPayment;
$voidPayment->checkoutId = $checkoutId;
$voidPayment->reason = 'The item is out of stock.';
$response = $voidPayment->execute();
if ($response === false) {
$error = $voidPayment::getError();
return redirect()->back()->withErrors(['message' => $error['message']]);
}
return $response;
}
Refund Payment
Refund a checkout.
use Aceraven777\PayMaya\PayMayaSDK;
use Aceraven777\PayMaya\API\RefundPayment;
use Aceraven777\PayMaya\Model\Refund\Amount;
public function refundPayment($checkoutId)
{
PayMayaSDK::getInstance()->initCheckout(
config('paymaya.public_key'),
config('paymaya.secret_key'),
(app()->environment('production') ? 'PRODUCTION' : 'SANDBOX')
);
$refundAmount = new Amount();
$refundAmount->currency = "PHP";
$refundAmount->value = 200.22;
$refundPayment = new RefundPayment;
$refundPayment->checkoutId = $checkoutId;
$refundPayment->reason = 'The item is out of stock.';
$refundPayment->amount = $refundAmount;
$response = $refundPayment->execute();
if ($response === false) {
$error = $refundPayment::getError();
return redirect()->back()->withErrors(['message' => $error['message']]);
}
return $response;
}
Get refund attempts of a checkout.
use Aceraven777\PayMaya\PayMayaSDK;
use Aceraven777\PayMaya\API\RefundPayment;
public function retrieveRefunds($checkoutId)
{
PayMayaSDK::getInstance()->initCheckout(
config('paymaya.public_key'),
config('paymaya.secret_key'),
(app()->environment('production') ? 'PRODUCTION' : 'SANDBOX')
);
$refundPayment = new RefundPayment;
$refundPayment->checkoutId = $checkoutId;
$refunds = $refundPayment->retrieve();
if ($refunds === false) {
$error = $refundPayment::getError();
return redirect()->back()->withErrors(['message' => $error['message']]);
}
return $refunds;
}
Retrieve information of a particular refund.
use Aceraven777\PayMaya\PayMayaSDK;
use Aceraven777\PayMaya\API\RefundPayment;
public function retrieveRefundInfo($checkoutId, $refundId)
{
PayMayaSDK::getInstance()->initCheckout(
config('paymaya.public_key'),
config('paymaya.secret_key'),
(app()->environment('production') ? 'PRODUCTION' : 'SANDBOX')
);
$refundPayment = new RefundPayment;
$refundPayment->checkoutId = $checkoutId;
$refundPayment->refundId = $refundId;
$refund = $refundPayment->retrieveInfo();
if ($refund === false) {
$error = $refundPayment::getError();
return redirect()->back()->withErrors(['message' => $error['message']]);
}
return $refund;
}
Donate
Via GCash

Via PayPal
Related Packages
Powerful PHP database abstraction layer (DBAL) with many features for database s...
Laravel Serializable Closure provides an easy and secure way to serialize closur...
Cli error handling for console/command-line PHP applications.
Version History
| Version | Released | PHP | Laravel | License |
|---|---|---|---|---|
| v1.1.3 | >=5.3.0 | * | MIT | |
| v1.1.2 | >=5.3.0 | ^5.0| | MIT | |
| v1.1.1 | >=5.3.0 | ^5.0| | MIT | |
| v1.1.0 | >=5.3.0 | ^5.0| | MIT | |
| v1.0.10 | >=5.3.0 | ^5.0| | MIT | |
| v1.0.9 | >=5.3.0 | ^5.0| | MIT | |
| v1.0.8 | >=5.3.0 | ^5.0| | MIT | |
| v1.0.7 | >=5.3.0 | ^5.0| | MIT | |
| v1.0.6 | >=5.3.0 | ^7.11 | MIT | |
| v1.0.5 | >=5.3.0 | MIT | ||
| v1.0.4 | >=5.3.0 | MIT | ||
| v1.0.3 | >=5.3.0 | MIT | ||
| v1.0.2 | >=5.3.0 | MIT | ||
| v1.0.1 | >=5.3.0 | MIT | ||
| v1.0.0 | >=5.3.0 | MIT |