public function getPayouts($status = null)
{
$request = $this->createNewRequest();
$request->setMethod(Request::METHOD_GET);
$path = 'payouts?token=' . $this->token->getToken() . ($status == null ? '' : '&status=' . $status);
$request->setPath($path);
$this->addIdentityHeader($request);
$this->addSignatureHeader($request);
$this->request = $request;
$this->response = $this->sendRequest($this->request);
$body = json_decode($this->response->getBody(), true);
$error_message = false;
$error_message = !empty($body['error']) ? $body['error'] : $error_message;
$error_message = !empty($body['errors']) ? $body['errors'] : $error_message;
$error_message = is_array($error_message) ? implode("\n", $error_message) : $error_message;
if (false !== $error_message) {
throw new \Exception($error_message);
}
$payouts = array();
array_walk($body['data'], function ($value, $key) use(&$payouts) {
$payout = new \Bitpay\Payout();
$payout->setId($value['id'])->setAccountId($value['account'])->setCurrency(new \Bitpay\Currency($value['currency']))->setEffectiveDate($value['effectiveDate'])->setRequestdate($value['requestDate'])->setPricingMethod($value['pricingMethod'])->setStatus($value['status'])->setAmount($value['amount'])->setResponseToken($value['token'])->setRate(@$value['rate'])->setBtcAmount(@$value['btc'])->setReference(@$value['reference'])->setNotificationURL(@$value['notificationURL'])->setNotificationEmail(@$value['notificationEmail']);
array_walk($value['instructions'], function ($value, $key) use(&$payout) {
$instruction = new \Bitpay\PayoutInstruction();
$instruction->setId($value['id'])->setLabel($value['label'])->setAddress($value['address'])->setAmount($value['amount'])->setStatus($value['status']);
array_walk($value['transactions'], function ($value, $key) use(&$instruction) {
$transaction = new \Bitpay\PayoutTransaction();
$transaction->setTransactionId($value['txid'])->setAmount($value['amount'])->setDate($value['date']);
$instruction->addTransaction($transaction);
});
$payout->addInstruction($instruction);
});
$payouts[] = $payout;
});
return $payouts;
}