/** *@singleton method used to instantiate class object *@access public *@return EE_Payment_Processor instance */ public static function instance() { // check if class object is instantiated if (!self::$_instance instanceof EE_Payment_Processor) { self::$_instance = new self(); } return self::$_instance; }
public static function check_for_payment_update_on_transaction($transaction) { if ($transaction instanceof EE_Transaction) { $last_payment = $transaction->last_payment(); //if this payment is from Mijireh and so far unapproved if ($last_payment instanceof EE_Payment && $last_payment->payment_method() instanceof EE_Payment_Method && $last_payment->payment_method()->type_obj() instanceof EE_PMT_Mijireh && $last_payment->status() != EEM_Payment::status_id_approved) { add_action('AHEE__EE_Registration_Processor__trigger_registration_update_notifications', array('EED_Mijireh_Payment_Checker', 'send_notifications_after_mijireh_ipn'), 5, 2); EE_Payment_Processor::instance()->process_ipn(array(), $transaction, $last_payment->payment_method()); } } }
/** * @group 7201 */ public function test_process_ipn() { /** @type EE_Payment_Method $pm */ $pm = $this->new_model_obj_with_dependencies('Payment_Method', array('PMD_type' => 'Mock_Offsite')); $this->assertTrue($pm->type_obj() instanceof EE_PMT_Mock_Offsite); $this->assertTrue($pm->type_obj()->get_gateway() instanceof EEG_Mock_Offsite); $txn = $this->new_typical_transaction(); //we don't want to bother sending messages. We're not wanting ot test that right now remove_all_filters('AHEE__EE_Payment_Processor__update_txn_based_on_payment__successful'); $payment = EE_Payment_Processor::instance()->process_payment($pm, $txn); $fake_req_data = array('gateway_txn_id' => $payment->txn_id_chq_nmbr(), 'status' => EEM_Payment::status_id_approved); $this->assertNotEmpty($payment->ID()); $payment = EE_Payment_Processor::instance()->process_ipn($fake_req_data, $txn, $pm->slug()); $this->assertTrue($payment instanceof EE_Payment); $this->assertEquals(EEM_Payment::status_id_approved, $payment->STS_ID()); $this->assertEquals(EEM_Payment::status_id_approved, $this->_get_payment_status_in_db($payment)); }