eadorstu / omnipay-2checkout
适用于 Omnipay 支付处理库的 2Checkout 驱动程序
1.6
2017-05-11 16:35 UTC
Requires
- omnipay/common: ~2.0
Requires (Dev)
- omnipay/tests: ~2.0
- satooshi/php-coveralls: ^0.7.1
README
适用于 Omnipay PHP 支付处理库的 2checkout 网关
Omnipay 是一个不依赖于特定框架、支持多网关的 PHP 5.3+ 支付处理库。此包实现了 Omnipay 对 2checkout 的支持。
安装
通过 Composer
$ composer require collizo4sky/omnipay-2checkout
使用方法
此包提供以下网关
- TwoCheckoutPlus
- TwoCheckoutPlus_Token
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(); }
TwoCheckoutPlus_Token
use Omnipay\Omnipay; try { $gateway = Omnipay::create('TwoCheckoutPlus_Token'); $gateway->setAccountNumber($this->account_number); $gateway->setTestMode($this->is_sandbox_test()); $gateway->setPrivateKey($this->private_key); $formData = array( 'firstName' => $order->get_billing_first_name(), 'lastName' => $order->get_billing_last_name(), 'email' => $order->get_billing_email(), 'billingAddress1' => $order->get_billing_address_1(), 'billingAddress2' => $order->get_billing_address_2(), 'billingCity' => $order->get_billing_city(), 'billingPostcode' => $order->get_billing_postcode(), 'billingState' => $order->get_billing_state(), 'billingCountry' => $order->get_billing_country(), ); $purchase_request_data = array( 'card' => $formData, 'token' => sanitize_text_field($_POST['twocheckout_token']), 'transactionId' => $order->get_order_number(), 'currency' => 'USD', 'amount' => $order->order_total, ); $response = $gateway->purchase($purchase_request_data)->send(); if ($response->isSuccessful()) { $transaction_ref = $response->getTransactionReference(); } else { $error = $response->getMessage(); } } catch (Exception $e) { $e->getMessage(); }
有关一般使用说明,请参阅主要的 Omnipay 仓库。
支持
如果您遇到 Omnipay 的一般问题,我们建议在 Stack Overflow 上发布。确保添加 omnipay 标签,以便易于查找。
如果您想了解发布公告、讨论项目想法或提出更详细的问题,还有一个您可以订阅的 邮件列表。
如果您认为您发现了一个错误,请使用 GitHub 问题跟踪器 报告它,或者更好的是,fork 库并提交一个 pull request。
测试
$ composer test
安全
如果您发现任何与安全相关的问题,请通过电子邮件 me@w3guy.com 而不是使用问题跟踪器来联系。
鸣谢
许可协议
MIT 许可协议 (MIT)。有关更多信息,请参阅 许可文件。