## Provision Response ### Response There are multiple way of making / working with a provision response. 1. Via array and built in method **fromArray()** ```php $payload = [ 'order' => [ 'id' => '33901', 'date' => '2021-01-01', 'total' => '399.99', 'currency' => 'USD', 'items' => [] ], ]; $response = ProvisionResponse::fromArray($payload); ``` 2. Via definition accessors: ```php $response = new ProvisionResponse(); $response->order->id = '#100315'; $response->order->price = '19.99'; $response->order->currency = 'EUR'; ``` ### Definition Collections: Usually empty definition collections will be created at object instantiation; ```php print_r((new ProvisionResponse())->order->items); MerchantOP\Models\Collection Object ( [items:protected] => Array ( ) [definition:protected] => MerchantOP\Models\OrderItem ) ``` Otherwise, you can manually create needed collection like so: ```php use MerchantOP\Models\Collection; use MerchantOP\Models\OrderItem; $response = new ProvisionResponse(); $items = Collection::of(OrderItem::class); $response->order->items = $items; ``` Pushing items to collection: ```php use MerchantOP\Models\OrderItem; $response = new ProvisionResponse(); $response->order->items->push(OrderItem::fromArray(['name' => 'Ticket to Mars'])); ``` Updating existing items: ```php use MerchantOP\Models\OrderItem; $response = new ProvisionResponse(); $response->order->items[0]->name = 'Unprecious Item'; ``` ### Extract response payload: ```php $response = ProvisionResponse::fromArray($payload); print_r($response->toArray()); Array ( [order] => Array ( [id] => #7012 [status] => shipped [comment] => comment [email] => email@dotcom [phone] => 0123456789 [total] => 30.99 [currency] => USD [items] => Array ( [0] => Array ( [name] => iPhone XR [price] => 699.99 ) ) ) [customer] => Array ( [id] => 1111 [email] => customer@company.com [phone] => 001234567 [username] => strawberry ) ) ```