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)
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)
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