webtoucher/omnipay-payonline

Omnipay支付处理库的PayOnline驱动程序

0.1.3 2017-01-16 18:47 UTC

This package is auto-updated.

Last update: 2024-09-23 20:16:39 UTC


README

Omnipay PHP支付处理库的PayOnline支付处理驱动程序。

Latest Stable Version Total Downloads Daily Downloads Latest Unstable Version License

安装

安装此库的首选方式是通过composer

运行以下命令之一

$ php composer.phar require webtoucher/omnipay-payonline "*"

或者

"webtoucher/omnipay-payonline": "*"

将以下内容添加到您的composer.json文件的require部分。

配置您的PayOnline MID

如果您需要关闭ok/fail页面,请联系PayOnline支持。这样,您将立即被重定向到您的返回/失败URL。然后检查您的MID设置

使用方法

此包提供以下网关

  • 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问题跟踪器报告。