shela/omnipay-2checkout

Omnipay支付处理库的2Checkout驱动程序

dev-master / 3.0.x-dev 2022-08-17 13:32 UTC

This package is not auto-updated.

Last update: 2024-09-26 21:49:26 UTC


README

Omnipay PHP支付处理库的2checkout网关

Latest Version on Packagist Software License Build Status Coverage Status Code Climate Dependency Status Total Downloads

Omnipay 是一个不依赖于框架、多网关的PHP 5.3+支付处理库。本包实现了Omnipay对2checkout的支持。

安装

通过Composer

$ composer require SHELA/omnipay-2checkout

使用方法

本包提供以下网关

  • TwoCheckoutPlus

TwoCheckoutPlus

use Omnipay\Omnipay;

$gateway = Omnipay::create('TwoCheckoutPlus');
$gateway->setAccountNumber($this->account_number);
$gateway->setSecretWord($this->secret_word);
$gateway->setTestMode($this->is_sandbox_test());
// activate test mode by passing demo parameter to checkout parameters.
$gateway->setDemoMode($this->is_test_mode());


try {
    $formData = array(
        'firstName' => $order->get_billing_first_name(),
        'lastName' => $order->get_billing_last_name(),
        'email' => $order->get_billing_email(),
        'address1' => $order->get_billing_address_1(),
        'address2' => $order->get_billing_address_2(),
        'city' => $order->get_billing_city(),
        'state' => $order->get_billing_state(),
        'postcode' => $order->get_billing_postcode(),
        'country' => $order->get_billing_country(),
    );

    $order_cart = $order->get_items();

    $cart = array();

    $i = 0;
    foreach ($order_cart as $order_item_id => $product) {
        $product_id = $product['product_id'];
        $cart[$i]['name'] = $product['name'];
        $cart[$i]['quantity'] = $product['qty'];
        $cart[$i]['type'] = 'product';
        $cart[$i]['price'] = round($product['line_subtotal'] / $product['qty'], 2);
        $cart[$i]['product_id'] = $product_id;

        $i++;
    }

    if (($shipping_total = $order->get_shipping_total()) > 0) {
        $cart[] = array(
            'name' => 'Shipping Fee',
            'quantity' => 1,
            'type' => 'shipping',
            'price' => round($shipping_total, 2),
        );
    }

    if (($discount_total = $order->get_total_discount()) > 0) {
        $cart[] = array(
            'name' => 'Discount',
            'quantity' => 1,
            'type' => 'coupon',
            'price' => round($discount_total, 2),
        );
    }

    if (($tax_total = $order->get_total_tax()) > 0) {
        $cart[] = array(
            'name' => 'Tax Fee',
            'type' => 'tax',
            'quantity' => 1,
            'price' => round($tax_total, 2),
        );
    }

    $gateway->setCart($cart);

    $response = $gateway->purchase(
        array(
            'card' => $formData,
            'transactionId' => $order->get_order_number(),
            'currency' => 'USD',
            // add a query parameter to the returnUrl to listen and complete payment
            'returnUrl' => $this->returnUrl,
        )
    )->send();


    if ($response->isRedirect()) {
        $response->getRedirectUrl();

    } else {
        $error = $response->getMessage();
    }
} catch (Exception $e) {
    $e->getMessage();
}

有关通用使用说明,请参阅主要的 Omnipay 仓库。

支持

如果您在使用Omnipay时遇到一般性问题,建议在 Stack Overflow 上发布。请确保添加 omnipay 标签,以便更容易被找到。

如果您想了解发布公告,讨论项目想法或提出更详细的问题,还可以订阅 邮件列表

如果您认为发现了bug,请使用 GitHub问题跟踪器 报告,或者更好的方法是fork库并提交pull请求。

测试

$ composer test

安全

如果您发现任何与安全相关的问题,请通过电子邮件 me@w3guy.com 而不是使用问题跟踪器。

鸣谢

许可

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