Skip to content

Commit fd7fece

Browse files
Completed AIO test cases.
1 parent 61333db commit fd7fece

35 files changed

+673
-346
lines changed

src/AppInAppGateway.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@
77

88
namespace Omnipay\MoMo;
99

10-
class AppInAppGateway
10+
use Omnipay\Common\AbstractGateway;
11+
12+
/**
13+
* @author Vuong Minh <[email protected]>
14+
* @since 1.0.0
15+
*/
16+
class AppInAppGateway extends AbstractGateway
1117
{
18+
use Concerns\Parameters;
1219
}

src/Concerns/PosParameters.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
/**
3+
* @link https://github.com/phpviet/omnipay-momo
4+
* @copyright (c) PHP Viet
5+
* @license [MIT](http://www.opensource.org/licenses/MIT)
6+
*/
7+
8+
namespace Omnipay\MoMo\Concerns;
9+
10+
/**
11+
* @author Vuong Minh <[email protected]>
12+
* @since 1.0.0
13+
*/
14+
trait PosParameters
15+
{
16+
use Parameters;
17+
18+
/**
19+
* Thiết lập public key do MoMo cấp.
20+
*
21+
* @param string $key
22+
*/
23+
public function setPublicKey($key): void
24+
{
25+
$this->setParameter('publicKey', $key);
26+
}
27+
}

src/Message/AbstractRequest.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,29 @@
1616
abstract class AbstractRequest extends BaseAbstractRequest
1717
{
1818
use Concerns\RequestEndpoint;
19+
use Concerns\RequestSignature;
20+
21+
/**
22+
* {@inheritdoc}
23+
* @throws \Omnipay\Common\Exception\InvalidRequestException
24+
*/
25+
public function getData(): array
26+
{
27+
$parameters = $this->getParameters();
28+
call_user_func_array([$this, 'validate'], $this->getSignatureParameters());
29+
$parameters['signature'] = $this->generateSignature();
30+
unset($parameters['secretKey'], $parameters['testMode']);
31+
32+
return $parameters;
33+
}
34+
35+
/**
36+
* Thiết lập request id của đơn hàng.
37+
*
38+
* @param string $id
39+
*/
40+
public function setRequestId(string $id): void
41+
{
42+
$this->setParameter('requestId', $id);
43+
}
1944
}

src/Message/AbstractResponse.php

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace Omnipay\MoMo\Message;
99

10+
use Omnipay\Common\Message\RequestInterface;
1011
use Omnipay\Common\Message\AbstractResponse as BaseAbstractResponse;
1112

1213
/**
@@ -15,20 +16,32 @@
1516
*/
1617
abstract class AbstractResponse extends BaseAbstractResponse
1718
{
19+
use Concerns\ResponseProperties;
20+
use Concerns\ResponseSignatureValidation;
21+
1822
/**
19-
* Phương thức hổ trợ tạo các thuộc tính của đối tượng từ dữ liệu gửi về từ MoMo.
23+
* Khởi tạo đối tượng Response.
2024
*
21-
* @param string $name
22-
* @return null|string
25+
* @param \Omnipay\Common\Message\RequestInterface $request
26+
* @param $data
27+
* @throws \Omnipay\Common\Exception\InvalidResponseException
2328
*/
24-
public function __get($name)
29+
public function __construct(RequestInterface $request, $data)
2530
{
26-
if (isset($this->data[$name])) {
27-
return $this->data[$name];
28-
} else {
29-
trigger_error(sprintf('Undefined property: %s::%s', __CLASS__, '$'.$name), E_USER_NOTICE);
31+
parent::__construct($request, $data);
3032

31-
return null;
33+
if ('0' === $this->getCode()) {
34+
$this->validateSignature();
3235
}
3336
}
37+
38+
/**
39+
* Trả về trạng thái do MoMo phản hồi.
40+
*
41+
* @return bool
42+
*/
43+
public function isSuccessful(): bool
44+
{
45+
return '0' === $this->getCode();
46+
}
3447
}

src/Message/AllInOne/AbstractIncomingRequest.php

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77

88
namespace Omnipay\MoMo\Message\AllInOne;
99

10+
use Omnipay\MoMo\Concerns\AllInOneParameters;
11+
use Symfony\Component\HttpFoundation\ParameterBag;
1012
use Omnipay\MoMo\Message\AbstractIncomingRequest as BaseAbstractIncomingRequest;
1113

1214
/**
@@ -15,7 +17,7 @@
1517
*/
1618
abstract class AbstractIncomingRequest extends BaseAbstractIncomingRequest
1719
{
18-
use Concerns\IncomingRequestParameters;
20+
use AllInOneParameters;
1921

2022
/**
2123
* {@inheritdoc}
@@ -25,4 +27,30 @@ public function sendData($data): IncomingResponse
2527
{
2628
return $this->response = new IncomingResponse($this, $data);
2729
}
30+
31+
/**
32+
* {@inheritdoc}
33+
*/
34+
protected function getIncomingParameters(): array
35+
{
36+
$data = [];
37+
$params = [
38+
'partnerCode', 'accessKey', 'requestId', 'amount', 'orderId', 'orderInfo', 'orderType', 'transId',
39+
'message', 'localMessage', 'responseTime', 'errorCode', 'extraData', 'signature', 'payType',
40+
];
41+
$bag = $this->getIncomingParametersBag();
42+
43+
foreach ($params as $param) {
44+
$data[$param] = $bag->get($param);
45+
}
46+
47+
return $data;
48+
}
49+
50+
/**
51+
* Trả về request parameter bag.
52+
*
53+
* @return \Symfony\Component\HttpFoundation\ParameterBag
54+
*/
55+
abstract protected function getIncomingParametersBag(): ParameterBag;
2856
}

src/Message/AllInOne/AbstractRequest.php

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace Omnipay\MoMo\Message\AllInOne;
99

10+
use Omnipay\MoMo\Concerns\AllInOneParameters;
1011
use Omnipay\MoMo\Message\AbstractRequest as BaseAbstractRequest;
1112

1213
/**
@@ -15,28 +16,23 @@
1516
*/
1617
abstract class AbstractRequest extends BaseAbstractRequest
1718
{
18-
use Concerns\RequestSignature;
19-
use Concerns\RequestParameters;
19+
use AllInOneParameters;
2020

2121
/**
2222
* Trả về lớp đối tượng phản hồi tương ứng của Request.
2323
*
2424
* @var string
2525
*/
26-
protected $responseClass = Response::class;
26+
protected $responseClass;
2727

2828
/**
29-
* {@inheritdoc}
30-
* @throws \Omnipay\Common\Exception\InvalidRequestException
29+
* Thiết lập id đơn hàng.
30+
*
31+
* @param string $id
3132
*/
32-
public function getData(): array
33+
public function setOrderId(string $id): void
3334
{
34-
$parameters = $this->getParameters();
35-
unset($parameters['secretKey'], $parameters['testMode']);
36-
$this->validate('partnerCode', 'accessKey', 'requestId', 'orderId', 'secretKey', 'requestType');
37-
$parameters['signature'] = $this->generateSignature();
38-
39-
return $parameters;
35+
$this->setParameter('orderId', $id);
4036
}
4137

4238
/**

src/Message/AllInOne/Response.php renamed to src/Message/AllInOne/AbstractResponse.php

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -7,43 +7,14 @@
77

88
namespace Omnipay\MoMo\Message\AllInOne;
99

10-
use Omnipay\MoMo\Message\AbstractResponse;
11-
use Omnipay\Common\Message\RequestInterface;
10+
use Omnipay\MoMo\Message\AbstractResponse as BaseAbstractResponse;
1211

1312
/**
1413
* @author Vuong Minh <[email protected]>
1514
* @since 1.0.0
1615
*/
17-
class Response extends AbstractResponse
16+
abstract class AbstractResponse extends BaseAbstractResponse
1817
{
19-
use Concerns\ResponseSignatureValidation;
20-
21-
/**
22-
* Khởi tạo đối tượng Response.
23-
*
24-
* @param \Omnipay\Common\Message\RequestInterface $request
25-
* @param $data
26-
* @throws \Omnipay\Common\Exception\InvalidResponseException
27-
*/
28-
public function __construct(RequestInterface $request, $data)
29-
{
30-
parent::__construct($request, $data);
31-
32-
if ('0' === $this->getCode()) {
33-
$this->validateSignature();
34-
}
35-
}
36-
37-
/**
38-
* Trả về trạng thái do MoMo phản hồi.
39-
*
40-
* @return bool
41-
*/
42-
public function isSuccessful(): bool
43-
{
44-
return '0' === $this->getCode();
45-
}
46-
4718
/**
4819
* Trả về thông báo từ MoMo.
4920
*

src/Message/AllInOne/Concerns/IncomingRequestParameters.php

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/Message/AllInOne/Concerns/RequestParameters.php

Lines changed: 0 additions & 39 deletions
This file was deleted.

0 commit comments

Comments
 (0)