/** * Start * * @param Pronamic_Pay_PaymentDataInterface $data * @see Pronamic_WP_Pay_Gateway::start() */ public function start(Pronamic_Pay_PaymentDataInterface $data, Pronamic_Pay_Payment $payment, $payment_method = null) { $order_id = $data->get_order_id(); $purchase_id = empty($order_id) ? $payment->get_id() : $order_id; $transaction_request = new Pronamic_WP_Pay_Gateways_Sisow_TransactionRequest(); $transaction_request->merchant_id = $this->config->merchant_id; $transaction_request->shop_id = $this->config->shop_id; switch ($payment_method) { case Pronamic_WP_Pay_PaymentMethods::IDEAL: $transaction_request->payment = Pronamic_WP_Pay_Gateways_Sisow_PaymentMethods::IDEAL; break; case Pronamic_WP_Pay_PaymentMethods::MISTER_CASH: $transaction_request->payment = Pronamic_WP_Pay_Gateways_Sisow_PaymentMethods::MISTER_CASH; break; } $transaction_request->set_purchase_id($purchase_id); $transaction_request->amount = $data->get_amount(); $transaction_request->issuer_id = $data->get_issuer_id(); $transaction_request->test_mode = Pronamic_IDeal_IDeal::MODE_TEST === $this->config->mode; $transaction_request->set_entrance_code($data->get_entrance_code()); $transaction_request->description = $data->get_description(); $transaction_request->return_url = add_query_arg('payment', $payment->get_id(), home_url('/')); $transaction_request->cancel_url = add_query_arg('payment', $payment->get_id(), home_url('/')); $transaction_request->callback_url = add_query_arg('payment', $payment->get_id(), home_url('/')); $transaction_request->notify_url = add_query_arg('payment', $payment->get_id(), home_url('/')); $result = $this->client->create_transaction($transaction_request); if (false !== $result) { $payment->set_transaction_id($result->id); $payment->set_action_url($result->issuer_url); } else { $this->error = $this->client->get_error(); } }