refreshFrom($object->payouts[0], $opts); return $this; } /** * @param array|string|null $params * @param array|string|null $headers * * @return FedaPayObject. */ protected static function _startAll($params, $headers) { $path = static::resourcePath('start'); list($response, $opts) = static::_staticRequest('put', $path, $params, $headers); return Util::arrayToFedaPayObject($response, $opts); } /** * Start the payout * @param string $scheduled_at * @param array|string|null $params * * @return FedaPay\FedaPayObject */ public function schedule($scheduled_at, $params = [], $headers = []) { $scheduled_at = Util::toDateString($scheduled_at); $payout_params = [ 'id' => $this->id, 'scheduled_at' => $scheduled_at ]; if (isset($params['phone_number'])) { $payout_params['phone_number'] = $params['phone_number']; unset($params['phone_number']); // Remove phone_number from params } $_params = [ 'payouts' => [ $payout_params ] ]; $params = array_merge($_params, $params); return $this->_start($params, $headers); } /** * Send the payout now * @param array|string|null $params * @param array|string|null $headers * * @return FedaPay\FedaPayObject */ public function sendNow($params = [], $headers = []) { $payout_params = [ 'id' => $this->id ]; if (isset($params['phone_number'])) { $payout_params['phone_number'] = $params['phone_number']; unset($params['phone_number']); // Remove phone_number from params } $_params = [ 'payouts' => [$payout_params] ]; $params = array_merge($_params, $params); return $this->_start($params, $headers); } /** * Start a scheduled payout * * @param array $payouts list of payouts id to start. One at least * @param null|DateTime $scheduled_at If null, payouts should be send now. * @param array $headers * @return FedaPay\FedaPayObject */ public static function scheduleAll($payouts = [], $params = [], $headers = []) { $items = []; foreach ($payouts as $key => $payout) { $item = []; if (!array_key_exists('id', $payout)) { throw new \InvalidArgumentException( 'Invalid id argument. You must specify payout id.' ); } $item['id'] = $payout['id']; if (array_key_exists('scheduled_at', $payout)) { $item['scheduled_at'] = Util::toDateString($payout['scheduled_at']); } if (isset($params[$key]['phone_number'])) { $item['phone_number'] = $params[$key]['phone_number']; unset($params[$key]['phone_number']); // Remove phone_number from params } $items[] = $item; } $_params = [ 'payouts' => $items ]; $params = array_merge($_params, $params); return self::_startAll($params, $headers); } /** * Send all payouts now * * @param array $payouts list of payouts id to start. One at least * @param array $params If null, payouts should be send now. * @param array $headers * @return FedaPay\FedaPayObject */ public static function sendAllNow($payouts = [], $params = [], $headers = []) { $items = []; foreach ($payouts as $key => $payout) { $item = []; if (!array_key_exists('id', $payout)) { throw new \InvalidArgumentException( 'Invalid id argument. You must specify payout id.' ); } $item['id'] = $payout['id']; if (isset($params[$key]['phone_number'])) { $item['phone_number'] = $params[$key]['phone_number']; unset($params[$key]['phone_number']); // Remove phone_number from params } $items[] = $item; } $_params = [ 'payouts' => $items ]; $params = array_merge($_params, $params); return self::_startAll($params, $headers); } }