public function start(Pronamic_Pay_PaymentDataInterface $data, Pronamic_Pay_Payment $payment, $payment_method = null) { $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(Pronamic_WP_Pay_Gateways_Ogone_Util::get_order_id($this->config->order_id, $data, $payment))->set_order_description($data->get_description())->set_currency($data->get_currency())->set_amount($data->get_amount())->set_customer_name($data->getCustomerName())->set_language($data->get_language_and_country())->set_email($data->get_email()); // 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 = $data->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'); $url = add_query_arg('payment', $payment->get_id(), home_url('/')); $ogone_data->set_field('ACCEPTURL', $url); $ogone_data->set_field('DECLINEURL', $url); $ogone_data->set_field('EXCEPTIONURL', $url); $ogone_data->set_field('PARAMPLUS', ''); $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(add_query_arg('payment', $payment->get_id(), home_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('/'))); } } }
/** * Get order status */ public function get_order_status($order_id) { $return = null; // API user ID and password $user_id = $this->get_user_id(); $password = $this->get_password(); if ('' === $user_id || '' === $password) { return $return; } $result = Pronamic_WP_Pay_Util::remote_get_body($this->get_direct_query_url(), 200, array('method' => 'POST', 'body' => array(Pronamic_WP_Pay_Gateways_Ogone_Parameters::ORDERID => $order_id, Pronamic_WP_Pay_Gateways_Ogone_Parameters::PSPID => $this->data->get_field(Pronamic_WP_Pay_Gateways_Ogone_Parameters::PSPID), Pronamic_WP_Pay_Gateways_Ogone_Parameters::USER_ID => $user_id, Pronamic_WP_Pay_Gateways_Ogone_Parameters::PASSWORD => $password), 'timeout' => 30)); $xml = Pronamic_WP_Pay_Util::simplexml_load_string($result); if (!is_wp_error($xml)) { $order_response = Pronamic_WP_Pay_Gateways_Ogone_OrderResponseParser::parse($xml); $status = Pronamic_WP_Pay_XML_Security::filter($order_response->status); $return = Pronamic_WP_Pay_Gateways_Ogone_Statuses::transform($status); } return $return; }
public static function sign_data(Pronamic_WP_Pay_Gateways_Ogone_Data $data, $pass_phrase, $hash_algorithm) { $calculation_fields = Pronamic_WP_Pay_Gateways_Ogone_Security::get_calculations_parameters_in(); $fields = Pronamic_WP_Pay_Gateways_Ogone_Security::get_calculation_fields($calculation_fields, $data->get_fields()); $signature = Pronamic_WP_Pay_Gateways_Ogone_Security::get_signature($fields, $pass_phrase, $hash_algorithm); $data->set_field('SHASign', $signature); }
/** * Get fields * * @since 1.2.1 * @return array */ public function get_fields() { Pronamic_WP_Pay_Gateways_Ogone_Security::sign_data($this->data, $this->get_pass_phrase_in(), $this->hash_algorithm); return $this->data->get_fields(); }