morningtrain/wp-nets-easy

Nets Easy SDK for WordPress

v0.2.0 2024-03-26 11:15 UTC

This package is auto-updated.

Last update: 2024-10-26 12:25:54 UTC


README

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

Actions

Filters

Credits

License

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