Skip to content

Commit 1cc3a82

Browse files
committed
Instant notification data is posted as JSON
1 parent aaf7534 commit 1cc3a82

2 files changed

Lines changed: 22 additions & 7 deletions

File tree

src/Message/CompletePurchaseRequest.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,16 @@ class CompletePurchaseRequest extends FetchTransactionRequest
1313
{
1414
public function getData()
1515
{
16-
// check both GET and POST
17-
$order = $this->httpRequest->request->get('order') ?:
18-
$this->httpRequest->query->get('order');
16+
// check GET
17+
$order = $this->httpRequest->query->get('order');
18+
19+
// check JSON POST data
20+
if (!$order && $this->httpRequest->getContent()) {
21+
$content = json_decode($this->httpRequest->getContent(), true);
22+
if (isset($content['order'])) {
23+
$order = $content['order'];
24+
}
25+
}
1926

2027
if (empty($order['id'])) {
2128
throw new InvalidRequestException('Missing Order ID');

tests/Message/CompletePurchaseRequestTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Omnipay\Coinbase\Message;
44

55
use Omnipay\Tests\TestCase;
6+
use Symfony\Component\HttpFoundation\Request as HttpRequest;
67

78
class CompletePurchaseRequestTest extends TestCase
89
{
@@ -30,8 +31,15 @@ public function testGetDataGet()
3031

3132
public function testGetDataPost()
3233
{
33-
$this->httpRequest->request->replace(
34-
array('order' => array('id' => '9XMWP4YG'))
34+
// post data is sent as JSON
35+
$content = '{"order":{"id":"9XMWP4YG","created_at":"2014-05-11T22:15:41-07:00","status":"completed"}}';
36+
$this->httpRequest = new HttpRequest(array(), array(), array(), array(), array(), array(), $content);
37+
$this->request = new CompletePurchaseRequest($this->getHttpClient(), $this->httpRequest);
38+
$this->request->initialize(
39+
array(
40+
'apiKey' => 'abc123',
41+
'secret' => 'shhh',
42+
)
3543
);
3644

3745
$data = $this->request->getData();
@@ -49,7 +57,7 @@ public function testGetDataInvalid()
4957

5058
public function testSendSuccess()
5159
{
52-
$this->httpRequest->request->replace(
60+
$this->httpRequest->query->replace(
5361
array('order' => array('id' => '9XMWP4YG'))
5462
);
5563
$this->setMockHttpResponse('FetchTransactionSuccess.txt');
@@ -63,7 +71,7 @@ public function testSendSuccess()
6371

6472
public function testSendFailure()
6573
{
66-
$this->httpRequest->request->replace(
74+
$this->httpRequest->query->replace(
6775
array('order' => array('id' => '9XMWP4YG'))
6876
);
6977
$this->setMockHttpResponse('FetchTransactionFailure.txt');

0 commit comments

Comments
 (0)