/** * Get issuers * * @since 1.2.4 * @see http://support.buckaroo.nl/index.php/Service_iDEAL#iDEAL_banken_lijst_opvragen * @return array */ public function get_issuers() { $issuers = array(); $url = add_query_arg('op', 'TransactionRequestSpecification', self::GATEWAY_NVP_TEST_URL); $data = array('brq_websitekey' => $this->get_website_key(), 'brq_services' => 'ideal', 'brq_latestversiononly' => 'True'); $signature = Pronamic_WP_Pay_Gateways_Buckaroo_Security::create_signature($data, $this->get_secret_key()); $data[Pronamic_WP_Pay_Gateways_Buckaroo_Parameters::SIGNATURE] = $signature; $result = wp_remote_post($url, array('body' => http_build_query($data))); $body = wp_remote_retrieve_body($result); wp_parse_str($body, $data); $data = Pronamic_WP_Pay_Gateways_Buckaroo_Util::transform_flat_response($data); $error_msg = __('Unable to retrieve issuers from Buckaroo.', 'pronamic_ideal'); if (200 !== wp_remote_retrieve_response_code($result)) { $this->error = new WP_Error('buckaroo_error', $error_msg, $data); return $issuers; } if (isset($data['BRQ_APIRESULT']) && 'Fail' === $data['BRQ_APIRESULT']) { $this->error = new WP_Error('buckaroo_error', sprintf('%s %s', $error_msg, $data['BRQ_APIERRORMESSAGE']), $data); return $issuers; } if (!isset($data['BRQ_SERVICES'])) { return $issuers; } foreach ($data['BRQ_SERVICES'] as $service) { if (!isset($service['NAME'], $service['VERSION'], $service['ACTIONDESCRIPTION'])) { return $issuers; } if (Pronamic_WP_Pay_Gateways_Buckaroo_PaymentMethods::IDEAL !== $service['NAME']) { continue; } foreach ($service['ACTIONDESCRIPTION'] as $action) { if (!isset($action['NAME'], $action['REQUESTPARAMETERS'])) { return $issuers; } if ('Pay' !== $action['NAME']) { continue; } foreach ($action['REQUESTPARAMETERS'] as $parameter) { if (!isset($parameter['NAME'], $parameter['LISTITEMDESCRIPTION'])) { return $issuers; } if ('issuer' !== $parameter['NAME']) { continue; } foreach ($parameter['LISTITEMDESCRIPTION'] as $issuer) { $issuers[$issuer['VALUE']] = $issuer['DESCRIPTION']; } break; } } } return $issuers; }