morningtrain/wp-nets-easy

WordPress 的 Nets Easy SDK

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

This package is auto-updated.

Last update: 2024-08-26 12:13:50 UTC


README

一个用于简单处理 NETS Easy 付款的 Morningtrain 包。

目录

简介

入门

要开始使用,请按照以下 安装 部分所述安装包。

要使用该工具,请参阅 用法

安装

使用 composer 安装

composer require morningtrain/wp-nets-easy

依赖项

用法

初始化包

使用 NETS Easy 测试或实时密钥初始化 \Morningtrain\WpNetsEasy\NetsEasy

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

运行迁移

在开始使用此包或更新包后,必须执行此操作。
您可以按如下方式运行所有新的迁移:

使用 wp cli

wp dbmigrate

使用 php

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

创建付款

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();

自动扣费

如果您的产品允许您自动扣费,您可以在保存付款之前告诉 Nets Easy 自动扣费。

$payment->autoCharge()

处理现有付款

创建付款请求后,付款参考号将被保存到数据库中。

获取付款

付款是一个使用 Eloquent 实现的模型。要获取付款,您可以使用 Eloquent 的所有方法(请参阅 文档)。

您可以使用自定义方法 Payment::getByPaymentId($paymentId);

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

终止付款

要终止付款,客户必须未完成结账。您可以在取消回调中使用它,以避免以后的双重付款。

$payment->terminate()

检查付款是否已预留

$payment->isReserved()

检查付款是否已扣费

$payment->isCharged()

扣费付款

$payment->charge()

注意:部分扣费尚未实现

退款付款

注意:退款和部分退款尚未实现

创建订阅

注意:订阅尚未实现

处理现有订阅

注意:订阅尚未实现

处理 webhook

实现处理 webhook 并自动设置付款状态。

如果您需要在特定的 webhook 上执行某些操作,您可以通过动作和过滤器来完成。

已实现的 webhook 列表

动作

过滤器

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件