Example #1
0
    def _munge_recurring_result(self, profile_response, result, orig):

        result['trans_id'] = profile_response.rpref
        if hasattr(profile_response, 'profileid'):
            result['recurring_id'] = profile_response.profileid
        else:
            result['recurring_id'] = None

        # Profile, means a profile status request?
        (profile,) = find_classes_in_list([Profile], orig[0])
        if profile:
            payperiod = self.REVERSE_PAY_PERIOD_MAPPING.get(
                           profile.payperiod, profile.payperiod)
            result['profile'] = OnlinePaymentRecurringProfile(
                recurring_id  = profile_response.profileid,
                payperiod           = payperiod,
                status              = profile.status,
                start               = profile.start,
                next                = profile.nextpayment,
                amount              = '', # profile.amt does not exist, amount not included!?
                total               = profile.aggregateamt,
                failed_payments     = profile.numfailpayments,
                orig                = profile
            )

        # RecurringPayments, means we've got a payment history
        (profile_payments,) = find_classes_in_list([RecurringPayments], orig[0])
        if profile_payments:
            result['payments'] = [ self._build_recurring_payment(p) 
                                   for p in profile_payments.payments ]

        return OnlinePaymentRecurringResult(**result)
Example #2
0
    def _munge_result(self, orig):

        (response,) = find_classes_in_list([Response],orig[0])
        if (self.debug):
            self.log.debug("Result: %s" % repr(response.__dict__))

        result = {}

        result['code']     = int(response.result)
        result['message']  = response.respmsg
        result['success']  = True if result['code'] == 0 else False
        result['trans_id'] = response.pnref
        result['orig']     = response

        # recurring response of some kind
        (profile_response,) = find_classes_in_list([ProfileResponse], orig[0])
        if profile_response:
            return self._munge_recurring_result(profile_response, result, orig)

        return OnlinePaymentResult(**result)
Example #3
0
    def recurring_order_create(self, **kwargs):

        (card, amount, extras) = self._process_params(kwargs)
        (profile,) = find_classes_in_list(Profile, extras)

        result = self.cc.profile_add(profile, card, amount, extras=extras)
        result = self._munge_result(result)

        self._handle_errors(result)

        logging.debug('result = %s' % (result,))

        return result