Skip to content

Morning-Train/wp-nets-easy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Morningtrain\WpNetsEasy

A Morningtrain package to simple handle NETS Easy payments.

Table of Contents

Introduction

Getting Started

To get started install the package as described below in Installation.

To use the tool have a look at Usage

Installation

Install with composer

composer require morningtrain/wp-nets-easy

Dependencies

Usage

Initializing package

Initialize \Morningtrain\WpNetsEasy\NetsEasy with NETS Easy test or live secret key.

\Morningtrain\WpNetsEasy\NetsEasy::init('live-secret-key-abcdefghijklmnopqrstuvwxyz123456789');

Running migrations

This needs to be done before using the package, or after updating the package.
You can run all new migrations like so:

Using wp cli:

wp dbmigrate

Using php:

<?php
    \Morningtrain\WP\Database\Database::migrate();
?>

Create payment

use Morningtrain\WpNetsEasy\Classes\Payment\Payment;
use Morningtrain\WpNetsEasy\Classes\Payment\Customer;
use Morningtrain\WpNetsEasy\Classes\Payment\Address;
use Morningtrain\WpNetsEasy\Classes\Payment\Item;

// Create payment and set payment information and urls
$payment = Payment::create()
    ->setReference($orderId)
    ->setCustomer(
        Customer::create()
            ->setReference($customer->id)
            ->setEmail($customer->email)
            ->setPhone($customer->phone)
            ->setName($customer->firstName, $customer->lastName)
            ->setCompanyName($customer->companyName)
            ->setShippingAddress(
                Address::create()
                    ->setAddressLine1($customer->address1)
                    ->setAddressLine2($customer->address2)
                    ->setPostalCode($customer->zipCode)
                    ->setCity($customer->city())
            )
        )
    ->setTermsUrl(get_post_permalink($termsPageId))
    ->setReturnUrl(Route::route('payment-success', ['token' => $order->token]))
    ->setCancelUrl(Route::route('payment-cancel', ['token' => $order->token]));

// Add items to payments
foreach($order->items as $item) {
    $payment->addItem(
        Item::create($item->sku)
            ->setName($item->name)
            ->setQuantity($item->quantity)
            ->setUnitPriceInclusiveTax($item->price)
    );
}

// Persist payment in NETS Easy
$response = $payment->createRequest();

if(wp_remote_retrieve_response_code($response) !== 201) {
    // Error handling when something was wrong with the payment
    wp_redirect($checkoutUrl);
    exit();
}

// Save payment reference to order
$order->setPaymentId($payment->getPaymentId());

// Redirect to payment page
wp_redirect($payment->getPaymentPageUrl());
exit();

Auto charge payment

If your product allows you to auto charge payment. You can tell Nets Easy to charge the payment automatically before you persist the payment.

$payment->autoCharge()

Handle existing payment

When a payment requrest has been created, the payment reference will be saved to the database.

Get payment

Payment is a model implementet with Eloquent. To get payments you can use all methods from Eloquent (see documentation).

You can use the custom method Payment::getByPaymentId($paymentId);

$payment = Payment::getByPaymentId($order->payment_id);

Terminate payment

To terminate payment, the customer must not have finished checkout. You can use it on the cancel callback to avoid double payments later.

$payment->terminate()

Check if payment is reserved

$payment->isReserved()

Check if payment is charged

$payment->isCharged()

Charge payment

$payment->charge()

NOTE: Partly charges is not implementet yet

Refund payment

NOTE: Refund and partly refund is not implementet yet

Create subscription

NOTE: Subscriptions is not implementet yet

Handle existing subscription

NOTE: Subscriptions is not implementet yet

Handle webhoks

The implementation handle webhooks and sets the payment status automatically.

If you need to do something on a specific webhook, you can do that throug actions and filters.

List of implemented webhooks

Name Descritpion
payment.created A payment has been created.
payment.reservation.created The amount of the payment has been reserved.
payment.reservation.failed A reservation attempt has failed.
payment.checkout.completed The customer has completed the checkout.
payment.charge.created.v2 The customer has successfully been charged, partially or fully.
payment.charge.failed A charge attempt has failed.
payment.refund.initiated.v2 A refund has been initiated.
payment.refund.failed A refund attempt has failed.
payment.refund.completed A refund has successfully been completed.
payment.cancel.created A reservation has been canceled.
payment.cancel.failed A cancellation has failed.

Actions

Hook Name Description
morningtrain/nets-easy/webhook/{$webhookName} Do something on the webhook (before the implementet handling but after we have checked for previous handling)

Filters

Hook Name Filtered value Extra parameters Description
morningtrain/nets-easy/webhook/{$webhookName}/bypass false none Return something to bypass all webhook handling logic
morningtrain/nets-easy/webhook/{$webhookName}/after-handle false or value from handle function $webhook - The Webhook object with data Do something after default handling. Return something to bypass setting the webhook as handled and return status 200
morningtrain/nets-easy/webhook/{$webhookName}/response WP_REST_Response with default values (status 200) $webhook - The Webhook object with data Filter the response after webhook fully handled

Credits

License

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

About

Nets Easy implementation for WordPress (SDK)

Topics

Resources

License

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •  

Languages