Пример #1
0
 /**
  * @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;
 }