def process_response(self, res): from r2.models import Account fullname = res.merchantcustomerid.contents[0] name = res.description.contents[0] customer_id = int(res.customerprofileid.contents[0]) acct = Account._by_name(name) # make sure we are updating the correct account! if acct.name == name: CustomerID.set(acct, customer_id) else: raise AuthorizeNetException, "account name doesn't match authorize.net account" # parse the ship-to list, and make sure the Account is up todate ship_to = [] for profile in res.findAll("shiptolist"): a = Address.fromXML(profile) ShippingAddress.add(acct, a.customerAddressId) ship_to.append(a) # parse the payment profiles, and ditto profiles = [] for profile in res.findAll("paymentprofiles"): a = Address.fromXML(profile) cc = CreditCard.fromXML(profile.payment) payprof = PaymentProfile(a, cc, int(a.customerPaymentProfileId)) PayID.add(acct, a.customerPaymentProfileId) profiles.append(payprof) return acct, Profile(acct, profiles, ship_to)
def process_response(self, res): from r2.models import Account fullname = res.merchantcustomerid.contents[0] name = res.description.contents[0] customer_id = int(res.customerprofileid.contents[0]) acct = Account._by_name(name) # make sure we are updating the correct account! if acct.name == name: CustomerID.set(acct, customer_id) else: raise AuthorizeNetException, \ "account name doesn't match authorize.net account" # parse the ship-to list, and make sure the Account is up todate ship_to = [] for profile in res.findAll("shiptolist"): a = Address.fromXML(profile) ShippingAddress.add(acct, a.customerAddressId) ship_to.append(a) # parse the payment profiles, and ditto profiles = [] for profile in res.findAll("paymentprofiles"): a = Address.fromXML(profile) cc = CreditCard.fromXML(profile.payment) payprof = PaymentProfile(a, cc, int(a.customerPaymentProfileId)) PayID.add(acct, a.customerPaymentProfileId) profiles.append(payprof) return acct, Profile(acct, profiles, ship_to)
def add_payment_method(user, address, credit_card, validate=False): profile_id = CustomerID.get_id(user._id) payment_method_id = api.create_payment_profile(profile_id, address, credit_card, validate) if payment_method_id: PayID.add(user, payment_method_id) return payment_method_id
def get_or_create_customer_profile(user): profile_id = CustomerID.get_id(user._id) if not profile_id: profile_id = api.create_customer_profile(merchant_customer_id=user._fullname, description=user.name) CustomerID.set(user, profile_id) profile = api.get_customer_profile(profile_id) if not profile or profile.merchantCustomerId != user._fullname: raise ValueError("error getting customer profile") for payment_profile in profile.paymentProfiles: PayID.add(user, payment_profile.customerPaymentProfileId) return profile
def get_or_create_customer_profile(user): profile_id = CustomerID.get_id(user._id) if not profile_id: profile_id = api.create_customer_profile( merchant_customer_id=user._fullname, description=user.name) CustomerID.set(user, profile_id) profile = api.get_customer_profile(profile_id) if not profile or profile.merchantCustomerId != user._fullname: raise ValueError("error getting customer profile") for payment_profile in profile.paymentProfiles: PayID.add(user, payment_profile.customerPaymentProfileId) return profile
def process_response(self, res): # add the id to the user object in case something has gone wrong PayID.add(self._user, self.customerPaymentProfileId) return PaymentProfile.fromXML(res.paymentprofile)
def process_response(self, res): pay_id = int(res.customerpaymentprofileid.contents[0]) PayID.add(self._user, pay_id) return pay_id