public function start(Pronamic_Pay_PaymentDataInterface $data, Pronamic_Pay_Payment $payment, $payment_method = null) { $url = add_query_arg('payment', $payment->get_id(), home_url('/')); $transaction_description = $data->get_description(); if (empty($transaction_description)) { $transaction_description = $payment->get_id(); } $merchant = new Pronamic_WP_Pay_Gateways_MultiSafepay_Connect_Merchant(); $merchant->account = $this->config->account_id; $merchant->site_id = $this->config->site_id; $merchant->site_secure_code = $this->config->site_code; $merchant->notification_url = $url; $merchant->redirect_url = $url; $merchant->cancel_url = $url; $merchant->close_window = 'false'; $customer = new Pronamic_WP_Pay_Gateways_MultiSafepay_Connect_Customer(); $customer->locale = $data->get_language_and_country(); $customer->ip_address = Pronamic_WP_Pay_Server::get('REMOTE_ADDR', FILTER_VALIDATE_IP); $customer->forwarded_ip = Pronamic_WP_Pay_Server::get('HTTP_X_FORWARDED_FOR', FILTER_VALIDATE_IP); $customer->first_name = $data->getCustomerName(); $customer->email = $data->get_email(); $transaction = new Pronamic_WP_Pay_Gateways_MultiSafepay_Connect_Transaction(); $transaction->id = uniqid(); $transaction->currency = $data->get_currency(); $transaction->amount = $data->get_amount(); $transaction->description = $transaction_description; switch ($payment_method) { case Pronamic_WP_Pay_PaymentMethods::IDEAL: $gateway_info = new Pronamic_WP_Pay_Gateways_MultiSafepay_Connect_GatewayInfo(); $gateway_info->issuer_id = $data->get_issuer_id(); $transaction->gateway = Pronamic_WP_Pay_Gateways_MultiSafepay_Gateways::IDEAL; $message = new Pronamic_WP_Pay_Gateways_MultiSafepay_Connect_XML_DirectTransactionRequestMessage($merchant, $customer, $transaction, $gateway_info); break; case Pronamic_WP_Pay_PaymentMethods::BANK_TRANSFER: $transaction->gateway = Pronamic_WP_Pay_Gateways_MultiSafepay_Gateways::BANK_TRANSFER; $message = new Pronamic_WP_Pay_Gateways_MultiSafepay_Connect_XML_RedirectTransactionRequestMessage($merchant, $customer, $transaction); break; default: $message = new Pronamic_WP_Pay_Gateways_MultiSafepay_Connect_XML_RedirectTransactionRequestMessage($merchant, $customer, $transaction); } $signature = Pronamic_WP_Pay_Gateways_MultiSafepay_Connect_Signature::generate($transaction->amount, $transaction->currency, $merchant->account, $merchant->site_id, $transaction->id); $message->signature = $signature; $response = $this->client->start_transaction($message); if ($response) { $transaction = $response->transaction; $payment->set_transaction_id($transaction->id); if ($transaction->payment_url) { $payment->set_action_url($transaction->payment_url); } if ($response->gateway_info && $response->gateway_info->redirect_url) { $payment->set_action_url($response->gateway_info->redirect_url); } } else { $this->error = $this->client->get_error(); } }
public static function get_ip_address() { if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { return Pronamic_WP_Pay_Server::get('HTTP_X_FORWARDED_FOR', FILTER_VALIDATE_IP); } if (isset($_SERVER['REMOTE_ADDR'])) { return Pronamic_WP_Pay_Server::get('REMOTE_ADDR', FILTER_VALIDATE_IP); } return '127.0.0.1'; }
/** * Start * * @see Pronamic_WP_Pay_Gateway::start() * @param Pronamic_Pay_Payment $payment */ public function start(Pronamic_Pay_Payment $payment) { $ogone_data = new Pronamic_WP_Pay_Gateways_Ogone_Data(); // General $ogone_data_general = new Pronamic_WP_Pay_Gateways_Ogone_DataGeneralHelper($ogone_data); $ogone_data_general->set_psp_id($this->client->psp_id)->set_order_id($payment->format_string($this->config->order_id))->set_order_description($payment->get_description())->set_param_plus('payment_id=' . $payment->get_id())->set_currency($payment->get_currency())->set_amount($payment->get_amount())->set_language($payment->get_locale()); // Customer $ogone_data_customer = new Pronamic_WP_Pay_Gateways_Ogone_DataCustomerHelper($ogone_data); $ogone_data_customer->set_name($payment->get_customer_name())->set_email($payment->get_email())->set_address($payment->get_address())->set_zip($payment->get_zip())->set_town($payment->get_city())->set_country($payment->get_country())->set_telephone_number($payment->get_telephone_number()); // DirectLink $ogone_data_directlink = new Pronamic_WP_Pay_Gateways_Ogone_DirectLink_DataHelper($ogone_data); $ogone_data_directlink->set_user_id($this->client->user_id)->set_password($this->client->password); // Credit card $ogone_data_credit_card = new Pronamic_WP_Pay_Gateways_Ogone_DataCreditCardHelper($ogone_data); $credit_card = $payment->get_credit_card(); $ogone_data_credit_card->set_number($credit_card->get_number())->set_expiration_date($credit_card->get_expiration_date())->set_security_code($credit_card->get_security_code()); $ogone_data->set_field('OPERATION', 'SAL'); // 3-D Secure if ($this->config->enabled_3d_secure) { $secure_data_helper = new Pronamic_WP_Pay_Gateways_Ogone_3DSecure_DataHelper($ogone_data); $secure_data_helper->set_3d_secure_flag(true)->set_http_accept(Pronamic_WP_Pay_Server::get('HTTP_ACCEPT'))->set_http_user_agent(Pronamic_WP_Pay_Server::get('HTTP_USER_AGENT'))->set_window('MAINW'); $ogone_data->set_field('ACCEPTURL', $payment->get_return_url()); $ogone_data->set_field('DECLINEURL', $payment->get_return_url()); $ogone_data->set_field('EXCEPTIONURL', $payment->get_return_url()); $ogone_data->set_field('COMPLUS', ''); } // Signature $calculation_fields = Pronamic_WP_Pay_Gateways_Ogone_Security::get_calculations_parameters_in(); $fields = Pronamic_WP_Pay_Gateways_Ogone_Security::get_calculation_fields($calculation_fields, $ogone_data->get_fields()); $signature = Pronamic_WP_Pay_Gateways_Ogone_Security::get_signature($fields, $this->config->sha_in_pass_phrase, $this->config->hash_algorithm); $ogone_data->set_field('SHASIGN', $signature); // Order $result = $this->client->order_direct($ogone_data->get_fields()); $error = $this->client->get_error(); if (is_wp_error($error)) { $this->error = $error; } else { $payment->set_transaction_id($result->pay_id); $payment->set_action_url($payment->get_return_url()); $payment->set_status(Pronamic_WP_Pay_Gateways_Ogone_Statuses::transform($result->status)); if (!empty($result->html_answer)) { $payment->set_meta('ogone_directlink_html_answer', $result->html_answer); $payment->set_action_url(add_query_arg('payment_redirect', $payment->get_id(), home_url('/'))); } } }
public static function listen() { if (filter_has_var(INPUT_GET, 'buckaroo_push')) { $method = Pronamic_WP_Pay_Server::get('REQUEST_METHOD', FILTER_SANITIZE_STRING); $data = array(); switch ($method) { case 'GET': $data = $_GET; break; case 'POST': $data = $_POST; // WPCS: CSRF OK break; } $data = array_change_key_case($data, CASE_LOWER); if (isset($data[Pronamic_WP_Pay_Gateways_Buckaroo_Parameters::INVOICE_NUMBER], $data[Pronamic_WP_Pay_Gateways_Buckaroo_Parameters::STATUS_CODE])) { $payment_id = $data[Pronamic_WP_Pay_Gateways_Buckaroo_Parameters::INVOICE_NUMBER]; $payment = get_pronamic_payment($payment_id); Pronamic_WP_Pay_Plugin::update_payment($payment); } } }