/** * @see https://dev.payza.com/resources/references/ipn-variables * @param type $data * @param Payment_Invoice $invoice * @return Payment_Transaction */ public function getTransaction($data, Payment_Invoice $invoice) { $ipn = $data['post']; $tx = new Payment_Transaction(); $tx->setId($ipn['ap_referencenumber']); $tx->setAmount($ipn['ap_totalamount']); $tx->setCurrency($ipn['ap_currency']); if ($ipn['ap_purchasetype'] == 'subscription') { switch ($ipn['ap_status']) { case 'Subscription-Canceled': case 'Subscription-Expired': $tx->setType(Payment_Transaction::TXTYPE_SUBSCR_CANCEL); $tx->setStatus(Payment_Transaction::STATUS_COMPLETE); break; case 'Subscription-Payment-Success': $tx->setType(Payment_Transaction::TXTYPE_SUBSCR_CREATE); $tx->setStatus(Payment_Transaction::STATUS_COMPLETE); $tx->setSubscriptionId($ipn['ap_subscriptionreferencenumber']); break; case 'Subscription-Payment-Failed': case 'Subscription-Payment-Rescheduled': default: break; } } else { $tx->setType(Payment_Transaction::TXTYPE_PAYMENT); if ($ipn['ap_status'] == 'Success') { $tx->setStatus(Payment_Transaction::STATUS_COMPLETE); } } return $tx; }