twohill / silverstripe-pxpay
支付Express控制器
v1.0.4
2020-10-20 06:20 UTC
Requires
- ext-curl: *
- ext-simplexml: *
- twohill/silverstripe-nestedcontrollers: ^2
This package is auto-updated.
Last update: 2024-09-20 14:55:46 UTC
README
一个将您的控制器与Payment Express集成的模块。
需求
- SilverStripe ^4
- php-curl
- php-simplexml
安装
使用composer
composer require twohill/silverstripe-pxpay
许可证
BSD 3-Clause "New" 或 "Revised" 许可证。见 许可证
示例配置
在config yml文件中配置您的PxPayment详细信息。您可以针对dev
或live
模式指定不同的设置。在dev
模式下,使用沙盒凭据进行此操作是一个有用的选项。
--- Only: environment: 'live' --- Twohill\PXPay\PxPaymentController: PxPayURL: https://sec.paymentexpress.com/pxaccess/pxpay.aspx PxPayUserId: MyUserID PxPayKey: xxxxxx --- Only: environment: 'dev' --- Twohill\PXPay\PxPaymentController: PxPayURL: https://sec.paymentexpress.com/pxaccess/pxpay.aspx PxPayUserId: MyUserID_dev PxPayKey: xxxxxx
示例用法
将PxPaymentController
作为支付方式的返回结果
class MyPageController extends PageController { private static $allowed_actions = [ 'thankyou', 'pay_order', 'unsuccessful', ]; public function thankyou(HTTPRequest $request) { $content = ''; if ($request->getSession()->get('OrderID')) { $order = Order::get()->byID($request->getSession()->get('OrderID')); if ($order) { $payment = $order->Payment(); if ($payment && $payment->TxnId) { if ($payment->Processed) { $sendEmail = false; } else { $payment->Processed = true; $payment->write(); } } else { $this->redirect($this->Link('pay-order/submit')); } $content = $this->ThankYouForPayingContent; // From MyPage $db } $request->getSession()->clear("OrderID"); return $this->customise(new ArrayData([ 'Content' => DBField::create_field('HTMLFragment', $content), 'Form' => '' ])); } return $this->redirect($this->Link()); } /** * Process the payment * * @param HTTPRequest $request * @return PxPaymentController * @throws ValidationException */ public function pay_order(HTTPRequest $request) { // Load the payment details somehow $payment = null; if ($request->getSession()->get('OrderID')) { $order = Order::get()->byID($request->getSession()->get('OrderID')); if ($order) { $payment = new PxPayment(); $payment->TxnType = "Purchase"; $payment->MerchantReference = $order->InvoiceNumber; $payment->TxnData1 = $order->CompanyName; $payment->TxnData2 = $order->Address; $payment->TxnData3 = $order->City; $payment->EmailAddress = $order->Contact()->Email; $payment->AmountInput = $order->Total; $payment->CurrencyInput = "NZD"; $payment->InvoiceID = $order->ID; $payment->write(); } } } return new PxPaymentController($this, $request, $payment, $this->Link("thankyou"), $this->Link("unsuccessful")); } /** * Action when payment is unsuccessful. */ public function unsuccessful(HTTPRequest $request) { if ($request->getSession()->get('OrderID')) { $order = Order::get()->byID($request->getSession()->get('OrderID')); if ($order) { return $this->customise([ 'Content' => DBField::create_field('HTMLFragment', $this->UnsuccessfulContent), 'Form' => '' ]); } } return $this->redirect($this->Link()); } }
维护者
- Al Twohill al@twohill.nz
错误追踪器
错误在此存储库的问题部分进行跟踪。在提交问题之前,请阅读现有问题以确保您的独特性。
如果问题看起来像是一个新错误
- 创建一个新问题
- 描述重现问题的步骤和预期结果。单元测试、截图和屏幕录制在此处可能会有所帮助。
- 尽可能详细地描述您的环境:SilverStripe版本、浏览器、PHP版本、操作系统、安装的任何SilverStripe模块。
请直接向模块维护者报告安全问题。请勿在错误追踪器中提交安全问题。
开发和贡献
如果您想对该模块做出贡献,请确保提出一个拉取请求并与模块维护者讨论。