webtoucher / omnipay-payonline
Omnipay支付处理库的PayOnline驱动程序
0.1.3
2017-01-16 18:47 UTC
Requires
- php: >=5.4.0
- omnipay/common: ~2.0
Requires (Dev)
- omnipay/tests: ~2.0
This package is auto-updated.
Last update: 2024-09-23 20:16:39 UTC
README
Omnipay PHP支付处理库的PayOnline支付处理驱动程序。
安装
安装此库的首选方式是通过composer。
运行以下命令之一
$ php composer.phar require webtoucher/omnipay-payonline "*"
或者
"webtoucher/omnipay-payonline": "*"
将以下内容添加到您的composer.json
文件的require
部分。
配置您的PayOnline MID
如果您需要关闭ok/fail页面,请联系PayOnline支持。这样,您将立即被重定向到您的返回/失败URL。然后检查您的MID设置
- 回调URL方法:POST
- 批准交易的回调URL: https://your.domain.com/your-callback/?result=1
- 拒绝交易的回调URL: https://your.domain.com/your-callback/?result=0
- 在批准的交易上启用回调:开启
- 在拒绝的交易上启用回调:开启
使用方法
此包提供以下网关
- PayOnline
$gateway = \Omnipay\Omnipay::create('PayOnline'); $gateway->setMerchantId('[MERCHANT_ID]'); $gateway->setApiKey('[API_PRIVATE_KEY]'); $gateway->setLanguage('ru'); // default - en
然后您应该创建支付URL(用于重定向或使用iframe)。
try { $request = $this->gateway->purchase([ 'order_id' => 123, 'amount' => 10, 'currency' => 'EUR', 'description' => 'Test payment', 'user' => 1234, 'email' => 'test@test.com', 'return_url' => 'https://your.domain.com/your-callback/?result=1', 'cancel_url' => 'https://your.domain.com/your-callback/?result=0',, ]); $response = $request->send(); if ($response->isSuccessful()) { $url = $response->getUrl(); // Use this url as iframe source or for redirect } } catch (\Omnipay\Common\Exception\OmnipayException $e) { // Your handler }
创建控制器动作以捕获PayOnline回调。请记住,您必须对成功/失败回调(POST请求)和返回/失败URL(GET请求)使用相同的动作。检查请求类型以了解您应该做什么。
if (/* is post request */) { try { $request = $this->gateway->completePurchase([ 'result' => $result, 'datetime' => $DateTime, 'transaction_id' => $TransactionID, 'order_id' => $OrderId, 'amount' => $Amount, 'currency' => $Currency, 'token' => $RebillAnchor, 'card_number' => $CardNumber, 'user' => $User, 'error_code' => isset($Code) ? $Code : $ErrorCode, ]); $response = $request->send(); $success = $response->isSuccessful(); } catch (\Omnipay\Common\Exception\OmnipayException $e) { $success = false; // Your handler } // Your logic } else { // Your logic for return/fail URL }
请注意,PayOnline仅发送ssl连接的rebill令牌。您可以提取掩码后的卡号和令牌,并将这些保存到您的系统中。
$cardNumber = $request->getCardNumber(); $token = $request->getToken(); // Your logic
使用rebill请求进行周期性支付。
try { $request = $this->gateway->rebill([ 'token' => $token, 'order_id' => 124, 'amount' => 10, 'currency' => 'EUR', ]); $response = $request->send(); $success = $response->isSuccessful(); } catch (\Omnipay\Common\Exception\OmnipayException $e) { $success = false; // Your handler }
有关一般使用说明,请参阅Omnipay主仓库。
支持
如果您在使用Omnipay时遇到一般问题,我们建议在Stack Overflow上发布。请确保添加omnipay标签,以便易于查找。
如果您想了解发布公告,讨论项目的想法或提出更详细的问题,还有一个邮件列表,您可以订阅它。
如果您认为您已经发现了一个错误,请使用GitHub问题跟踪器报告。