Skip to content

Commit

Permalink
Purchases pending endpoint
Browse files Browse the repository at this point in the history
  • Loading branch information
bhelx committed May 14, 2018
1 parent ad8535a commit 89e1236
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 0 deletions.
12 changes: 12 additions & 0 deletions Tests/Recurly/Purchase_Test.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ function defaultResponses() {
array('POST', '/purchases', 'purchases/create-201.xml'),
array('POST', '/purchases/preview', 'purchases/preview-200.xml'),
array('POST', '/purchases/authorize', 'purchases/authorize-200.xml'),
array('POST', '/purchases/pending', 'purchases/pending-200.xml'),
);
}

Expand Down Expand Up @@ -91,6 +92,17 @@ public function testAuthorizePurchase() {
$this->assertNull($collection->charge_invoice->uuid);
}

public function testPendingPurchase() {
$purchase = $this->mockPurchase();
$purchase->account->email = 'benjamin.dumonde@example.com';
$purchase->account->billing_info->external_hpp_type = 'adyen';
$collection = Recurly_Purchase::pending($purchase, $this->client);

$this->assertInstanceOf('Recurly_InvoiceCollection', $collection);
$this->assertInstanceOf('Recurly_Invoice', $collection->charge_invoice);
$this->assertNull($collection->charge_invoice->uuid);
}

public function testTransactionError() {
$this->client->addResponse('POST', '/purchases', 'purchases/create-422.xml');
$purchase = $this->mockPurchase();
Expand Down
66 changes: 66 additions & 0 deletions Tests/fixtures/purchases/pending-200.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
HTTP/1.1 200 OK
Content-Type: application/xml; charset=utf-8
Location: https://api.recurly.com/v2/invoices

<?xml version="1.0" encoding="UTF-8"?>
<invoice_collection>
<charge_invoice href="">
<account href="https://api.recurly.com/v2/accounts/c442b36c-c64f-41d7-b8e1-9c04e7a6ff82"/>
<address>
<address1>400 Alabama St</address1>
<address2 nil="nil"></address2>
<city>San Francisco</city>
<state>CA</state>
<zip>94110</zip>
<country>US</country>
<phone nil="nil"></phone>
</address>
<uuid nil="nil"></uuid>
<state>pending</state>
<invoice_number_prefix></invoice_number_prefix>
<invoice_number nil="nil"></invoice_number>
<po_number nil="nil"></po_number>
<vat_number nil="nil"></vat_number>
<subtotal_in_cents type="integer">1000</subtotal_in_cents>
<tax_in_cents type="integer">0</tax_in_cents>
<total_in_cents type="integer">1000</total_in_cents>
<subtotal_after_discount_in_cents type="integer">1000</subtotal_after_discount_in_cents>
<currency>USD</currency>
<created_at nil="nil"></created_at>
<updated_at nil="nil"></updated_at>
<attempt_next_collection_at type="datetime">2017-05-17T16:36:56Z</attempt_next_collection_at>
<closed_at nil="nil"></closed_at>
<terms_and_conditions nil="nil"></terms_and_conditions>
<customer_notes nil="nil"></customer_notes>
<recovery_reason nil="nil"></recovery_reason>
<net_terms type="integer">0</net_terms>
<collection_method>automatic</collection_method>
<line_items type="array">
<adjustment href="" type="charge">
<account href="https://api.recurly.com/v2/accounts/c442b36c-c64f-41d7-b8e1-9c04e7a6ff82"/>
<uuid>3d86103d63f614d7aeee8341c98b2655</uuid>
<state>pending</state>
<description nil="nil"></description>
<accounting_code nil="nil"></accounting_code>
<product_code>4549449c-5870-4845-b672-1d07f15e87dd</product_code>
<origin>debit</origin>
<unit_amount_in_cents type="integer">1000</unit_amount_in_cents>
<quantity type="integer">1</quantity>
<discount_in_cents type="integer">0</discount_in_cents>
<tax_in_cents type="integer">0</tax_in_cents>
<total_in_cents type="integer">1000</total_in_cents>
<currency>USD</currency>
<taxable type="boolean">false</taxable>
<tax_exempt type="boolean">false</tax_exempt>
<tax_code nil="nil"></tax_code>
<start_date type="datetime">2017-05-17T16:36:56Z</start_date>
<end_date nil="nil"></end_date>
<created_at nil="nil"></created_at>
<updated_at nil="nil"></updated_at>
<revenue_schedule_type>at_invoice</revenue_schedule_type>
</adjustment>
</line_items>
<transactions type="array">
</transactions>
</charge_invoice>
</invoice_collection>
12 changes: 12 additions & 0 deletions lib/recurly/purchase.php
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,18 @@ public static function authorize($purchase, $client = null) {
return Recurly_Base::_post('/purchases/authorize', $purchase->xml(), $client);
}

/**
* Use for Adyen HPP transaction requests. This runs
* the validations but not the transactions.
*
* @param Recurly_Purchase Our purchase data.
* @param RecurlyClient Optional client for the request, useful for mocking the client
* @return Recurly_InvoiceCollection
*/
public static function pending($purchase, $client = null) {
return Recurly_Base::_post('/purchases/pending', $purchase->xml(), $client);
}

public function __construct($href = null, $client = null) {
parent::__construct($href, $client);
$this->adjustments = array();
Expand Down

0 comments on commit 89e1236

Please sign in to comment.