codeitlikemiley / laravel-paymongo

A laravel wrapper for Paymongo API

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Paymongo for Laravel

Build Status Quality Score Latest Version on Packagist Total Downloads License

A PHP Library for Paymongo.

This package is not affiliated with Paymongo. The package requires PHP 7.2+

Installation

You can install the package via composer:

composer require luigel/laravel-paymongo

Laravel 6 and up uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.

Put your Secret Key and Public Key in you .env file.

PAYMONGO_SECRET_KEY=
PAYMONGO_PUBLIC_KEY=

Compatibility and Supported Versions

Laravel-Paymongo supports Laravel 6._ and 7._

Usage

Payment Methods

Create Payment Method

Creates a payment methods. It holds the information such as credit card information and billing information.

Payload

Refer to Paymongo documentation for payload.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$paymentMethod = Paymongo::paymentMethod()->create([
    'type' => 'card',
    'details' => [
        'card_number' => '4343434343434345',
        'exp_month' => 12,
        'exp_year' => 25,
        'cvc' => "123",
    ],
    'billing' => [
        'address' => [
            'line1' => 'Somewhere there',
            'city' => 'Cebu City',
            'state' => 'Cebu',
            'country' => 'PH',
            'postal_code' => '6000',
        ],
        'name' => 'Rigel Kent Carbonel',
        'email' => 'rigel20.kent@gmail.com',
        'phone' => '0935454875545'
    ],
]);

Get Payment Method

Retrieve a payment method given an ID. Just pass the payment method id to find($id) method.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$paymentMethod = Paymongo::paymentMethod()->find('pm_wr98R2gwWroVxfkcNVZBuXg2');

// You can get data using getData() method
$data = $paymentMethod->getData();

// You can also retrieve specific data using a get method
$billing = $paymentMethod->getBillingDetails();

Payment Intents

Create Payment Intent

A payment intent is designed to handle a complex payment process. To compare payment intents with tokens, tokens have a straight forward credit card payment process where it does not check if 3DS is required to fulfill a payment while payment intent is designed to handle such process.

Payload

Refer to Paymongo documentation for payload guidelines.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$paymentIntent = Paymongo::paymentIntent()->create([
    'amount' => 100,
    'payment_method_allowed' => [
        'card'
    ],
    'payment_method_options' => [
        'card' => [
            'request_three_d_secure' => 'automatic'
        ]
    ],
    'description' => 'This is a test payment intent',
    'statement_descriptor' => 'LUIGEL STORE',
    'currency' => "PHP",
]);

Cancel Payment Intent

Cancels the payment intent.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$paymentIntent = Paymongo::paymentIntent()->find('pi_hsJNpsRFU1LxgVbxW4YJHRs6');
$cancelledPaymentIntent = $paymentIntent->cancel();

Attach Payment Intent

Attach the payment intent.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$paymentIntent = Paymongo::paymentIntent()->find('pi_hsJNpsRFU1LxgVbxW4YJHRs6');
// Attached the payment method to the payment intent
$successfulPayment = $paymentIntent->attach('pm_wr98R2gwWroVxfkcNVZBuXg2');

Get Payment Intent

You can retrieve a Payment Intent by providing a payment intent ID. The prefix for the id is pi_ followed by a unique hash representing the payment. Just pass the payment id to find($paymentIntentId) method.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$paymentIntent = Paymongo::paymentIntent()->find('pi_hsJNpsRFU1LxgVbxW4YJHRs6');

Sources

Create Source

Creates a source to let the user pay using their Gcash Accounts or Grab Pay Accounts.

Payload

Refer to Paymongo documentation for payload guidelines.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$gcashSource = Paymongo::source()->create([
    'type' => 'gcash',
    'amount' => 100.00,
    'currency' => 'PHP',
    'redirect' => [
        'success' => 'https://your-domain.com/success',
        'failed' => 'https://your-domain.com/failed'
    ]
]);

$grabCarSource = Paymongo::source()->create([
    'type' => 'grab_pay',
    'amount' => 100.00,
    'currency' => 'PHP',
    'redirect' => [
        'success' => 'https://your-domain.com/success',
        'failed' => 'https://your-domain.com/failed'
    ]
]);

Payments

Create Payment

Creates a payment using token.

Payload

Refer to Paymongo documentation for payload guidelines.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$payment = Paymongo::payment()
    ->create([
        'amount' => 100.00,
        'currency' => 'PHP',
        'description' => 'Testing payment',
        'statement_descriptor' => 'Test Paymongo',
        'source' => [
            'id' => $token->getId(),
            'type' => $token->getType()
        ]
    ]);

Get Payment

You can retrieve a Payment by providing a payment ID. The prefix for the id is pay_ followed by a unique hash representing the payment. Just pass the payment id to find($paymentId) method.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$payment = Paymongo::payment()->find('pay_i35wBzLNdX8i9nKEPaSKWGib');

Get All Payments

Returns all the payments you previously created, with the most recent payments returned first. Currently, all payments are returned as one batch. We will be introducing pagination and limits in the next iteration of the API.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$payments = Paymongo::payment()->all();

Tokens

Create Token

Creates a one-time use token representing your customer's credit card details. NOTE: This token can only be used once to create a Payment. You must create separate tokens for every payment attempt.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$token = Paymongo::token()
    ->create([
        'number' => '4343434343434345',
        'exp_month' => 12,
        'exp_year' => 25,
        'cvc' => "123",
        'billing' => [
            'address' => [
                'line1' => 'Test Address',
                'city' => 'Cebu City',
                'postal_code' => '6000',
                'country' => 'PH'
            ],
            'name' => 'Rigel Kent Carbonel',
            'email' => 'rigel20.kent@gmail.com',
            'phone' => '928392893'
        ]
    ]);

Get Token

Retrieve a token given an ID. The prefix for the id is tok_ followed by a unique hash representing the token. Just pass the token id to find($id) method.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$token = Paymongo::token()->find($tokenId);

Webhooks

Create Webhook

Creates a webhook.

Payload

Refer to Paymongo documentation for payload guidelines.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$webhook = Paymongo::webhook()->create([
    'url' => 'http://your-domain/webhook/source-chargeable',
    'events' => [
        'source.chargeable'
    ]
]);

List all Webhooks

Returns all the webhooks you previously created, with the most recent webhooks returned first.

Sample

use Luigel\Paymongo\Facades\Paymongo;

$webhook = Paymongo::webhook()->all();

Enable or Disable Webhooks

Set the webhook enable or disable.

Sample

use Luigel\Paymongo\Facades\Paymongo;
// Enable webhook
$webhook = Paymongo::webhook()->find('hook_9VrvpRkkYqK6twbhuvcVTtjM')->enable();

// Disable webhook
$webhook = Paymongo::webhook()->find('hook_9VrvpRkkYqK6twbhuvcVTtjM')->disable();

Update Webhook

Updates a specific webhook

Sample

use Luigel\Paymongo\Facades\Paymongo;

$webhook = Paymongo::webhook()->find('hook_9VrvpRkkYqK6twbhuvcVTtjM')->update([
    'url' => 'https://update-domain.com/webhook'
]);

Testing

composer test

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email rigel20.kent@gmail.com instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

Made with ❤️ by Rigel Kent Carbonel

About

A laravel wrapper for Paymongo API

License:MIT License


Languages

Language:PHP 100.0%