Completed
Push — master ( 259fd8...a43b07 )
by Andrii
03:33
created

src/merchants/webmoney/WebmoneyMerchant.php (1 issue)

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
/**
3
 * Generalization over Omnipay and Payum
4
 *
5
 * @link      https://github.com/hiqdev/php-merchant
6
 * @package   php-merchant
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2015-2017, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hiqdev\php\merchant\merchants\webmoney;
12
13
use hiqdev\php\merchant\InvoiceInterface;
14
use hiqdev\php\merchant\merchants\AbstractMerchant;
15
use hiqdev\php\merchant\response\CompletePurchaseResponse;
16
use hiqdev\php\merchant\response\RedirectPurchaseResponse;
17
use Money\Currency;
18
use Money\Money;
19
use Omnipay\WebMoney\Gateway;
20
21
/**
22
 * Class WebmoneyMerchant.
23
 *
24
 * @author Dmytro Naumenko <[email protected]>
25
 */
26
class WebmoneyMerchant extends AbstractMerchant
27
{
28
    /**
29
     * @var Gateway
30
     */
31
    protected $gateway;
32
33 3
    protected function createGateway()
34
    {
35 3
        return $this->gatewayFactory->build('WebMoney', [
36 3
            'merchantPurse' => $this->credentials->getPurse(),
37 3
            'secretKey'  => $this->credentials->getKey1(),
38 3
            'testMode' => $this->credentials->isTestMode(),
39
        ]);
40
    }
41
42
    /**
43
     * @param InvoiceInterface $invoice
44
     * @return RedirectPurchaseResponse
45
     */
46 1
    public function requestPurchase(InvoiceInterface $invoice)
47
    {
48
        /**
49
         * @var \Omnipay\WebMoney\Message\PurchaseResponse
50
         */
51 1
        $response = $this->gateway->purchase([
52 1
            'transactionId' => $invoice->getId(),
53 1
            'description' => $invoice->getDescription(),
54 1
            'amount' => $this->moneyFormatter->format($invoice->getAmount()),
55 1
            'currency' => $invoice->getCurrency()->getCode(),
56 1
            'returnUrl' => $invoice->getReturnUrl(),
57 1
            'returnMethod' => $invoice->getReturnMethod(),
58 1
            'notifyUrl' => $invoice->getNotifyUrl(),
59 1
            'notifyMethod' => $invoice->getNotifyMethod(),
60 1
            'cancelUrl' => $invoice->getCancelUrl(),
61 1
            'cancelMethod' => $invoice->getCancelMethod(),
62 1
        ])->send();
63
64 1
        return new RedirectPurchaseResponse($response->getRedirectUrl(), $response->getRedirectData());
65
    }
66
67
    /**
68
     * @param array $data
69
     * @return CompletePurchaseResponse
70
     */
71 1 View Code Duplication
    public function completePurchase($data)
72
    {
73
        /** @var \Omnipay\WebMoney\Message\CompletePurchaseResponse $response */
74 1
        $response = $this->gateway->completePurchase($data)->send();
75
76 1
        return (new CompletePurchaseResponse())
77 1
            ->setIsSuccessful($response->isSuccessful())
0 ignored issues
show
$response->isSuccessful() is of type boolean, but the function expects a string.

It seems like the type of the argument is not accepted by the function/method which you are calling.

In some cases, in particular if PHP’s automatic type-juggling kicks in this might be fine. In other cases, however this might be a bug.

We suggest to add an explicit type cast like in the following example:

function acceptsInteger($int) { }

$x = '123'; // string "123"

// Instead of
acceptsInteger($x);

// we recommend to use
acceptsInteger((integer) $x);
Loading history...
78 1
            ->setAmount($this->moneyParser->parse($response->getAmount(), $response->getCurrency()))
79 1
            ->setFee(new Money(0, new Currency($response->getCurrency())))
80 1
            ->setTransactionReference($response->getTransactionReference())
81 1
            ->setTransactionId($response->getTransactionId())
82 1
            ->setPayer($response->getData()['LMI_PAYER_PURSE'])
83 1
            ->setTime(new \DateTime($response->getData()['LMI_SYS_TRANS_DATE']));
84
    }
85
}
86