diff --git a/bin/masspay.py b/bin/masspay.py index dd039d9214..ce2ac38b86 100755 --- a/bin/masspay.py +++ b/bin/masspay.py @@ -136,7 +136,7 @@ def compute_input_csv(): print_rule(88) total_gross = 0 for participant in participants: - tips, total = participant.get_tips_and_total(for_payday=False) + total = participant.giving + participant.pledging amount = participant.balance - total if amount < 0.50: # Minimum payout of 50 cents. I think that otherwise PayPal upcharges to a penny. diff --git a/gittip/billing/exchanges.py b/gittip/billing/exchanges.py new file mode 100644 index 0000000000..1ad4d6c99d --- /dev/null +++ b/gittip/billing/exchanges.py @@ -0,0 +1,286 @@ +"""Functions for moving money between Gittip and the outside world. +""" +from __future__ import unicode_literals + +from decimal import Decimal, ROUND_UP +import sys + +import balanced + +from aspen import log +from aspen.utils import typecheck +from gittip.exceptions import NegativeBalance, NoBalancedCustomerHref, NotWhitelisted + + +# Balanced has a $0.50 minimum. We go even higher to avoid onerous +# per-transaction fees. See: +# https://github.com/gittip/www.gittip.com/issues/167 + +MINIMUM_CHARGE = Decimal("9.41") +MINIMUM_CREDIT = Decimal("10.00") + +FEE_CHARGE = ( Decimal("0.30") # $0.30 + , Decimal("0.029") # 2.9% + ) +FEE_CREDIT = Decimal("0.00") # Balanced doesn't actually charge us for this, + # because we were in the door early enough. + + +def upcharge(amount): + """Given an amount, return a higher amount and the difference. + """ + typecheck(amount, Decimal) + charge_amount = (amount + FEE_CHARGE[0]) / (1 - FEE_CHARGE[1]) + charge_amount = charge_amount.quantize(FEE_CHARGE[0], rounding=ROUND_UP) + return charge_amount, charge_amount - amount + +assert upcharge(MINIMUM_CHARGE) == (Decimal('10.00'), Decimal('0.59')) + + +def skim_credit(amount): + """Given an amount, return a lower amount and the difference. + """ + typecheck(amount, Decimal) + return amount - FEE_CREDIT, FEE_CREDIT + + +def ach_credit(db, participant, withhold, minimum_credit=MINIMUM_CREDIT): + + # Compute the amount to credit them. + # ================================== + # Leave money in Gittip to cover their obligations next week (as these + # currently stand). + + balance = participant.balance + assert balance is not None, balance # sanity check + amount = balance - withhold + + # Do some last-minute checks. + # =========================== + + if amount <= 0: + return # Participant not owed anything. + + if amount < minimum_credit: + also_log = "" + if withhold > 0: + also_log = " ($%s balance - $%s in obligations)" + also_log %= (balance, withhold) + log("Minimum payout is $%s. %s is only due $%s%s." + % (minimum_credit, participant.username, amount, also_log)) + return # Participant owed too little. + + if not participant.is_whitelisted: + raise NotWhitelisted # Participant not trusted. + + balanced_customer_href = participant.balanced_customer_href + if balanced_customer_href is None: + log("%s has no balanced_customer_href." + % participant.username) + raise NoBalancedCustomerHref # not in Balanced + + + # Do final calculations. + # ====================== + + credit_amount, fee = skim_credit(amount) + cents = credit_amount * 100 + + if withhold > 0: + also_log = "$%s balance - $%s in obligations" + also_log %= (balance, withhold) + else: + also_log = "$%s" % amount + msg = "Crediting %s %d cents (%s - $%s fee = $%s) on Balanced ... " + msg %= (participant.username, cents, also_log, fee, credit_amount) + + + # Try to dance with Balanced. + # =========================== + + try: + customer = balanced.Customer.fetch(balanced_customer_href) + customer.bank_accounts.one()\ + .credit(amount=cents, + description=participant.username) + + log(msg + "succeeded.") + error = "" + except balanced.exc.HTTPError as err: + error = err.message.message + except: + error = repr(sys.exc_info()[1]) + + if error: + log(msg + "failed: %s" % error) + + record_exchange(db, 'ach', -credit_amount, fee, error, participant) + return error + + +def charge(db, participant, amount): + """Charge the participants credit card. + + This is the only place where we actually charge credit cards. Amount + should be the nominal amount. We'll compute Gittip's fee below this + function and add it to amount to end up with charge_amount. + + """ + typecheck(amount, Decimal) + + username = participant.username + balanced_customer_href = participant.balanced_customer_href + + typecheck( username, unicode + , balanced_customer_href, (unicode, None) + ) + + + # Perform some last-minute checks. + # ================================ + + if balanced_customer_href is None: + raise NoBalancedCustomerHref # Participant has no funding source. + + if participant.is_suspicious is not False: + raise NotWhitelisted # Participant not trusted. + + + # Go to Balanced. + # =============== + + things = charge_on_balanced( username + , balanced_customer_href + , amount + ) + charge_amount, fee, error = things + + amount = charge_amount - fee # account for possible rounding under + # charge_on_* + + record_exchange(db, 'bill', amount, fee, error, participant) + return error + + +def charge_on_balanced(username, balanced_customer_href, amount): + """We have a purported balanced_customer_href. Try to use it. + """ + typecheck( username, unicode + , balanced_customer_href, unicode + , amount, Decimal + ) + + cents, msg, charge_amount, fee = _prep_hit(amount) + msg = msg % (username, "Balanced") + + try: + customer = balanced.Customer.fetch(balanced_customer_href) + customer.cards.one().debit(amount=cents, description=username) + log(msg + "succeeded.") + error = "" + except balanced.exc.HTTPError as err: + error = err.message.message + except: + error = repr(sys.exc_info()[1]) + + if error: + log(msg + "failed: %s" % error) + + return charge_amount, fee, error + + +def _prep_hit(unrounded): + """Takes an amount in dollars. Returns cents, etc. + + cents This is passed to the payment processor charge API. This is + the value that is actually charged to the participant. It's + an int. + msg A log message with a couple %s to be filled in by the + caller. + upcharged Decimal dollar equivalent to `cents'. + fee Decimal dollar amount of the fee portion of `upcharged'. + + The latter two end up in the db in a couple places via record_exchange. + + """ + also_log = '' + rounded = unrounded + if unrounded < MINIMUM_CHARGE: + rounded = MINIMUM_CHARGE # per github/#167 + also_log = ' [rounded up from $%s]' % unrounded + + upcharged, fee = upcharge(rounded) + cents = int(upcharged * 100) + + msg = "Charging %%s %d cents ($%s%s + $%s fee = $%s) on %%s ... " + msg %= cents, rounded, also_log, fee, upcharged + + return cents, msg, upcharged, fee + + +def record_exchange(db, kind, amount, fee, error, participant): + """Given a Bunch of Stuff, return None. + + Records in the exchanges table have these characteristics: + + amount It's negative for credits (representing an outflow from + Gittip to you) and positive for charges. + The sign is how we differentiate the two in, e.g., the + history page. + + fee The payment processor's fee. It's always positive. + + This function takes the result of an API call to a payment processor + and records the result in our db. If the power goes out at this point + then Postgres will be out of sync with the payment processor. We'll + have to resolve that manually be reviewing the transaction log at the + processor and modifying Postgres accordingly. + + For Balanced, this could be automated by generating an ID locally and + commiting that to the db and then passing that through in the meta + field.* Then syncing would be a case of simply:: + + for payment in unresolved_payments: + payment_in_balanced = balanced.Transaction.query.filter( + **{'meta.unique_id': 'value'}).one() + payment.transaction_uri = payment_in_balanced.uri + + * https://www.balancedpayments.com/docs/meta + + """ + + username = participant.username + with db.get_cursor() as cursor: + + if error: + amount = fee = Decimal('0.00') + else: + EXCHANGE = """\ + + INSERT INTO exchanges + (amount, fee, participant) + VALUES (%s, %s, %s) + + """ + cursor.execute(EXCHANGE, (amount, fee, username)) + + # Update the participant's balance. + # ================================= + + RESULT = """\ + + UPDATE participants + SET last_{0}_result=%s + , balance=(balance + %s) + WHERE username=%s + RETURNING balance + + """.format(kind) + if kind == 'ach': + amount -= fee + balance = cursor.one(RESULT, (error or '', amount, username)) + if balance < 0: + raise NegativeBalance + + if hasattr(participant, 'set_attributes'): + participant.set_attributes(balance=balance) diff --git a/gittip/billing/payday.py b/gittip/billing/payday.py index bfb026cc8b..14fea554c2 100644 --- a/gittip/billing/payday.py +++ b/gittip/billing/payday.py @@ -18,75 +18,21 @@ """ from __future__ import unicode_literals -import sys -from decimal import Decimal, ROUND_UP +from decimal import Decimal -import balanced import aspen.utils from aspen import log from aspen.utils import typecheck -from gittip.models.participant import Participant -from gittip.exceptions import NegativeBalance +from gittip.billing.exchanges import ach_credit, charge +from gittip.exceptions import NegativeBalance, NoBalancedCustomerHref, NotWhitelisted from psycopg2 import IntegrityError -# Set fees and minimums. -# ====================== -# Balanced has a $0.50 minimum. We go even higher to avoid onerous -# per-transaction fees. See: -# https://github.com/gittip/www.gittip.com/issues/167 XXX I should maybe -# compute this using *ahem* math. - -FEE_CHARGE = ( Decimal("0.30") # $0.30 - , Decimal("0.029") # 2.9% - ) -FEE_CREDIT = Decimal("0.00") # Balanced doesn't actually charge us for this, - # because we were in the door early enough. - -MINIMUM_CHARGE = Decimal("9.41") -MINIMUM_CREDIT = Decimal("10.00") - - -def upcharge(amount): - """Given an amount, return a higher amount and the difference. - """ - typecheck(amount, Decimal) - charge_amount = (amount + FEE_CHARGE[0]) / (1 - FEE_CHARGE[1]) - charge_amount = charge_amount.quantize(FEE_CHARGE[0], rounding=ROUND_UP) - return charge_amount, charge_amount - amount - -def skim_credit(amount): - """Given an amount, return a lower amount and the difference. - """ - typecheck(amount, Decimal) - return amount - FEE_CREDIT, FEE_CREDIT - -assert upcharge(MINIMUM_CHARGE) == (Decimal('10.00'), Decimal('0.59')) - - -def is_whitelisted(participant): - """Given a dict, return bool, possibly logging. - - We only perform credit card charges and bank deposits for whitelisted - participants. We don't even include is_suspicious participants in the - initial SELECT, so we should never see one here. - - """ - assert participant.is_suspicious is not True, participant.username - if participant.is_suspicious is None: - log("UNREVIEWED: %s" % participant.username) - return False - return True - - class NoPayday(Exception): def __str__(self): return "No payday found where one was expected." -LOOP_PAYIN, LOOP_PACHINKO, LOOP_PAYOUT = range(3) - - class Payday(object): """Represent an abstract event during which money is moved. @@ -103,33 +49,6 @@ def __init__(self, db): self.db = db - def genparticipants(self, ts_start, loop): - """Generator to yield participants with extra info. - - The extra info varies depending on which loop we're in: tips/total for - payin and payout, takes for pachinko. - - """ - teams_only = (loop == LOOP_PACHINKO) - for participant in self.get_participants(ts_start, teams_only): - if loop == LOOP_PAYIN: - extra = participant.get_tips_and_total(for_payday=ts_start) - elif loop == LOOP_PACHINKO: - extra = participant.get_takes(for_payday=ts_start) - elif loop == LOOP_PAYOUT: - - # On the payout loop we want to use the total obligations they - # have for next week, and if we pass a non-False for_payday to - # get_tips_and_total then we only get unfulfilled tips from - # prior to that timestamp, which is none of them by definition - # at this point since we just recently finished payin. - - extra = participant.get_tips_and_total() - else: - raise Exception # sanity check - yield(participant, extra) - - def run(self): """This is the starting point for payday. @@ -143,13 +62,14 @@ def run(self): _start = aspen.utils.utcnow() log("Greetings, program! It's PAYDAY!!!!") ts_start = self.start() + self.prepare(ts_start) self.zero_out_pending(ts_start) - self.payin(ts_start, self.genparticipants(ts_start, loop=LOOP_PAYIN)) + self.payin() self.move_pending_to_balance_for_teams() - self.pachinko(ts_start, self.genparticipants(ts_start, loop=LOOP_PACHINKO)) + self.pachinko() self.clear_pending_to_balance() - self.payout(ts_start, self.genparticipants(ts_start, loop=LOOP_PAYOUT)) + self.payout() self.update_stats(ts_start) self.update_receiving_amounts() @@ -190,6 +110,88 @@ def start(self): return ts_start + def prepare(self, ts_start): + """Prepare the DB: we need temporary tables with indexes. + """ + self.db.run(""" + + DROP TABLE IF EXISTS pay_participants CASCADE; + CREATE TEMPORARY TABLE pay_participants AS + SELECT username + , claimed_time + , number + , is_suspicious + , balance + , balanced_customer_href + , last_bill_result + FROM participants + WHERE is_suspicious IS NOT true + AND claimed_time < %(ts_start)s + ORDER BY claimed_time; + + CREATE UNIQUE INDEX ON pay_participants (username); + + DROP TABLE IF EXISTS pay_transfers CASCADE; + CREATE TEMPORARY TABLE pay_transfers AS + SELECT * + FROM transfers t + WHERE t.timestamp > %(ts_start)s; + + DROP TABLE IF EXISTS pay_tips CASCADE; + CREATE TEMPORARY TABLE pay_tips AS + SELECT tipper, tippee, amount + FROM ( SELECT DISTINCT ON (tipper, tippee) * + FROM tips + WHERE mtime < %(ts_start)s + ORDER BY tipper, tippee, mtime DESC + ) t + JOIN pay_participants p ON p.username = t.tipper + WHERE t.amount > 0 + AND t.tippee IN (SELECT username FROM pay_participants) + AND ( SELECT id + FROM pay_transfers t2 + WHERE t.tipper = t2.tipper + AND t.tippee = t2.tippee + AND context = 'tip' + ) IS NULL + ORDER BY p.claimed_time ASC, t.ctime ASC; + + CREATE INDEX ON pay_tips (tipper); + CREATE INDEX ON pay_tips (tippee); + + ALTER TABLE pay_participants ADD COLUMN giving_today numeric(35,2); + UPDATE pay_participants + SET giving_today = ( + SELECT sum(amount) + FROM pay_tips + WHERE tipper = username + ); + + DROP TABLE IF EXISTS pay_takes CASCADE; + CREATE TEMPORARY TABLE pay_takes AS + SELECT team, member, amount, ctime + FROM ( SELECT DISTINCT ON (team, member) + team, member, amount, ctime + FROM takes + WHERE mtime < %(ts_start)s + ORDER BY team, member, mtime DESC + ) t + WHERE t.amount > 0 + AND t.team IN (SELECT username FROM pay_participants) + AND t.member IN (SELECT username FROM pay_participants) + AND ( SELECT id + FROM pay_transfers t2 + WHERE t.team = t2.tipper + AND t.member = t2.tippee + AND context = 'take' + ) IS NULL; + + CREATE INDEX ON pay_takes (team); + + """, dict(ts_start=ts_start)) + log('Prepared the DB.') + + def zero_out_pending(self, ts_start): """Given a timestamp, zero out the pending column. @@ -211,38 +213,27 @@ def zero_out_pending(self, ts_start): return None - def get_participants(self, ts_start, teams_only=False): - """Given a timestamp, return a list of participants dicts. - """ - PARTICIPANTS = """\ - SELECT participants.*::participants - FROM participants - WHERE claimed_time IS NOT NULL - AND claimed_time < %s - AND is_suspicious IS NOT true - {} - ORDER BY claimed_time ASC - """.format(teams_only and "AND number = 'plural'" or '') - participants = self.db.all(PARTICIPANTS, (ts_start,)) - log("Fetched participants.") - return participants - - - def payin(self, ts_start, participants): - """Given a datetime and an iterator, do the payin side of Payday. + def payin(self): + """Do the payin side of Payday. """ i = 0 log("Starting payin loop.") - for i, (participant, (tips, total)) in enumerate(participants, start=1): + participants = self.db.all(""" + SELECT * FROM pay_participants WHERE giving_today > 0 + """) + for i, participant in enumerate(participants, start=1): if i % 100 == 0: log("Payin done for %d participants." % i) - self.charge_and_or_transfer(ts_start, participant, tips, total) + self.charge_and_or_transfer(participant) log("Did payin for %d participants." % i) - def pachinko(self, ts_start, participants): + def pachinko(self): i = 0 - for i, (participant, takes) in enumerate(participants, start=1): + participants = self.db.all(""" + SELECT * FROM pay_participants WHERE number = 'plural' + """) + for i, participant in enumerate(participants, start=1): if i % 100 == 0: log("Pachinko done for %d participants." % i) @@ -256,13 +247,15 @@ def tip(tippee, amount): tip['tipper'] = participant.username tip['tippee'] = tippee tip['amount'] = amount - tip['claimed_time'] = ts_start self.tip( participant , tip - , ts_start , pachinko=True ) + takes = self.db.all(""" + SELECT * FROM pay_takes WHERE team = %s ORDER BY ctime DESC + """, (participant.username,), back_as=dict) + for take in takes: amount = min(take['amount'], available) available -= amount @@ -273,26 +266,38 @@ def tip(tippee, amount): log("Did pachinko for %d participants." % i) - def payout(self, ts_start, participants): - """Given a datetime and an iterator, do the payout side of Payday. + def payout(self): + """Do the payout side of Payday. """ i = 0 log("Starting payout loop.") - for i, (participant, (tips, total)) in enumerate(participants, start=1): + participants = self.db.all(""" + SELECT p.*::participants FROM participants p WHERE balance > 0 + """) + for i, participant in enumerate(participants, start=1): if i % 100 == 0: log("Payout done for %d participants." % i) - self.ach_credit(ts_start, participant, tips, total) + withhold = participant.giving + participant.pledging + try: + error = ach_credit(self.db, participant, withhold) + if error: + self.mark_ach_failed() + except NoBalancedCustomerHref: + continue + except NotWhitelisted: + if participant.is_suspicious is None: + log("UNREVIEWED: %s" % participant.username) log("Did payout for %d participants." % i) - def charge_and_or_transfer(self, ts_start, participant, tips, total): + def charge_and_or_transfer(self, participant): """Given one participant record, pay their day. Charge each participants' credit card if needed before transfering money between Gittip accounts. """ - short = total - participant.balance + short = participant.giving_today - participant.balance if short > 0: # The participant's Gittip account is short the amount needed to @@ -302,18 +307,28 @@ def charge_and_or_transfer(self, ts_start, participant, tips, total): # at least *some* tips. The charge method will have set # last_bill_result to a non-empty string if the card did fail. - self.charge(participant, short) + try: + error = charge(self.db, participant, short) + if error: + self.mark_charge_failed() + except NoBalancedCustomerHref: + self.mark_missing_funding() + except NotWhitelisted: + if participant.is_suspicious is None: + log("UNREVIEWED: %s" % participant.username) + + tips = self.db.all(""" + SELECT * FROM pay_tips WHERE tipper = %s + """, (participant.username,), back_as=dict) nsuccessful_tips = 0 for tip in tips: - result = self.tip(participant, tip, ts_start) + result = self.tip(participant, tip) if result >= 0: nsuccessful_tips += result else: break - self.mark_participant() - def move_pending_to_balance_for_teams(self): """Transfer pending into balance for teams. @@ -401,6 +416,7 @@ def update_stats(self, ts_start): SELECT tippee FROM our_transfers ) AS foo ) + , nparticipants = (SELECT count(*) FROM pay_participants) , ntippers = (SELECT count(DISTINCT tipper) FROM our_transfers) , ntips = (SELECT count(*) FROM our_tips) , npachinko = (SELECT count(*) FROM our_pachinkos) @@ -455,7 +471,7 @@ def end(self): # Move money between Gittip participants. # ======================================= - def tip(self, participant, tip, ts_start, pachinko=False): + def tip(self, participant, tip, pachinko=False): """Given dict, dict, and datetime, log and return int. Return values: @@ -481,16 +497,6 @@ def tip(self, participant, tip, ts_start, pachinko=False): return 0 - claimed_time = tip['claimed_time'] - if claimed_time is None or claimed_time > ts_start: - - # Gittip is opt-in. We're only going to collect money on a person's - # behalf if they opted-in by claiming their account before the - # start of this payday. - - log("SKIPPED: %s" % msg) - return 0 - if not self.transfer(participant.username, tip['tippee'], \ tip['amount'], pachinko=pachinko): @@ -573,301 +579,9 @@ def credit_participant(self, cursor, participant, amount): assert rec is not None, (participant, amount) # sanity check - # Move money between Gittip and the outside world. - # ================================================ - - def charge(self, participant, amount): - """Given dict and Decimal, return None. - - This is the only place where we actually charge credit cards. Amount - should be the nominal amount. We'll compute Gittip's fee below this - function and add it to amount to end up with charge_amount. - - """ - typecheck(participant, Participant, amount, Decimal) - - username = participant.username - balanced_customer_href = participant.balanced_customer_href - - typecheck( username, unicode - , balanced_customer_href, (unicode, None) - ) - - - # Perform some last-minute checks. - # ================================ - - if balanced_customer_href is None: - self.mark_missing_funding() - return # Participant has no funding source. - - if not is_whitelisted(participant): - return # Participant not trusted. - - - # Go to Balanced. - # =============== - - things = self.charge_on_balanced( username - , balanced_customer_href - , amount - ) - charge_amount, fee, error = things - - amount = charge_amount - fee # account for possible rounding under - # charge_on_* - - self.record_charge( amount - , fee - , error - , username - ) - - - def ach_credit(self, ts_start, participant, tips, total, minimum_credit=MINIMUM_CREDIT): - - # Compute the amount to credit them. - # ================================== - # Leave money in Gittip to cover their obligations next week (as these - # currently stand). Also reduce the amount by our service fee. - - balance = participant.balance - assert balance is not None, balance # sanity check - amount = balance - total - - # Do some last-minute checks. - # =========================== - - if amount <= 0: - return # Participant not owed anything. - - if amount < minimum_credit: - also_log = "" - if total > 0: - also_log = " ($%s balance - $%s in obligations)" - also_log %= (balance, total) - log("Minimum payout is $%s. %s is only due $%s%s." - % (minimum_credit, participant.username, amount, also_log)) - return # Participant owed too little. - - if not is_whitelisted(participant): - return # Participant not trusted. - - - # Do final calculations. - # ====================== - - credit_amount, fee = skim_credit(amount) - cents = credit_amount * 100 - - if total > 0: - also_log = "$%s balance - $%s in obligations" - also_log %= (balance, total) - else: - also_log = "$%s" % amount - msg = "Crediting %s %d cents (%s - $%s fee = $%s) on Balanced ... " - msg %= (participant.username, cents, also_log, fee, credit_amount) - - - # Try to dance with Balanced. - # =========================== - - try: - balanced_customer_href = participant.balanced_customer_href - if balanced_customer_href is None: - log("%s has no balanced_customer_href." - % participant.username) - return # not in Balanced - - customer = balanced.Customer.fetch(balanced_customer_href) - customer.bank_accounts.one()\ - .credit(amount=cents, - description=participant.username) - - log(msg + "succeeded.") - error = "" - except balanced.exc.HTTPError as err: - error = err.message.message - except: - error = repr(sys.exc_info()[1]) - - if error: - log(msg + "failed: %s" % error) - - self.record_credit(credit_amount, fee, error, participant) - - - def charge_on_balanced(self, username, balanced_customer_href, amount): - """We have a purported balanced_customer_href. Try to use it. - """ - typecheck( username, unicode - , balanced_customer_href, unicode - , amount, Decimal - ) - - cents, msg, charge_amount, fee = self._prep_hit(amount) - msg = msg % (username, "Balanced") - - try: - customer = balanced.Customer.fetch(balanced_customer_href) - customer.cards.one().debit(amount=cents, description=username) - log(msg + "succeeded.") - error = "" - except balanced.exc.HTTPError as err: - error = err.message.message - except: - error = repr(sys.exc_info()[1]) - - if error: - log(msg + "failed: %s" % error) - - return charge_amount, fee, error - - - def _prep_hit(self, unrounded): - """Takes an amount in dollars. Returns cents, etc. - - cents This is passed to the payment processor charge API. This is - the value that is actually charged to the participant. It's - an int. - msg A log message with a couple %s to be filled in by the - caller. - upcharged Decimal dollar equivalent to `cents'. - fee Decimal dollar amount of the fee portion of `upcharged'. - - The latter two end up in the db in a couple places via record_charge. - - """ - also_log = '' - rounded = unrounded - if unrounded < MINIMUM_CHARGE: - rounded = MINIMUM_CHARGE # per github/#167 - also_log = ' [rounded up from $%s]' % unrounded - - upcharged, fee = upcharge(rounded) - cents = int(upcharged * 100) - - msg = "Charging %%s %d cents ($%s%s + $%s fee = $%s) on %%s ... " - msg %= cents, rounded, also_log, fee, upcharged - - return cents, msg, upcharged, fee - - # Record-keeping. # =============== - def record_charge(self, amount, fee, error, username): - """Given a Bunch of Stuff, return None. - - This function takes the result of an API call to a payment processor - and records the result in our db. If the power goes out at this point - then Postgres will be out of sync with the payment processor. We'll - have to resolve that manually be reviewing the transaction log at the - processor and modifying Postgres accordingly. - - For Balanced, this could be automated by generating an ID locally and - commiting that to the db and then passing that through in the meta - field.* Then syncing would be a case of simply:: - - for payment in unresolved_payments: - payment_in_balanced = balanced.Transaction.query.filter( - **{'meta.unique_id': 'value'}).one() - payment.transaction_uri = payment_in_balanced.uri - - * https://www.balancedpayments.com/docs/meta - - """ - - with self.db.get_cursor() as cursor: - - if error: - last_bill_result = error - amount = Decimal('0.00') - self.mark_charge_failed(cursor) - else: - last_bill_result = '' - EXCHANGE = """\ - - INSERT INTO exchanges - (amount, fee, participant) - VALUES (%s, %s, %s) - - """ - cursor.execute(EXCHANGE, (amount, fee, username)) - - - # Update the participant's balance. - # ================================= - # Credit card charges go immediately to balance, not to pending. - - RESULT = """\ - - UPDATE participants - SET last_bill_result=%s - , balance=(balance + %s) - WHERE username=%s - - """ - cursor.execute(RESULT, (last_bill_result, amount, username)) - - - def record_credit(self, amount, fee, error, participant): - """Given a Bunch of Stuff, return None. - - Records in the exchanges table for credits have these characteristics: - - amount It's negative, representing an outflow from Gittip to you. - This is oppositive of charges, where amount is positive. - The sign is how we differentiate the two in, e.g., the - history page. - - fee It's positive, just like with charges. - - """ - username = participant.username - credit = -amount # From Gittip's POV this is money flowing out of the - # system. - - with self.db.get_cursor() as cursor: - - if error: - last_ach_result = error - credit = fee = Decimal('0.00') # ensures balance won't change - self.mark_ach_failed(cursor) - else: - last_ach_result = '' - EXCHANGE = """\ - - INSERT INTO exchanges - (amount, fee, participant) - VALUES (%s, %s, %s) - - """ - cursor.execute(EXCHANGE, (credit, fee, username)) - - - # Update the participant's balance. - # ================================= - - RESULT = """\ - - UPDATE participants - SET last_ach_result=%s - , balance=(balance + %s) - WHERE username=%s - RETURNING balance - - """ - balance = cursor.one(RESULT, ( last_ach_result - , credit - fee # -10.00 - 0.30 = -10.30 - , username - )) - if balance < 0: - raise NegativeBalance - - participant.set_attributes(balance=balance) - - def record_transfer(self, cursor, tipper, tippee, amount, context): cursor.run("""\ @@ -889,35 +603,22 @@ def mark_missing_funding(self): """, default=NoPayday) - def mark_charge_failed(self, cursor): - STATS = """\ + def mark_charge_failed(self): + self.db.one("""\ UPDATE paydays SET ncc_failing = ncc_failing + 1 WHERE ts_end='1970-01-01T00:00:00+00'::timestamptz RETURNING id - """ - cursor.execute(STATS) - assert cursor.fetchone() is not None - - - def mark_ach_failed(self, cursor): - cursor.one("""\ - - UPDATE paydays - SET nach_failing = nach_failing + 1 - WHERE ts_end='1970-01-01T00:00:00+00'::timestamptz - RETURNING id - """, default=NoPayday) - def mark_participant(self): + def mark_ach_failed(self): self.db.one("""\ UPDATE paydays - SET nparticipants = nparticipants + 1 + SET nach_failing = nach_failing + 1 WHERE ts_end='1970-01-01T00:00:00+00'::timestamptz RETURNING id diff --git a/gittip/exceptions.py b/gittip/exceptions.py index a75fb6fd1e..9e1bd1d340 100644 --- a/gittip/exceptions.py +++ b/gittip/exceptions.py @@ -44,3 +44,6 @@ class FailedToReserveUsername(Exception): pass class NegativeBalance(Exception): def __str__(self): return "Negative balance not allowed in this context." + +class NotWhitelisted(Exception): pass +class NoBalancedCustomerHref(Exception): pass diff --git a/gittip/models/_mixin_team.py b/gittip/models/_mixin_team.py index 5a866b267f..d4cea3559b 100644 --- a/gittip/models/_mixin_team.py +++ b/gittip/models/_mixin_team.py @@ -29,7 +29,7 @@ def show_as_team(self, user): return False if user.ADMIN: return True - if not self.get_takes(): + if not self.get_current_takes(): if self == user.participant: return True return False @@ -39,7 +39,7 @@ def add_member(self, member): """Add a member to this team. """ assert self.IS_PLURAL - if len(self.get_takes()) == 149: + if len(self.get_current_takes()) == 149: raise MemberLimitReached if not member.is_claimed: raise StubParticipantAdded @@ -65,7 +65,7 @@ def member_of(self, team): """Given a Participant object, return a boolean. """ assert team.IS_PLURAL - for take in team.get_takes(): + for take in team.get_current_takes(): if take['member'] == self.username: return True return False @@ -180,56 +180,17 @@ def update_taking(self, old_takes, new_takes, cursor=None, member=None): if member and username == member.username: member.set_attributes(**r._asdict()) - def get_takes(self, for_payday=False, cursor=None): + def get_current_takes(self, cursor=None): """Return a list of member takes for a team. - - This is implemented parallel to Participant.get_tips_and_total. See - over there for an explanation of for_payday. - """ assert self.IS_PLURAL - - args = dict(team=self.username) - - if for_payday: - args['ts_start'] = for_payday - - # Get the takes for this team, as they were before ts_start, - # filtering out the ones we've already transferred (in case payday - # is interrupted and restarted). - - TAKES = """\ - - SELECT * FROM ( - SELECT DISTINCT ON (member) t.* - FROM takes t - JOIN participants p ON p.username = member - WHERE team=%(team)s - AND mtime < %(ts_start)s - AND p.is_suspicious IS NOT true - AND ( SELECT id - FROM transfers - WHERE tipper=t.team - AND tippee=t.member - AND context='take' - AND timestamp >= %(ts_start)s - ) IS NULL - ORDER BY member, mtime DESC - ) AS foo - ORDER BY ctime DESC - - """ - else: - TAKES = """\ - - SELECT member, amount, ctime, mtime - FROM current_takes - WHERE team=%(team)s - ORDER BY ctime DESC - - """ - - records = (cursor or self.db).all(TAKES, args) + TAKES = """ + SELECT member, amount, ctime, mtime + FROM current_takes + WHERE team=%(team)s + ORDER BY ctime DESC + """ + records = (cursor or self.db).all(TAKES, dict(team=self.username)) return [r._asdict() for r in records] def get_team_take(self, cursor=None): @@ -250,7 +211,7 @@ def compute_actual_takes(self, cursor=None): """Get the takes, compute the actual amounts, and return an OrderedDict. """ actual_takes = OrderedDict() - nominal_takes = self.get_takes(cursor=cursor) + nominal_takes = self.get_current_takes(cursor=cursor) nominal_takes.append(self.get_team_take(cursor=cursor)) budget = balance = self.balance + self.receiving for take in nominal_takes: diff --git a/gittip/models/participant.py b/gittip/models/participant.py index f35d500df3..6d3bcc1878 100644 --- a/gittip/models/participant.py +++ b/gittip/models/participant.py @@ -275,28 +275,13 @@ def close(self, disbursement_strategy): self.update_is_closed(True, cursor) - class NotWhitelisted(Exception): pass - class NoBalancedCustomerHref(Exception): pass - def withdraw_balance_to_bank_account(self, cursor): - if self.is_suspicious in (True, None): - raise self.NotWhitelisted - if self.balanced_customer_href is None: - raise self.NoBalancedCustomerHref - - from gittip.billing.payday import Payday - hack = Payday(self.db) # Our payout code is on the Payday object. Rather than - # refactor right now, let's just use it from there. - - # Monkey-patch a couple methods, coopting them for callbacks, essentially. - hack.mark_ach_failed = lambda cursor: None - - hack.ach_credit( ts_start=None # not used - , participant=self - , tips=None # not used - , total=Decimal('0.00') # don't withold anything - , minimum_credit=Decimal('0.00') # send it all - ) # XXX Records the exchange using a different cursor. :-/ + from gittip.billing.exchanges import ach_credit + ach_credit( self.db + , self + , Decimal('0.00') # don't withhold anything + , Decimal('0.00') # send it all + ) class NoOneToGiveFinalGiftTo(Exception): pass @@ -848,55 +833,10 @@ def get_giving_for_profile(self): return tips, total, unclaimed_tips, unclaimed_total - def get_tips_and_total(self, for_payday=False): - """Given a participant id and a date, return a list and a Decimal. - - This function is used by the payday function. If for_payday is not - False it must be a date object. Originally we also used this function - to populate the profile page, but our requirements there changed while, - oddly, our requirements in payday *also* changed to match the old - requirements of the profile page. So this function keeps the for_payday - parameter after all. - + def get_current_tips(self): + """Get the tips this participant is currently sending to others. """ - - if for_payday: - - # For payday we want the oldest relationship to be paid first. - order_by = "ctime ASC" - - - # This is where it gets crash-proof. - # ================================== - # We need to account for the fact that we may have crashed during - # Payday and we're re-running that function. We only want to select - # tips that existed before Payday started, but haven't been - # processed as part of this Payday yet. - # - # It's a bug if the paydays subselect returns > 1 rows. - # - # XXX If we crash during Payday and we rerun it after a timezone - # change, will we get burned? How? - - ts_filter = """\ - - AND mtime < %s - AND ( SELECT id - FROM transfers - WHERE tipper=t.tipper - AND tippee=t.tippee - AND timestamp >= %s - ) IS NULL - - """ - args = (self.username, for_payday, for_payday) - else: - order_by = "amount DESC" - ts_filter = "" - args = (self.username,) - - TIPS = """\ - + TIPS = """ SELECT * FROM ( SELECT DISTINCT ON (tippee) amount @@ -905,34 +845,15 @@ def get_tips_and_total(self, for_payday=False): , p.claimed_time FROM tips t JOIN participants p ON p.username = t.tippee - WHERE tipper = %%s + WHERE tipper = %s AND p.is_suspicious IS NOT true - %s ORDER BY tippee , t.mtime DESC ) AS foo - ORDER BY %s + ORDER BY amount DESC , tippee - - """ % (ts_filter, order_by) # XXX, No injections here, right?! - tips = self.db.all(TIPS, args, back_as=dict) - - - # Compute the total. - # ================== - # For payday we only want to process payments to tippees who have - # themselves opted into Gittip. For the tipper's profile page we want - # to show the total amount they've pledged (so they're not surprised - # when someone *does* start accepting tips and all of a sudden they're - # hit with bigger charges. - - if for_payday: - to_total = [t for t in tips if t['claimed_time'] is not None] - else: - to_total = tips - total = sum([t['amount'] for t in to_total], Decimal('0.00')) - - return tips, total + """ + return self.db.all(TIPS, (self.username,), back_as=dict) def get_og_title(self): diff --git a/tests/py/fixtures/BalancedHarness.yml b/tests/py/fixtures/BalancedHarness.yml index a8cbaeb1b3..496ee65a20 100644 --- a/tests/py/fixtures/BalancedHarness.yml +++ b/tests/py/fixtures/BalancedHarness.yml @@ -6,10 +6,10 @@ interactions: uri: https://api.balancedpayments.com:443/api_keys response: body: {string: !!python/unicode "{\n \"links\": {},\n \"api_keys\": [\n {\n - \ \"links\": {},\n \"created_at\": \"2014-07-01T11:32:21.176697Z\",\n - \ \"secret\": \"ak-test-i2BYNzhi88y5uxqw4Rcw738sk2rjLWiY\",\n \"href\": - \"/api_keys/AK2QkRBCbioFJrtCGdS61egF\",\n \"meta\": {},\n \"id\": - \"AK2QkRBCbioFJrtCGdS61egF\"\n }\n ]\n}"} + \ \"links\": {},\n \"created_at\": \"2014-07-01T15:43:42.734567Z\",\n + \ \"secret\": \"ak-test-W2FghBPvv0YNgaln7waeGwjVoH7oq1A6\",\n \"href\": + \"/api_keys/AK3JDxCRGTrpx6szS4xRqFxn\",\n \"meta\": {},\n \"id\": + \"AK3JDxCRGTrpx6szS4xRqFxn\"\n }\n ]\n}"} headers: content-length: ['289'] content-type: [application/json] @@ -22,20 +22,20 @@ interactions: response: body: string: !!binary | - H4sIAAAAAAAAA5VUTW/bMAy991cEPuyyJfFngQQotrXZZe3QYE0xbMNgyBaNeJElQ5aabEH++2hZ - rmNMKLZLQFKP5CP54uPFZOJVoIi3nBzRRo+RRqHnzSsid6BqRnJo3rKyKtVVmLwSRdGAuvK9Nx2c - w6GFc82YjWwlFP9RwFRGfJjY/K4DRnwbqCU8lUI34zZKKMIwFFhUUcp/I468T22Odz4gFvpuBuq2 - gK8lT6HJpdi3PXw/DhZ+2LXCRyoqggAtWwYeHEhVM5jlorJrQQgnFbSPa52xMp+s4Gl4YyXfteP0 - zRAu9hxkmutGiQpkm3jzGOwfi693q+xud7++pcFn+L29PmSe4WmHMCdzbny++fCwmX5aB/vNr8Pq - /cfbG/Jl/fP6Ib5nZUwHLrkEooCmxFw99IN46ifTMN740TK8XIaL2WIRxVH8bUhpdF0LqVLAJbCU - UCqhacfx7MM750J0TV9qFPmzKIj8JHA0qreCQ8p1lXWreR1cJn6SJEEYxQOtWgqqc1UKjlwKwhp4 - vlcvcXN4szPNUcaK4eAFQEveqq29PG1neXl9pswJf38YKY0POlLWjEJWKrOeuTWtYs/1N0ONg2yQ - tAEOngtLy6bWyrDGmr3jQvZ66qCD58RKoD1RFIWxnTgiqa1nLBdGSIrTGH7WdKFyzE+3gp2Vs64L - jZ8VzS20t124v/9J8+fB58fR0sfQk3MUJQlviJFVN9Ao4CKQEb5LSZ4Lze3dxxFXTk4Yy0huvgre - fPBcWFRKX9ia7Sft4vQHQlHAFs0FAAA= + H4sIAAAAAAAAA5VUTW/bMAy991cEPuyyNfFnhwQotrXZZe3QYE0xbMNgyBaNeJElQ5aadEH++2hZ + rmNMKLZLQFKP5CP54sPZZOJVoIi3mBzQRo+RRqHnzSoit6BqRnJo3rGyKtVlmLwSRdGAuvS9Nx2c + w76Fc82YjWwkFP9RwFRGfJjY/K4DRnwbqCU8lkI34zZKKMIwFFhUUcp/I468j22OdzogFvphBuq2 + gK8lT6HJpdi1PXw/Cd+GcdcKH6moCAK0bBl4sCdVzWCai8quBSGcVNA+rnTGynyyhMfhjZV8247T + N0O42HGQaa4bJSqQbeL1Q7B7KL7dLrPb7d3qhgZf4Pfmap95hqcdwpzMufHZ+uP9+vzzKtitn/bL + D59ursnX1a+r+/iOlTEduOQSiAKaEnP10A/icz85D+O1Hy3Ci0U4n87nURzF34eURte1kCoFXAJL + CaUSmnYczz68dy5E1/SlRpE/jYLITwJHo3ojOKRcV1m3mtfBReInSRKEUTzQqqWgOlel4MilIKyB + 53v1EjeHNzvTHGWsGA5eALTkrdray9N2lpfXZ8oc8fenkdL4oCNlTSlkpTLrmVnTKvZUf1PUOMgG + SRvg4LmwtGxqrQxrrNk7LmSvpw46eE6sBNoTRVEY24kjktp6xnJhhKQ4jeFnTRcqx/x0I9hJOeu6 + 0PhZ0dxCe9uF+/ufNHsefHYYLX0MPTpHUZLwhhhZdQONAi4CGeHblOS50NzefRxx5eSEsYzk5qvg + zQbPhUWl9IWt2X7Szo5/AKMg5n7NBQAA headers: content-encoding: [gzip] - content-length: ['593'] + content-length: ['594'] content-type: [application/json] status: {code: 200, message: OK} - request: @@ -46,9 +46,9 @@ interactions: response: body: {string: !!python/unicode "{\n \"customers\": [\n {\n \"name\": null,\n \"links\": {\n \"source\": null,\n \"destination\": - null\n },\n \"updated_at\": \"2014-07-01T11:32:21.952391Z\",\n \"created_at\": - \"2014-07-01T11:32:21.838223Z\",\n \"dob_month\": null,\n \"id\": - \"CU2R4ZqaRKDZoW1GpfgeKFbr\",\n \"phone\": null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr\",\n + null\n },\n \"updated_at\": \"2014-07-01T15:43:43.537316Z\",\n \"created_at\": + \"2014-07-01T15:43:43.416311Z\",\n \"dob_month\": null,\n \"id\": + \"CU3KoKRb123DPYH3y6rw4OmF\",\n \"phone\": null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF\",\n \ \"merchant_status\": \"no-match\",\n \"meta\": {\n \"seq\": \"0\"\n },\n \"dob_year\": null,\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \"state\": @@ -77,9 +77,9 @@ interactions: response: body: {string: !!python/unicode "{\n \"customers\": [\n {\n \"name\": null,\n \"links\": {\n \"source\": null,\n \"destination\": - null\n },\n \"updated_at\": \"2014-07-01T11:32:22.451880Z\",\n \"created_at\": - \"2014-07-01T11:32:22.324563Z\",\n \"dob_month\": null,\n \"id\": - \"CU2RCigJCqQDdYQEcThv3Jxr\",\n \"phone\": null,\n \"href\": \"/customers/CU2RCigJCqQDdYQEcThv3Jxr\",\n + null\n },\n \"updated_at\": \"2014-07-01T15:43:44.133689Z\",\n \"created_at\": + \"2014-07-01T15:43:43.910534Z\",\n \"dob_month\": null,\n \"id\": + \"CU3KXdyvNSDeyLP3pAWr9hqd\",\n \"phone\": null,\n \"href\": \"/customers/CU3KXdyvNSDeyLP3pAWr9hqd\",\n \ \"merchant_status\": \"no-match\",\n \"meta\": {\n \"seq\": \"1\"\n },\n \"dob_year\": null,\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \"state\": @@ -114,17 +114,17 @@ interactions: \ \"cvv_result\": null,\n \"number\": \"xxxxxxxxxxxx1111\",\n \"avs_postal_match\": \"no\",\n \"expiration_month\": 10,\n \"meta\": {\n \"region\": \"Confusion\",\n \"city_town\": \"\",\n \"address_2\": \"Box - 2\"\n },\n \"id\": \"CC2SGPDNPBU0oOKbaes9tqC1\",\n \"category\": + 2\"\n },\n \"id\": \"CC3MHBsW6vHaL3suLVdTVbO9\",\n \"category\": \"other\",\n \"type\": \"credit\",\n \"cvv_match\": null,\n \"bank_name\": \"JPMORGAN CHASE BANK, N.A.\",\n \"avs_street_match\": \"yes\",\n \"brand\": - \"Visa\",\n \"updated_at\": \"2014-07-01T11:32:23.284439Z\",\n \"address\": + \"Visa\",\n \"updated_at\": \"2014-07-01T15:43:45.463915Z\",\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": \"123 Main Street\",\n \"state\": \"Confusion\",\n \"postal_code\": \"90210\",\n \"country_code\": null\n },\n \"can_debit\": true,\n \"name\": null,\n \"expiration_year\": 2020,\n \"cvv\": null,\n \"is_verified\": true,\n \"avs_result\": \"Street address and postal code do not match.\",\n \"can_credit\": false,\n \"href\": - \"/cards/CC2SGPDNPBU0oOKbaes9tqC1\",\n \"created_at\": \"2014-07-01T11:32:23.284437Z\"\n + \"/cards/CC3MHBsW6vHaL3suLVdTVbO9\",\n \"created_at\": \"2014-07-01T15:43:45.463913Z\"\n \ }\n ],\n \"links\": {\n \"cards.card_holds\": \"/cards/{cards.id}/card_holds\",\n \ \"cards.customer\": \"/customers/{cards.customer}\",\n \"cards.disputes\": \"/cards/{cards.id}/disputes\",\n \"cards.debits\": \"/cards/{cards.id}/debits\"\n @@ -137,38 +137,38 @@ interactions: content-type: [application/json] status: {code: 201, message: CREATED} - request: - body: '{"links": {"customer": "/customers/CU2RCigJCqQDdYQEcThv3Jxr"}, "cvv_result": + body: '{"links": {"customer": "/customers/CU3KXdyvNSDeyLP3pAWr9hqd"}, "cvv_result": null, "number": "xxxxxxxxxxxx1111", "expiration_month": 10, "meta": {"region": - "Confusion", "city_town": "", "address_2": "Box 2"}, "id": "CC2SGPDNPBU0oOKbaes9tqC1", + "Confusion", "city_town": "", "address_2": "Box 2"}, "id": "CC3MHBsW6vHaL3suLVdTVbO9", "category": "other", "is_verified": true, "type": "credit", "cvv_match": null, "bank_name": "JPMORGAN CHASE BANK, N.A.", "avs_street_match": "yes", "brand": - "Visa", "updated_at": "2014-07-01T11:32:23.284439Z", "fingerprint": "8c7f0423365af88c3e36cf02746eca64fdcf36ddc2e1f398c7ec9f3ffd05a267", + "Visa", "updated_at": "2014-07-01T15:43:45.463915Z", "fingerprint": "8c7f0423365af88c3e36cf02746eca64fdcf36ddc2e1f398c7ec9f3ffd05a267", "can_debit": true, "name": null, "expiration_year": 2020, "can_credit": false, "avs_postal_match": "no", "avs_result": "Street address and postal code do not - match.", "cvv": null, "created_at": "2014-07-01T11:32:23.284437Z", "address": + match.", "cvv": null, "created_at": "2014-07-01T15:43:45.463913Z", "address": {"city": null, "line2": null, "line1": "123 Main Street", "state": "Confusion", "postal_code": "90210", "country_code": null}}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/cards/CC2SGPDNPBU0oOKbaes9tqC1 + uri: https://api.balancedpayments.com:443/cards/CC3MHBsW6vHaL3suLVdTVbO9 response: body: string: !!binary | - H4sIAAAAAAAAA41U207jMBB95yusPEObOKFN+1YKYgWi3FdaVqvI9aW1SO1iO91WqP++tpM0CbDa - 9UOkzMVz5szxvB8BEGCkiA7G4Kf9AeDdf6055+LVmWuDiyy0kSuqrDWYPsOHKV9cTd/uz8mP+wv8 - tNzEV1sVVPn74/oixsWCqrXiwrjEFA9ZmMA4HpwilqY4pvEAsxAOkwHFaJAwglk8IARDGrF4ZMMp - HrGYMRKeIjgYBoeL8WaTKaqL3N0rijw/eESxmpcwt60T2dNko43O1lIblGcrZPDSYROy8dPtmitk - uBTZSgrj/FF4qLCiBnXJUXRhYz01UrBCu5863HHHzS4z8rePaDsQIbYJnUHnOJNbAD9TyIm/dwof - L+/OZ3dnz6G8vZ4jqkfmbdrqCSNDF1LtXLQ0S0vBAbDZrakzY0UJN10S6/47HM6ReM0EWvmsq7ub - 24fLyQxMv00eL8DZZHZ9DGa9Sa/LpzaKUtPwuaO6CZgrJHwf37lGjblYE4uaZMirA4ZRchIOT8Lo - KYrGMRzDuJemKUxGL61SJWU2vi1OS7C1tHsoVUwds1+YI1cvgjG4QVyARw+9PRgrDeOb/3KelXSw - JD5mFMIobGdjWQijdlkV4Op/ehkYiYzQuR3HGBhV0Ea/Je2debT0uKPIvUEYwkaQ9jF8aDPgOttQ - xRmnjvZOASf+w9MJyt5BpURgxwTK9oBDD4gEQhrgVdIauENfqWkMGMp1g3+pKHOs9P1u6f+HcBX9 - hwhgmiTx8KV8G3tL5S/H1octVe6ynquaLWXu11oN4t1j6XGy96gqf0l5ndfab/162el+lVkb9tWY - qyTC9bowVuhfljp4O4X80P+WUfpsc/uj/R/ViBIhoQUAAA== + H4sIAAAAAAAAA41UW0/bMBR+51dYeYY2idP08lbYNDSgQ4PBxDRFri/UIrUz2+mIUP/7bCdpEmDa + /BAp5+Lzne98Pi9HAAQYKaKDBfhhfwB48V9rzrl4cubW4CJLbeSWKmsNzr7Bi++k2q1uPtDq8hoW + y3s13/wiQZO/P24vYlw8UlUoLoxLnOEpC5MYwnSC2GyGIYUpZmE8TVKKUZowghlMCcExjRic23CK + 5wwyRsIJitNpcLgY73aZorrM3b2izPODR5TbdQ3zuXcie7pstNNZIbVBebZFBm8cNiE7P30uuEKG + S5FtpTDOH4WHCltq0JAcRR9trKdGClZq99OGO+64qTIjf/uIvgMRYpvQWewcp/IZxG8p5MTfewav + zk/1fbo7R5dQl5d35PZu/WXeYwQZ+ihV5aKl2VgKDoBNVVBnxooSboYktv0POFwj8ZQJtPVZn6+v + vnz9tFyBs/PlzUdwulxdHIPVaDka8qmNotR0fFZUdwFrhYTv445r1JnLgljUJENeHXEYJSfh9CSM + bqPJIoGLZDKaTaIYRg+9UjVlNr4vTkuwtfR7qFVMHbPvmCNXz94MrhAX4MZD7w/GSsP45t+dZyMd + LImPmYdxFPazsSyFUVXWBLj6b14GRiIjdG3HsQBGlbTTb037YB49PVYUuTcYh3EnSPsYXrUZcJ3t + qOKMU0f7oIAT/+HpBHXvoFEisGMCdXvAoQdEAiEN8CrpDdyhb9S0AAzlusO/UZQ5VsZ+t4z/Q7iK + /kMESQrnEXyo38beUvnTsfVqS9W7bOSqZhuZ+7XWgnjxWEac7D2qxl9T3ub19tu4XXZ63GS2hn0z + 5iaJcF2Uxgr93VIH76CQH/rfMmqfbW5/tP8Dq5w30qEFAAA= headers: content-encoding: [gzip] - content-length: ['661'] + content-length: ['662'] content-type: [application/json] status: {code: 200, message: OK} - request: @@ -179,9 +179,9 @@ interactions: response: body: {string: !!python/unicode "{\n \"customers\": [\n {\n \"name\": null,\n \"links\": {\n \"source\": null,\n \"destination\": - null\n },\n \"updated_at\": \"2014-07-01T11:32:24.889772Z\",\n \"created_at\": - \"2014-07-01T11:32:24.783468Z\",\n \"dob_month\": null,\n \"id\": - \"CU2Uomy8gvhh6SdpAqQO2wHv\",\n \"phone\": null,\n \"href\": \"/customers/CU2Uomy8gvhh6SdpAqQO2wHv\",\n + null\n },\n \"updated_at\": \"2014-07-01T15:43:46.754060Z\",\n \"created_at\": + \"2014-07-01T15:43:46.652179Z\",\n \"dob_month\": null,\n \"id\": + \"CU3O2IKYocPZ5LA7GkZWpwKZ\",\n \"phone\": null,\n \"href\": \"/customers/CU3O2IKYocPZ5LA7GkZWpwKZ\",\n \ \"merchant_status\": \"no-match\",\n \"meta\": {\n \"seq\": \"2\"\n },\n \"dob_year\": null,\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \"state\": @@ -213,13 +213,13 @@ interactions: \"121042882\",\n \"bank_name\": \"WELLS FARGO BANK NA\",\n \"account_type\": \"checking\",\n \"name\": \"Homer Jay\",\n \"links\": {\n \"customer\": null,\n \"bank_account_verification\": null\n },\n \"can_credit\": - true,\n \"created_at\": \"2014-07-01T11:32:25.564498Z\",\n \"fingerprint\": + true,\n \"created_at\": \"2014-07-01T15:43:49.076855Z\",\n \"fingerprint\": \"dac6514d9dd3a1cd7ac925d5749e0308c2c65fa27c506aefb0c9b21611ff9969\",\n \"updated_at\": - \"2014-07-01T11:32:25.564501Z\",\n \"href\": \"/bank_accounts/BA2Vg7rBg6MrZmOr6xyqEYcd\",\n + \"2014-07-01T15:43:49.076857Z\",\n \"href\": \"/bank_accounts/BA3QLnsEGgrsjqfhXh43Pq4d\",\n \ \"meta\": {},\n \"account_number\": \"xxx233a\",\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \ \"state\": null,\n \"postal_code\": null,\n \"country_code\": - null\n },\n \"can_debit\": false,\n \"id\": \"BA2Vg7rBg6MrZmOr6xyqEYcd\"\n + null\n },\n \"can_debit\": false,\n \"id\": \"BA3QLnsEGgrsjqfhXh43Pq4d\"\n \ }\n ],\n \"links\": {\n \"bank_accounts.credits\": \"/bank_accounts/{bank_accounts.id}/credits\",\n \ \"bank_accounts.bank_account_verifications\": \"/bank_accounts/{bank_accounts.id}/verifications\",\n \ \"bank_accounts.customer\": \"/customers/{bank_accounts.customer}\",\n @@ -235,28 +235,28 @@ interactions: status: {code: 201, message: CREATED} - request: body: '{"routing_number": "121042882", "bank_name": "WELLS FARGO BANK NA", "account_type": - "checking", "name": "Homer Jay", "links": {"customer": "/customers/CU2Uomy8gvhh6SdpAqQO2wHv"}, - "can_credit": true, "created_at": "2014-07-01T11:32:25.564498Z", "fingerprint": + "checking", "name": "Homer Jay", "links": {"customer": "/customers/CU3O2IKYocPZ5LA7GkZWpwKZ"}, + "can_credit": true, "created_at": "2014-07-01T15:43:49.076855Z", "fingerprint": "dac6514d9dd3a1cd7ac925d5749e0308c2c65fa27c506aefb0c9b21611ff9969", "updated_at": - "2014-07-01T11:32:25.564501Z", "meta": {}, "account_number": "xxx233a", "address": + "2014-07-01T15:43:49.076857Z", "meta": {}, "account_number": "xxx233a", "address": {"city": null, "line2": null, "line1": null, "state": null, "postal_code": null, - "country_code": null}, "can_debit": false, "id": "BA2Vg7rBg6MrZmOr6xyqEYcd"}' + "country_code": null}, "can_debit": false, "id": "BA3QLnsEGgrsjqfhXh43Pq4d"}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/bank_accounts/BA2Vg7rBg6MrZmOr6xyqEYcd + uri: https://api.balancedpayments.com:443/bank_accounts/BA3QLnsEGgrsjqfhXh43Pq4d response: body: string: !!binary | - H4sIAAAAAAAAA5VTW2+bMBh9769APK8Bm3veyNSt2rpGW9dW6zQhY5sEhVuNSYMi/vtsCuXSdOpe - /ODzcTiXz8czRVFDlO0ChHFeZbxUl8pvcakox/YUMMsrHmebIKvSkDKBqwAC3YSuC9UP/VDLkaGU - Svz+4urqRvnk//i8Vlb+9Vfl2h8mux8FvC7aYbyleCf4h4me5jJPKVO+oHqAkjjbSYm9OCEPVyWX - g5Lr4y28zdPa3ey3W/uGFP7j9zV8uty/EMzcBnvK4ijGiMd5JgiyKkk6R82LNYyyADNKYi4mOKvo - gDCKOCUBkogKdWCe6865Dn4CsDTgEloLyzZNz30YDETCKWUFi7P2G4KwbQGTeIQYCGDiIOxBi1iO - 6VHd0F0MBR4h6GBLtxGNQh17IQQ2AFHkebY3EFcF+acWewFtz7LMkZYto5EUoU0WQFv58G7jsNXG - /sYe0jWzD/XjxS9Mhn+llCNZwpBRX+qwI4fDARoGGvVOCKPlvLyY113ufaqiItEyhaevwevrkgvj - r6+LXABJgHNyAmx3ndVj9GTvhIZt7RFKyqH3mMjY3sypZWrE+Ud6km5GOzt9bYvnxZKpzGs4TlpZ - xKTR+uHnqGZM4/HJXr+TfPwUyq62udjRU9P6d1dqM6U90JwmaSN9p6Zu9v/8tllO3MwVvhlVo4rC - mrPmL7GaaGsXBQAA + H4sIAAAAAAAAA5VTW2+bMBh9769APK+JbW4hb3Tqsi1R293ULdOEjG0aFmKoMV2iiP8+m0K5NNW6 + Fx58Po7P5fPxzDDMCPNtiAnJSi4Lc278VIeGcay/ChZZKRN+F/JyFzGhcBMiCGw0myHzTTtUc3C8 + Yxq/vVytvhjvgs+La+MiuFoaV0E32VwUykNeD5MNI1vF3020NO+zHRPGR3zooDThWy2xFafkkbKQ + elBzvf1mXaMPyx8ZuVk7q8BbbNe3+Z/l+olg5DZ8YCKJE4JlknFFwMs0bRxVT9YI5iERjCZSTUhR + sg4RDEtGQ6wREwFonwPvHMCv0Jnb1tz2J8BzZ47T3W/GyikTuUh4/Q/FxHWgTX1KLQwJ9TDxkUMd + z/YZsMCMIIXHGHnEAS5mcQSIHyHoQhjHvu/6XTJlTv+hxQGeA/paNoLFWsR0sADTi8D6tOLF5eJO + FL/v4833jW3d3Nu0u2vHJNYldBm1pXY7st/vkWXhXu+UClaMy0vkocm9TVVVpFpm6PQxfH5cSGX8 + +XGeKSANSUZPgPWui0MfPdk7ZVFde4zTous9oTq2F3OqmSr1/aU9aTe9nR2+tsnjYulUxjUcB61M + ElpN2+HHqEZM/fHBXr+SvP8Uiqa2sdjeU5u2766YjpS2QHWapI70lZqa2f/zW2c5cDNW+GJUlakK + q86qvyivOQsXBQAA headers: content-encoding: [gzip] content-length: ['525'] diff --git a/tests/py/fixtures/TestBalancedBankAccount.yml b/tests/py/fixtures/TestBalancedBankAccount.yml index ab996e2f9a..ffe7ccd3ef 100644 --- a/tests/py/fixtures/TestBalancedBankAccount.yml +++ b/tests/py/fixtures/TestBalancedBankAccount.yml @@ -3,44 +3,44 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIUoxY9S3opbeiaHJpUQg0yUREJFLhw6lh6N+7lCWZJtWw - Fx12Z4bc2RFPN0mSYqO0aKlU6S75BYUkOQ1faHHUUqhy0zSfplrD+KuFTiCAKWEk9oFQJ1RpxpFm - go8qo0g/q5mOIE1JhTQg0mKdb1br7WqdP+b57q7YFZvbsvy83RY/05mCJY1QtuXd5r50KETsq1Zw - XfvDMGKP/fJUPIn2WL4c6vr+B+ke3r5/K96/Hi5ndrXg/oBpLemzpWezg1lcCYzGNeK6UhppY41M - uVi1SOP6clxLNfIspm+DQWngoJ3tSJH0R0OESKq8TWGmjx4Q9gQrpcVyOQ/L9uK+FyDSCWg0FRZk - oYmF4Voe3W4wyN4ouIdS1VLqlOJVg5Te+GPSFrEmKLKrwPVw1m+bHzupE95L9G/nCKcZuDbkWWWn - ebFjvx9X5BAxkqSqRUOGVTpRcMiM9JmDOyfZ0dgj/lohPJgUkbmGBkqE7llMYsQscN2/9R8+OL/0 - ghn0j6aSQwr+b5gQHlzK2hax5AwJmISpzmgaIc+ogK8l4gph+3hFNK6QgQ48EobHZphAC+wDvMyo - iVxB0gkWKAhJzm/7B+EcMQEXnloSzdMEgv+rv+n/AqhHO/tTBgAA + H4sIAAAAAAAAA41UTY/TMBS876+IcqabpJu2orcVB4QWCQ4gRBGKXNsoVhM7+AOoqvx3ntMk69oB + 7yWH55mJ37zxu9wlSYqN0qKlUqX75BsUkuQyfOGIo5ZClZumeTXVGsZPFjqBAKaEkdgHQp1QpRlH + mgk+qowi/axmOoI0JRXSgEjXeVGu8t0qLz4Vm335sC+397tNmW/zQzpTsKQRynazLnavHQoRx6oV + XNd+M4zY3775/PBh/e7pq8AfD5v3j7u3p8OX7veTI9DVgvsNprWkPyw9mx3M4kpgNK4R15XSSBtr + ZMrFqkUa188ttlQjz2L6czAoDRy0vZ0pkn5riBBJlTcpzPTZA8KcYKR0vVwuwrK9uO8FiHQCDpoK + C7JwiIXhWp7d06CRo1FwD6WqpdQpxasGKV36bdIWsSYospvA9fCv7zY/tlMnvM/Rv58jnGbg2pBn + lV3mwY7n/Tgih4iRJFUtGjKM0omCQ2akzxzcNcmOxhHxU4XwYFJE5hYaKBF6ZDGJEbPAdV/rP3xw + nvSCGfSPppJDCl7WTAgPLmVti1hyhQRMwlRnNI2QZ1TA1xJxhbBdXhGNG2SgA0vC8FgPE2iB/Qs2 + M2oiV5B0ggUKQpLrbv9POEdMwIVVS6J5mkDwvvq7/i9xeE/EUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['496'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv/bank_accounts?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ/bank_accounts?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA7VUXW/aMBR976+I8tCnFWKTBIKEJpi6VVtXtLXdtE5TZGwHLPJVx2EglP8+2yQk - oWTqS18icc/1veeec7n7C8MwFyhe+wjjJI9FZo6N3zJoGHv9lTBPcsHipR/n0YJyiZsAAsuGoxE0 - 31VJukaMIqrwn9e3t/fGx+n3T3NjNr37YtxN68yykS92qU7GK4rXsn6dUZW5SSLKjc9oV0Mhi9eK - YkVO0sN5JlSiqvXhET4m0W603KxW7j1Jp8/f5vDvzeZY4GRaf0M5CxhGgiWxLBDnYVhOVBxHwyj2 - MaeECZkheE5rhFMkKPGRQkxoAfvKGl5Z4AGA8QCOodNzXNv2Rk/1AIGclPKUs1i/IQi7DrCJR8gA - AUyGCHvQIc7Q9qg1sEYYSjxAcIgdy0U0WFjYW0DgAhAEnud6deE8Jf/l4vag6zmO3eCy4jRQJPqt - BejPpvDHcshnS/crf4rm3N3unq9/YVL3iqhAyoRao8rUeke22y0cDFDDd0I4zU7NY2JX6l6pKi2S - LlN4PgxehjMhB38ZThMJhD5OyBlQ7zrfNdGzvhO60LYHKMxq3xlRsnXqpCsV8vtHzWRWaumwGaJM - O9+v9jbrd21t25f3LPM3KGRk8iB38DJkERMTYF0mQZBRMbFKpc2YblUDtcoHSc2jz2/VUnORPYFV - djxwkpEqkHK6YUmu3G8QE4l0SL0rnwWMv5U4Uny9rWq3Ghekfft62m5F8vQ/sW/9RXqMFP0yt6Te - xpu/WjfmlbWbZymrjG23aJ69xi6dEK2yio4i+qy9ktThBnbQ6ZxYi9map3/CsfNpYSrXLop/NxcR - yKUGAAA= + H4sIAAAAAAAAA7VUXW/aMBR976+I8tCntbHzQQgSmujUsQ3UdlunbkxTZGyneIQkdRwKQvz32SYh + CQWtL32JxD3X9557zuVuzgzDnKJkHiKM0yIRudkzfsugYWz0V8I8LQRLHsOkWEwpl7gJbQhcu9u1 + zXdVkq6RoAVV+MP1ePzd+Dj4Nrw1rgY3I+NmUGeWjUKxznQynlE8l/XrjKrMp3RBufEFrWsoZslc + UazISXq4yIVKVLU+/HBu7c+jXym+m3jjgT+cTx6y59FkX+Bg2nBJOYsYRoKliSyQFHFcTrTdj4ZR + EmJOCRMyQ/CC1ginSFASIoWYNoDuBfAvALyHXs91em5wCfxO1/Pq/mYkJ6U84yzRbwjCHQ+6JCDE + QRATH+HA9ojnuwEFDuhiW+IRsn3sgQ6i0RTgYGrDDoRRFASdoFamyMh/uHjA90CTy4zTSJGwWgtg + XQ2cr+Mkvx4+8vzvUzT7OXOduyeX1L0WVCBlQq1RZWq9I6vVynYc1PCdEE7zQ/OYWJe6V6pKi6TL + 1D4ehi/DuZCDvwxnqQTiEKfkCKh3na+b6FHfCZ1q2yMU57XvjCjZTuqkK23l94+ayazU0mEzRrl2 + 3qr2NrdObW3bl/csD5coZqR/L3fwPGYLJvoQnKdRlFPRB6XSZkJXqoFa5Z2k5t7nt2qpucieEJQd + d5xkpApknC5ZWij3G8REKh1S78pnEeNvJY4UX2+r2q3GBWnfvktttyJ5+J/YtP4il4xsrTK3pN7G + m79aN+aVtZtnKa+Mbbdonr3GLh0QrbK2J4ros/ZKUrsbeILOyYm1mK15rAOOJ59uTeXa2fYfmxyH + ZKUGAAA= headers: content-encoding: [gzip] content-length: ['632'] @@ -50,22 +50,22 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv/bank_accounts?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ/bank_accounts?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA7VUXW/aMBR976+I8tCnFWKTBIKEJpi6VVtXtLXdtE5TZGwHLPJVx2EglP8+2yQk - oWTqS18icc/1veeec7n7C8MwFyhe+wjjJI9FZo6N3zJoGHv9lTBPcsHipR/n0YJyiZsAAsuGoxE0 - 31VJukaMIqrwn9e3t/fGx+n3T3NjNr37YtxN68yykS92qU7GK4rXsn6dUZW5SSLKjc9oV0Mhi9eK - YkVO0sN5JlSiqvXhET4m0W603KxW7j1Jp8/f5vDvzeZY4GRaf0M5CxhGgiWxLBDnYVhOVBxHwyj2 - MaeECZkheE5rhFMkKPGRQkxoAfvKGl5Z4AGA8QCOodNzXNv2Rk/1AIGclPKUs1i/IQi7DrCJR8gA - AUyGCHvQIc7Q9qg1sEYYSjxAcIgdy0U0WFjYW0DgAhAEnud6deE8Jf/l4vag6zmO3eCy4jRQJPqt - BejPpvDHcshnS/crf4rm3N3unq9/YVL3iqhAyoRao8rUeke22y0cDFDDd0I4zU7NY2JX6l6pKi2S - LlN4PgxehjMhB38ZThMJhD5OyBlQ7zrfNdGzvhO60LYHKMxq3xlRsnXqpCsV8vtHzWRWaumwGaJM - O9+v9jbrd21t25f3LPM3KGRk8iB38DJkERMTYF0mQZBRMbFKpc2YblUDtcoHSc2jz2/VUnORPYFV - djxwkpEqkHK6YUmu3G8QE4l0SL0rnwWMv5U4Uny9rWq3Ghekfft62m5F8vQ/sW/9RXqMFP0yt6Te - xpu/WjfmlbWbZymrjG23aJ69xi6dEK2yio4i+qy9ktThBnbQ6ZxYi9map3/CsfNpYSrXLop/NxcR - yKUGAAA= + H4sIAAAAAAAAA7VUXW/aMBR976+I8tCntbHzQQgSmujUsQ3UdlunbkxTZGyneIQkdRwKQvz32SYh + CQWtL32JxD3X9557zuVuzgzDnKJkHiKM0yIRudkzfsugYWz0V8I8LQRLHsOkWEwpl7gJbQhcu9u1 + zXdVkq6RoAVV+MP1ePzd+Dj4Nrw1rgY3I+NmUGeWjUKxznQynlE8l/XrjKrMp3RBufEFrWsoZslc + UazISXq4yIVKVLU+/HBu7c+jXym+m3jjgT+cTx6y59FkX+Bg2nBJOYsYRoKliSyQFHFcTrTdj4ZR + EmJOCRMyQ/CC1ginSFASIoWYNoDuBfAvALyHXs91em5wCfxO1/Pq/mYkJ6U84yzRbwjCHQ+6JCDE + QRATH+HA9ojnuwEFDuhiW+IRsn3sgQ6i0RTgYGrDDoRRFASdoFamyMh/uHjA90CTy4zTSJGwWgtg + XQ2cr+Mkvx4+8vzvUzT7OXOduyeX1L0WVCBlQq1RZWq9I6vVynYc1PCdEE7zQ/OYWJe6V6pKi6TL + 1D4ehi/DuZCDvwxnqQTiEKfkCKh3na+b6FHfCZ1q2yMU57XvjCjZTuqkK23l94+ayazU0mEzRrl2 + 3qr2NrdObW3bl/csD5coZqR/L3fwPGYLJvoQnKdRlFPRB6XSZkJXqoFa5Z2k5t7nt2qpucieEJQd + d5xkpApknC5ZWij3G8REKh1S78pnEeNvJY4UX2+r2q3GBWnfvktttyJ5+J/YtP4il4xsrTK3pN7G + m79aN+aVtZtnKa+Mbbdonr3GLh0QrbK2J4ros/ZKUrsbeILOyYm1mK15rAOOJ59uTeXa2fYfmxyH + ZKUGAAA= headers: content-encoding: [gzip] content-length: ['632'] @@ -75,66 +75,66 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIUoxY9S3opbeiaHJpUQg0yUREJFLhw6lh6N+7lCWZJtWw - Fx12Z4bc2RFPN0mSYqO0aKlU6S75BYUkOQ1faHHUUqhy0zSfplrD+KuFTiCAKWEk9oFQJ1RpxpFm - go8qo0g/q5mOIE1JhTQg0mKdb1br7WqdP+b57q7YFZvbsvy83RY/05mCJY1QtuXd5r50KETsq1Zw - XfvDMGKP/fJUPIn2WL4c6vr+B+ke3r5/K96/Hi5ndrXg/oBpLemzpWezg1lcCYzGNeK6UhppY41M - uVi1SOP6clxLNfIspm+DQWngoJ3tSJH0R0OESKq8TWGmjx4Q9gQrpcVyOQ/L9uK+FyDSCWg0FRZk - oYmF4Voe3W4wyN4ouIdS1VLqlOJVg5Te+GPSFrEmKLKrwPVw1m+bHzupE95L9G/nCKcZuDbkWWWn - ebFjvx9X5BAxkqSqRUOGVTpRcMiM9JmDOyfZ0dgj/lohPJgUkbmGBkqE7llMYsQscN2/9R8+OL/0 - ghn0j6aSQwr+b5gQHlzK2hax5AwJmISpzmgaIc+ogK8l4gph+3hFNK6QgQ48EobHZphAC+wDvMyo - iVxB0gkWKAhJzm/7B+EcMQEXnloSzdMEgv+rv+n/AqhHO/tTBgAA + H4sIAAAAAAAAA41UTY/TMBS876+IcqabpJu2orcVB4QWCQ4gRBGKXNsoVhM7+AOoqvx3ntMk69oB + 7yWH55mJ37zxu9wlSYqN0qKlUqX75BsUkuQyfOGIo5ZClZumeTXVGsZPFjqBAKaEkdgHQp1QpRlH + mgk+qowi/axmOoI0JRXSgEjXeVGu8t0qLz4Vm335sC+397tNmW/zQzpTsKQRynazLnavHQoRx6oV + XNd+M4zY3775/PBh/e7pq8AfD5v3j7u3p8OX7veTI9DVgvsNprWkPyw9mx3M4kpgNK4R15XSSBtr + ZMrFqkUa188ttlQjz2L6czAoDRy0vZ0pkn5riBBJlTcpzPTZA8KcYKR0vVwuwrK9uO8FiHQCDpoK + C7JwiIXhWp7d06CRo1FwD6WqpdQpxasGKV36bdIWsSYospvA9fCv7zY/tlMnvM/Rv58jnGbg2pBn + lV3mwY7n/Tgih4iRJFUtGjKM0omCQ2akzxzcNcmOxhHxU4XwYFJE5hYaKBF6ZDGJEbPAdV/rP3xw + nvSCGfSPppJDCl7WTAgPLmVti1hyhQRMwlRnNI2QZ1TA1xJxhbBdXhGNG2SgA0vC8FgPE2iB/Qs2 + M2oiV5B0ggUKQpLrbv9POEdMwIVVS6J5mkDwvvq7/i9xeE/EUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['496'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIUoxY9S3opbeiaHJpUQg0yUREJFLhw6lh6N+7lCWZJtWw - Fx12Z4bc2RFPN0mSYqO0aKlU6S75BYUkOQ1faHHUUqhy0zSfplrD+KuFTiCAKWEk9oFQJ1RpxpFm - go8qo0g/q5mOIE1JhTQg0mKdb1br7WqdP+b57q7YFZvbsvy83RY/05mCJY1QtuXd5r50KETsq1Zw - XfvDMGKP/fJUPIn2WL4c6vr+B+ke3r5/K96/Hi5ndrXg/oBpLemzpWezg1lcCYzGNeK6UhppY41M - uVi1SOP6clxLNfIspm+DQWngoJ3tSJH0R0OESKq8TWGmjx4Q9gQrpcVyOQ/L9uK+FyDSCWg0FRZk - oYmF4Voe3W4wyN4ouIdS1VLqlOJVg5Te+GPSFrEmKLKrwPVw1m+bHzupE95L9G/nCKcZuDbkWWWn - ebFjvx9X5BAxkqSqRUOGVTpRcMiM9JmDOyfZ0dgj/lohPJgUkbmGBkqE7llMYsQscN2/9R8+OL/0 - ghn0j6aSQwr+b5gQHlzK2hax5AwJmISpzmgaIc+ogK8l4gph+3hFNK6QgQ48EobHZphAC+wDvMyo - iVxB0gkWKAhJzm/7B+EcMQEXnloSzdMEgv+rv+n/AqhHO/tTBgAA + H4sIAAAAAAAAA41UTY/TMBS876+IcqabpJu2orcVB4QWCQ4gRBGKXNsoVhM7+AOoqvx3ntMk69oB + 7yWH55mJ37zxu9wlSYqN0qKlUqX75BsUkuQyfOGIo5ZClZumeTXVGsZPFjqBAKaEkdgHQp1QpRlH + mgk+qowi/axmOoI0JRXSgEjXeVGu8t0qLz4Vm335sC+397tNmW/zQzpTsKQRynazLnavHQoRx6oV + XNd+M4zY3775/PBh/e7pq8AfD5v3j7u3p8OX7veTI9DVgvsNprWkPyw9mx3M4kpgNK4R15XSSBtr + ZMrFqkUa188ttlQjz2L6czAoDRy0vZ0pkn5riBBJlTcpzPTZA8KcYKR0vVwuwrK9uO8FiHQCDpoK + C7JwiIXhWp7d06CRo1FwD6WqpdQpxasGKV36bdIWsSYospvA9fCv7zY/tlMnvM/Rv58jnGbg2pBn + lV3mwY7n/Tgih4iRJFUtGjKM0omCQ2akzxzcNcmOxhHxU4XwYFJE5hYaKBF6ZDGJEbPAdV/rP3xw + nvSCGfSPppJDCl7WTAgPLmVti1hyhQRMwlRnNI2QZ1TA1xJxhbBdXhGNG2SgA0vC8FgPE2iB/Qs2 + M2oiV5B0ggUKQpLrbv9POEdMwIVVS6J5mkDwvvq7/i9xeE/EUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['496'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv/bank_accounts?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ/bank_accounts?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA7VUXW/aMBR976+I8tCnFWKTBIKEJpi6VVtXtLXdtE5TZGwHLPJVx2EglP8+2yQk - oWTqS18icc/1veeec7n7C8MwFyhe+wjjJI9FZo6N3zJoGHv9lTBPcsHipR/n0YJyiZsAAsuGoxE0 - 31VJukaMIqrwn9e3t/fGx+n3T3NjNr37YtxN68yykS92qU7GK4rXsn6dUZW5SSLKjc9oV0Mhi9eK - YkVO0sN5JlSiqvXhET4m0W603KxW7j1Jp8/f5vDvzeZY4GRaf0M5CxhGgiWxLBDnYVhOVBxHwyj2 - MaeECZkheE5rhFMkKPGRQkxoAfvKGl5Z4AGA8QCOodNzXNv2Rk/1AIGclPKUs1i/IQi7DrCJR8gA - AUyGCHvQIc7Q9qg1sEYYSjxAcIgdy0U0WFjYW0DgAhAEnud6deE8Jf/l4vag6zmO3eCy4jRQJPqt - BejPpvDHcshnS/crf4rm3N3unq9/YVL3iqhAyoRao8rUeke22y0cDFDDd0I4zU7NY2JX6l6pKi2S - LlN4PgxehjMhB38ZThMJhD5OyBlQ7zrfNdGzvhO60LYHKMxq3xlRsnXqpCsV8vtHzWRWaumwGaJM - O9+v9jbrd21t25f3LPM3KGRk8iB38DJkERMTYF0mQZBRMbFKpc2YblUDtcoHSc2jz2/VUnORPYFV - djxwkpEqkHK6YUmu3G8QE4l0SL0rnwWMv5U4Uny9rWq3Ghekfft62m5F8vQ/sW/9RXqMFP0yt6Te - xpu/WjfmlbWbZymrjG23aJ69xi6dEK2yio4i+qy9ktThBnbQ6ZxYi9map3/CsfNpYSrXLop/NxcR - yKUGAAA= + H4sIAAAAAAAAA7VUXW/aMBR976+I8tCntbHzQQgSmujUsQ3UdlunbkxTZGyneIQkdRwKQvz32SYh + CQWtL32JxD3X9557zuVuzgzDnKJkHiKM0yIRudkzfsugYWz0V8I8LQRLHsOkWEwpl7gJbQhcu9u1 + zXdVkq6RoAVV+MP1ePzd+Dj4Nrw1rgY3I+NmUGeWjUKxznQynlE8l/XrjKrMp3RBufEFrWsoZslc + UazISXq4yIVKVLU+/HBu7c+jXym+m3jjgT+cTx6y59FkX+Bg2nBJOYsYRoKliSyQFHFcTrTdj4ZR + EmJOCRMyQ/CC1ginSFASIoWYNoDuBfAvALyHXs91em5wCfxO1/Pq/mYkJ6U84yzRbwjCHQ+6JCDE + QRATH+HA9ojnuwEFDuhiW+IRsn3sgQ6i0RTgYGrDDoRRFASdoFamyMh/uHjA90CTy4zTSJGwWgtg + XQ2cr+Mkvx4+8vzvUzT7OXOduyeX1L0WVCBlQq1RZWq9I6vVynYc1PCdEE7zQ/OYWJe6V6pKi6TL + 1D4ehi/DuZCDvwxnqQTiEKfkCKh3na+b6FHfCZ1q2yMU57XvjCjZTuqkK23l94+ayazU0mEzRrl2 + 3qr2NrdObW3bl/csD5coZqR/L3fwPGYLJvoQnKdRlFPRB6XSZkJXqoFa5Z2k5t7nt2qpucieEJQd + d5xkpApknC5ZWij3G8REKh1S78pnEeNvJY4UX2+r2q3GBWnfvktttyJ5+J/YtP4il4xsrTK3pN7G + m79aN+aVtZtnKa+Mbbdonr3GLh0QrbK2J4ros/ZKUrsbeILOyYm1mK15rAOOJ59uTeXa2fYfmxyH + ZKUGAAA= headers: content-encoding: [gzip] content-length: ['632'] @@ -144,22 +144,22 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv/bank_accounts?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ/bank_accounts?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA7VUXW/aMBR976+I8tCnFWKTBIKEJpi6VVtXtLXdtE5TZGwHLPJVx2EglP8+2yQk - oWTqS18icc/1veeec7n7C8MwFyhe+wjjJI9FZo6N3zJoGHv9lTBPcsHipR/n0YJyiZsAAsuGoxE0 - 31VJukaMIqrwn9e3t/fGx+n3T3NjNr37YtxN68yykS92qU7GK4rXsn6dUZW5SSLKjc9oV0Mhi9eK - YkVO0sN5JlSiqvXhET4m0W603KxW7j1Jp8/f5vDvzeZY4GRaf0M5CxhGgiWxLBDnYVhOVBxHwyj2 - MaeECZkheE5rhFMkKPGRQkxoAfvKGl5Z4AGA8QCOodNzXNv2Rk/1AIGclPKUs1i/IQi7DrCJR8gA - AUyGCHvQIc7Q9qg1sEYYSjxAcIgdy0U0WFjYW0DgAhAEnud6deE8Jf/l4vag6zmO3eCy4jRQJPqt - BejPpvDHcshnS/crf4rm3N3unq9/YVL3iqhAyoRao8rUeke22y0cDFDDd0I4zU7NY2JX6l6pKi2S - LlN4PgxehjMhB38ZThMJhD5OyBlQ7zrfNdGzvhO60LYHKMxq3xlRsnXqpCsV8vtHzWRWaumwGaJM - O9+v9jbrd21t25f3LPM3KGRk8iB38DJkERMTYF0mQZBRMbFKpc2YblUDtcoHSc2jz2/VUnORPYFV - djxwkpEqkHK6YUmu3G8QE4l0SL0rnwWMv5U4Uny9rWq3Ghekfft62m5F8vQ/sW/9RXqMFP0yt6Te - xpu/WjfmlbWbZymrjG23aJ69xi6dEK2yio4i+qy9ktThBnbQ6ZxYi9map3/CsfNpYSrXLop/NxcR - yKUGAAA= + H4sIAAAAAAAAA7VUXW/aMBR976+I8tCntbHzQQgSmujUsQ3UdlunbkxTZGyneIQkdRwKQvz32SYh + CQWtL32JxD3X9557zuVuzgzDnKJkHiKM0yIRudkzfsugYWz0V8I8LQRLHsOkWEwpl7gJbQhcu9u1 + zXdVkq6RoAVV+MP1ePzd+Dj4Nrw1rgY3I+NmUGeWjUKxznQynlE8l/XrjKrMp3RBufEFrWsoZslc + UazISXq4yIVKVLU+/HBu7c+jXym+m3jjgT+cTx6y59FkX+Bg2nBJOYsYRoKliSyQFHFcTrTdj4ZR + EmJOCRMyQ/CC1ginSFASIoWYNoDuBfAvALyHXs91em5wCfxO1/Pq/mYkJ6U84yzRbwjCHQ+6JCDE + QRATH+HA9ojnuwEFDuhiW+IRsn3sgQ6i0RTgYGrDDoRRFASdoFamyMh/uHjA90CTy4zTSJGwWgtg + XQ2cr+Mkvx4+8vzvUzT7OXOduyeX1L0WVCBlQq1RZWq9I6vVynYc1PCdEE7zQ/OYWJe6V6pKi6TL + 1D4ehi/DuZCDvwxnqQTiEKfkCKh3na+b6FHfCZ1q2yMU57XvjCjZTuqkK23l94+ayazU0mEzRrl2 + 3qr2NrdObW3bl/csD5coZqR/L3fwPGYLJvoQnKdRlFPRB6XSZkJXqoFa5Z2k5t7nt2qpucieEJQd + d5xkpApknC5ZWij3G8REKh1S78pnEeNvJY4UX2+r2q3GBWnfvktttyJ5+J/YtP4il4xsrTK3pN7G + m79aN+aVtZtnKa+Mbbdonr3GLh0QrbK2J4ros/ZKUrsbeILOyYm1mK15rAOOJ59uTeXa2fYfmxyH + ZKUGAAA= headers: content-encoding: [gzip] content-length: ['632'] diff --git a/tests/py/fixtures/TestBalancedCard.yml b/tests/py/fixtures/TestBalancedCard.yml index 9a84ae73af..1e6607ec3d 100644 --- a/tests/py/fixtures/TestBalancedCard.yml +++ b/tests/py/fixtures/TestBalancedCard.yml @@ -3,250 +3,250 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/v1/marketplaces/TEST-MP1wTyxDAJKCaWPjBS4Oli4d/accounts/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/v1/marketplaces/TEST-MP1wTyxDAJKCaWPjBS4Oli4d/accounts/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: @@ -260,14 +260,14 @@ interactions: H4sIAAAAAAAAA5VU32/TMBB+319R5YEXWJufg1aagK28sKFVrBMChCInvqihjh059lqo+r9zcZyl EdYEL9Xd+bu77+6+5nA2mXgVKOItJge00WOkUeh5s4rILaiakRyat6ysSnUZJi9EUTSgLn3vVQfn sG/hXDNmIxsJxX8UMJURHyY2v+uAEd8GagmPpdDNuI0SijAMBRZVlPLfiCPvY5vjnQ6Ihb6bgbot - 4GvJU2hyKXZtDz8MozfB664VPlJREQRo2TLwYE+qmsE0F5VdC0I4qaB9XOmMlflkCY/DGyv5th2n + 4GvJU2hyKXZtDz9M3oT+664VPlJREQRo2TLwYE+qmsE0F5VdC0I4qaB9XOmMlflkCY/DGyv5th2n b4ZwseMg01w3SlQg28Trh2D3UHy9XWa327vVDQ0+w+/N1T7zDE87hDmZc+Oz9Yf79fmnVbBb/9ov 33+8uSZfVj+v7uM7VsZ04JJLIApoSszVQz+Iz/3kPIzXfrQILxbhfDqfR3EUfxtSGl3XQqoUcAks JZRKaNpxPPvwzrkQXdPnGkX+NAoiPwkcjeqN4JByXWXdal4GF4mfJEkQRvFAq5aC6lyVgiOXgrAG nu7VS9wc3uxMc5SxYjh4AdCSt2prL0/bWZ5fnylzxN8fRkrjg46UNaWQlcqsZ2ZNq9hT/U1R4yAb JG2Ag+fC0rKptTKssWbvuJC9njro4DmxEmhPFEVhbCeOSGrrGcuFEZLiNIafNV2oHPPTjWAn5azr QuNnRXML7W0X7u9/0uxp8NlhtPQx9OgcRUnCG2Jk1Q00CrgIZIRvU5LnQnN793HElZMTxjKSm6+C - Nxs8FxaV0he2ZvtJOzv+AW6kmdzNBQAA + Nxs8FxaV0he2ZvtJOzv+AfVvz5DNBQAA headers: content-encoding: [gzip] content-length: ['594'] @@ -277,152 +277,152 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: @@ -436,14 +436,14 @@ interactions: H4sIAAAAAAAAA5VU32/TMBB+319R5YEXWJufg1aagK28sKFVrBMChCInvqihjh059lqo+r9zcZyl EdYEL9Xd+bu77+6+5nA2mXgVKOItJge00WOkUeh5s4rILaiakRyat6ysSnUZJi9EUTSgLn3vVQfn sG/hXDNmIxsJxX8UMJURHyY2v+uAEd8GagmPpdDNuI0SijAMBRZVlPLfiCPvY5vjnQ6Ihb6bgbot - 4GvJU2hyKXZtDz8MozfB664VPlJREQRo2TLwYE+qmsE0F5VdC0I4qaB9XOmMlflkCY/DGyv5th2n + 4GvJU2hyKXZtDz9M3oT+664VPlJREQRo2TLwYE+qmsE0F5VdC0I4qaB9XOmMlflkCY/DGyv5th2n b4ZwseMg01w3SlQg28Trh2D3UHy9XWa327vVDQ0+w+/N1T7zDE87hDmZc+Oz9Yf79fmnVbBb/9ov 33+8uSZfVj+v7uM7VsZ04JJLIApoSszVQz+Iz/3kPIzXfrQILxbhfDqfR3EUfxtSGl3XQqoUcAks JZRKaNpxPPvwzrkQXdPnGkX+NAoiPwkcjeqN4JByXWXdal4GF4mfJEkQRvFAq5aC6lyVgiOXgrAG nu7VS9wc3uxMc5SxYjh4AdCSt2prL0/bWZ5fnylzxN8fRkrjg46UNaWQlcqsZ2ZNq9hT/U1R4yAb JG2Ag+fC0rKptTKssWbvuJC9njro4DmxEmhPFEVhbCeOSGrrGcuFEZLiNIafNV2oHPPTjWAn5azr QuNnRXML7W0X7u9/0uxp8NlhtPQx9OgcRUnCG2Jk1Q00CrgIZIRvU5LnQnN793HElZMTxjKSm6+C - Nxs8FxaV0he2ZvtJOzv+AW6kmdzNBQAA + Nxs8FxaV0he2ZvtJOzv+AfVvz5DNBQAA headers: content-encoding: [gzip] content-length: ['594'] @@ -453,76 +453,76 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61VWU/jMBB+51dYeeAJ2sQpvSS0KgWxAlHulZbVKnJ9tBapXWyn2wr1v6/tJE3C - od0H/BApc3hmvvlm/LoHQICRIjoYgl/2B4BX/7XilItnJy4FzjLTRi6ostJg/Ajvxnx2MX65PSU/ - b8/ww3wVX6xVUPhvD8qLGBczqpaKC+Mc+7jHwg6M4+4RYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiHY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMg/3qKuQITYInQCneJErgF8DyEn - /t4xvD+/OZ3cnDyG8vpyiqgemJdxrSaMDJ1JtXHW0swtBLuEzWZJnRgrSrhpgljW38BwisRzItDC - e13cXF3fnY8mYPx9dH8GTkaTywMwaY1aTTy1UZSaCs8N1ZXBVCHh6/jBNarE2ZLYrEmCPDtgGHUO - w95hGD1E0TCGQxi3+v0+7AyeaqFyyKx9nZwWYCup15CzmDpkPxBHLl4EY3CFuAD3PvV6Yyw1jC/+ - w34W1MGSeJtBCKOw7o1lJozaJIWBi/9uMjASCaFT244hMCqjFX9z2Bv9qPFxQ5GbQRjCipB2GN6U - GXCdrKjijFMHeyOAI/9udIK8dlAwEdg2gbw84LIHRAIhDfAsqTXcZV+waQgYSnWV/1xR5lBp+93S - /g/iKvoPEsB+pxP3nvLZ2Foofzu0gsYcBinSnkXtclPZ2J/sqTy1bw4jlHJy/GDx30/5gpvjKNyX - jGlqjsuOBoKum0smqEosluJXhfI52CLKZRPkuVhJ0exgqeiKy8wt54ohgZF2lTm/nEUB4+qrwbCA - +7X+5m3IX5AW4XqZGTvxVeNfff9bnGzbO22RXq6pvyi1phV+pXZbDFYRyLkmc5n6V6vkWC1UTd8I - 5kftE59C5yrc2/4F27WBRxcHAAA= + H4sIAAAAAAAAA61VW0/bMBR+51dYfuAJ2lza9CKhqbBpaEBBg8HENEVubFOL1M5spzRC/e+znaRJ + uGh7wA+Rci4+53znO8fPewDABEms4BT8Mj8APLuvEaeMP1pxLbCWudJiRaSRwpMf4dlPXKzn159J + cX4VZrM7OVn+wbDy3x7UF1HGH4jMJOPaOo6TEfUGQRhGQ0TH4yQkYZRQLxgNIpKgaEBxQsMI4yQg + Pg0nxpwkExpSir0hCqIR3F2crNexJCpP7b08T9OdhuerRZnmpnV8cxpvtFZxJpRGabxCOlna3Lho + 9GSTMYk0EzxeCa6t3vd2EVZEoy44kjwYWweN4DRX9qc2t9gxXcRaPDmLtgJhbIpQcWAVx2IDgtcQ + MuzuPQkvTo/VXbQ+Reehys9v8c3t4nLSQgRp8iBkYa2FXhoIdgnrIiNWnEiCme6CWNffwXCB+GPM + 0cp5fbu6uPz+dTYHJ6ez6y/geDY/OwDz3qzXxVNpSYhu8CyIagwWEnFXxy1TqBHnGTZZ4xg5dgSe + Pzj0Roeef+MPp4NwOhj2xkM/CP37VqgSMmPfJqcB2EjaNZQsJhbZN8S+jWduBheIcXDtUm83xlBD + u+Lf7GdFnURgZzPxAt9reyci51oWcWVg47+ajATxGJOFaccUaJmThr8l7J1+tPhYEGRnMPCChpBm + GF6UCZmK10QyyoiFvRPAkn83OrCsHVRMBKZNoCwP2OwBFoALDRxLWg232VdsmgKKUtXkv5SEWlT6 + brf0/4O4kvyDBIMonPjhfTkbWwPlb4sW7MwhTJFyLOrXm8rEfmdPlal9shihlOGjG4P/fspWTB/5 + 3r6gVBF9VHcUcrLpLhnYlFgtxY8K5XIwRdTLBpa5GEnVbJhJsmYit8u5YQjUwqwy61eyCFImPxoM + A7hb6y/ehvIF6WGmslybiW8a/+z632N4299pq/RKTftFaTWt8qu122qwqkDWNV6K1L1aNcdaoVr6 + TjA3au/4VDpb4d72LxntgTEXBwAA headers: content-encoding: [gzip] - content-length: ['761'] + content-length: ['762'] content-type: [application/json] status: {code: 200, message: OK} - request: @@ -536,14 +536,14 @@ interactions: H4sIAAAAAAAAA5VU32/TMBB+319R5YEXWJufg1aagK28sKFVrBMChCInvqihjh059lqo+r9zcZyl EdYEL9Xd+bu77+6+5nA2mXgVKOItJge00WOkUeh5s4rILaiakRyat6ysSnUZJi9EUTSgLn3vVQfn sG/hXDNmIxsJxX8UMJURHyY2v+uAEd8GagmPpdDNuI0SijAMBRZVlPLfiCPvY5vjnQ6Ihb6bgbot - 4GvJU2hyKXZtDz8MozfB664VPlJREQRo2TLwYE+qmsE0F5VdC0I4qaB9XOmMlflkCY/DGyv5th2n + 4GvJU2hyKXZtDz9M3oT+664VPlJREQRo2TLwYE+qmsE0F5VdC0I4qaB9XOmMlflkCY/DGyv5th2n b4ZwseMg01w3SlQg28Trh2D3UHy9XWa327vVDQ0+w+/N1T7zDE87hDmZc+Oz9Yf79fmnVbBb/9ov 33+8uSZfVj+v7uM7VsZ04JJLIApoSszVQz+Iz/3kPIzXfrQILxbhfDqfR3EUfxtSGl3XQqoUcAks JZRKaNpxPPvwzrkQXdPnGkX+NAoiPwkcjeqN4JByXWXdal4GF4mfJEkQRvFAq5aC6lyVgiOXgrAG nu7VS9wc3uxMc5SxYjh4AdCSt2prL0/bWZ5fnylzxN8fRkrjg46UNaWQlcqsZ2ZNq9hT/U1R4yAb JG2Ag+fC0rKptTKssWbvuJC9njro4DmxEmhPFEVhbCeOSGrrGcuFEZLiNIafNV2oHPPTjWAn5azr QuNnRXML7W0X7u9/0uxp8NlhtPQx9OgcRUnCG2Jk1Q00CrgIZIRvU5LnQnN793HElZMTxjKSm6+C - Nxs8FxaV0he2ZvtJOzv+AW6kmdzNBQAA + Nxs8FxaV0he2ZvtJOzv+AfVvz5DNBQAA headers: content-encoding: [gzip] content-length: ['594'] @@ -557,9 +557,9 @@ interactions: response: body: {string: !!python/unicode "{\n \"customers\": [\n {\n \"name\": null,\n \"links\": {\n \"source\": null,\n \"destination\": - null\n },\n \"updated_at\": \"2014-07-22T17:51:58.314446Z\",\n \"created_at\": - \"2014-07-22T17:51:58.205134Z\",\n \"dob_month\": null,\n \"id\": - \"CU6PdAsVriTtB542L7QxJOxn\",\n \"phone\": null,\n \"href\": \"/customers/CU6PdAsVriTtB542L7QxJOxn\",\n + null\n },\n \"updated_at\": \"2014-07-29T09:59:11.504432Z\",\n \"created_at\": + \"2014-07-29T09:59:11.373873Z\",\n \"dob_month\": null,\n \"id\": + \"CU7HQxjNsUWm6TTgylayybfX\",\n \"phone\": null,\n \"href\": \"/customers/CU7HQxjNsUWm6TTgylayybfX\",\n \ \"merchant_status\": \"no-match\",\n \"meta\": {\n \"seq\": \"3\"\n },\n \"dob_year\": null,\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \"state\": @@ -591,16 +591,16 @@ interactions: \ \"customer\": null\n },\n \"fingerprint\": \"1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc\",\n \ \"cvv_result\": null,\n \"number\": \"xxxxxxxxxxxx4242\",\n \"avs_postal_match\": null,\n \"expiration_month\": 12,\n \"meta\": {},\n \"id\": - \"CC6Q9AMkJyop1mQoIoOLoUb6\",\n \"category\": \"other\",\n \"type\": + \"CC7J72dswEquYGPf9vnEqJYQ\",\n \"category\": \"other\",\n \"type\": \"credit\",\n \"cvv_match\": null,\n \"bank_name\": \"\",\n \"avs_street_match\": - null,\n \"brand\": \"Visa\",\n \"updated_at\": \"2014-07-22T17:51:59.036048Z\",\n + null,\n \"brand\": \"Visa\",\n \"updated_at\": \"2014-07-29T09:59:12.505259Z\",\n \ \"address\": {\n \"city\": null,\n \"line2\": null,\n \ \"line1\": null,\n \"state\": null,\n \"postal_code\": null,\n \"country_code\": null\n },\n \"can_debit\": true,\n \ \"name\": null,\n \"expiration_year\": 2020,\n \"cvv\": null,\n \ \"is_verified\": true,\n \"avs_result\": null,\n \"can_credit\": - false,\n \"href\": \"/cards/CC6Q9AMkJyop1mQoIoOLoUb6\",\n \"created_at\": - \"2014-07-22T17:51:59.036045Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": + false,\n \"href\": \"/cards/CC7J72dswEquYGPf9vnEqJYQ\",\n \"created_at\": + \"2014-07-29T09:59:12.505257Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": \"/cards/{cards.id}/card_holds\",\n \"cards.customer\": \"/customers/{cards.customer}\",\n \ \"cards.disputes\": \"/cards/{cards.id}/disputes\",\n \"cards.debits\": \"/cards/{cards.id}/debits\"\n }\n}"} @@ -612,106 +612,106 @@ interactions: content-type: [application/json] status: {code: 201, message: CREATED} - request: - body: '{"links": {"customer": "/customers/CU6PdAsVriTtB542L7QxJOxn"}, "cvv_result": + body: '{"links": {"customer": "/customers/CU7HQxjNsUWm6TTgylayybfX"}, "cvv_result": null, "number": "xxxxxxxxxxxx4242", "expiration_month": 12, "meta": {}, "id": - "CC6Q9AMkJyop1mQoIoOLoUb6", "category": "other", "is_verified": true, "type": + "CC7J72dswEquYGPf9vnEqJYQ", "category": "other", "is_verified": true, "type": "credit", "cvv_match": null, "bank_name": "", "avs_street_match": null, "brand": - "Visa", "updated_at": "2014-07-22T17:51:59.036048Z", "fingerprint": "1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc", + "Visa", "updated_at": "2014-07-29T09:59:12.505259Z", "fingerprint": "1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc", "can_debit": true, "name": null, "expiration_year": 2020, "can_credit": false, - "avs_postal_match": null, "avs_result": null, "cvv": null, "created_at": "2014-07-22T17:51:59.036045Z", + "avs_postal_match": null, "avs_result": null, "cvv": null, "created_at": "2014-07-29T09:59:12.505257Z", "address": {"city": null, "line2": null, "line1": null, "state": null, "postal_code": null, "country_code": null}}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/cards/CC6Q9AMkJyop1mQoIoOLoUb6 + uri: https://api.balancedpayments.com:443/cards/CC7J72dswEquYGPf9vnEqJYQ response: body: string: !!binary | - H4sIAAAAAAAAA41UTW+jMBC991cgzm1iHD6S3NqetuqqG6ntoasVMvbQWAEb2SZKFPHf1+YjIWmq - XQ4IZvxm3sw8z+HG83xKFNP+0vttfzzv0L6tueBi48yDwZ2stZElKGv1H9/iX+xevyv+ah6iED8n - q93Ty074Pb65HQLlXHyCqhQXxgEDwDTEEYmSBQlokuOEoFmSozjG2TyK0CyiQFiW58GcIPsByTzK - M5QAJjkElPrHwHS7TRXounBxRV0UR4+oy6yjuRs9IQ7xCU22Oq2kNqRIS2Lo+jIG7CquiOFSpKUU - xvkDfMxQgiGuOacyOWvb8hivFvc/N097WQXlSv6QL8/yLYtHrImBT6n27rQ0a0vzGNTsK3BmqoBx - c17oVY4ZEZtUkLJFnZemjQIw10vLFBEt23euyQlWV8xyYylp54RREN6h5A7j1yBZRsEyWkzCBQoD - /DHKxJidwKVMuHHVjSfS6QnwdXPw1WznYlxVF0H6gVHJrjiprIVR+3Tk/SJGSkTKILPdXXpG1XCS - TNfFMxmNJLAH4mSPEUZj/V0w9LlOt6B4zsH19yyB09t1tTpO/ciXXk4KfWK1VpDbQP60vaTT/1CX - gn/MEM1iFEYf3T1tbIP+uIIurnu3FCYua7qWRbsfBhKHlsuEs6Zl1fu7rgy40aKYDltDT3vkYGh6 - HfUgxnVVG/gm1dF7lqgd5XeIzmeLa26av4tyJa7qBAAA + H4sIAAAAAAAAA41UXW+bMBR9769APK8JuCEOea2qTX2YVind1k4TMvZ14hUMtU0WFPHfa/ORkDTV + xkNE7uXce+49x95feZ5PiWLaX3q/7B/P27e/NpwJ+eLCQ8B9WWlT5KBs1L99xF8edn++6scf+Xy1 + WtcZqeuU//R7fPNpKMSFXIMqlZDGAUNAdIYiEuGYhBRzhElwg3kwn6N0EUXBTUSBsJTzcEEC+wJ4 + EfE0wIAIh5BS/1CYbreJAl1lrq6ssuyQkVWedjR3o2eGZuiIJludlIU2JEtyYujmvAbsSqGIEYVM + 8kIalw/RoUMOhrjlHMcUrF3LLb7HiOm/d6/V0+dvPN7Ku9f7p4cRa2JgXajafV2YjaV5KGrqElyY + KmDCnA56kWNK5EsiSd6iTkfTRgGYy6OlisiW7XehyRFWlcxyYwlpdUJBOLsO8DWKV0G8jOJliCYL + jCKMn0edGLMKnNtEGDfdWJHOT4Auh8P3YauLcVOdFekFowW7kKRFJY2qk1H2nRkpkQmD1G536RlV + wdEy3RZPbDSyQA3E2R4FKBj774yhL3SyBSW4ALffkwbOb5fd6jj1ki89TjJ9ZLVRwG0hf9oe0ul/ + uEvBPzSMgsiK+Nyd08Yu6Lcb6Oy4d5fCxHVNNkXW3g8DiX3LZSJY07Lq891WBtzoopgOt4ae9sgh + 0PQ+6kFM6LIy8EGrQ/akUSvlR4guZ4drrpo3WxdHCuoEAAA= headers: content-encoding: [gzip] - content-length: ['546'] + content-length: ['548'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU6PdAsVriTtB542L7QxJOxn + uri: https://api.balancedpayments.com:443/customers/CU7HQxjNsUWm6TTgylayybfX response: body: string: !!binary | - H4sIAAAAAAAAA41UTY+bMBC9769AnDdLIGRT5dbtrarUVtr20KpCE9sV1oKd+qNKFPHfO06AOJiu - 98Jh5r1nz5uHT3dJkhKrjWyZ0uk2+YmFJDmdv9gS0DKsCts090Ot4eLFQQcQwrS0ikyBWKdMGy7A - cCl6lV6kG9XsnoJhtAKDiLRY5uViuVkUxXO+2a7z7frdwyovy/LxRzpSiGIRSrFc56vSo1C5q1op - TD0dhlN37Idvj1/oe/1d8WfztC6LT5uvh4+fD+J65r6WYjpgWiv229Gz0cEsroRGkxqEqbQBY52R - qZCLFgypr8e1zMDEYvbHQVdp4KCb7chATUcDShXTk00Rbo4TIO4JV8qK+XIelt3Fp16gyF5io6mI - pDNNIq0w6uh3g0F2VuM9tK7mUqe1qBrQppyOyVrgTVDkN4Hr8KxfLj9uUi+81+g/jBFOM3TtnGed - ncbF9v2uX5FHJKBoVcuGnlfpRcEjc9plHu6SZE9jB+KlAnI2KSJzCw2UKNvxmESPmeH6f+t/fPB+ - 6Rkz2MEwJTAFbxsmhAeXcrZFLLlAAiblem8Ni5BHVMA3CoQG4h6viMYNMtDBR8KK2AwDaIb9F19m - aCJXUGyABQpS0cvb/ko4e0zAxaeWRvM0gPD/6u66f6HHamtTBgAA + H4sIAAAAAAAAA41UwY6bMBC971cgzs2ShGzT5LqXnipVyqpVqwoNtndxF+zUNtWiiH/vOAHi2LTu + hcPMe8+eNw+f7pIkJa02smFKp/vkOxaS5HT+YktAw7Aq2rp+N9ZqLl4tdAQhTMtWER+Idcq04QIM + l2JQGUT6Sa09UjCMFmAQka6Xq81iuV2sd4flbv+w269W9w/LzSZff0snClEsQsm3+Ydt7lCoLItG + ClP5w3Bqj3182n78/Pbzk3760rw/HF66GrqufP56PfNYSeEPmFaKPVt6NjmYxZXQaFKBMIU2YFpr + ZCrkogFDqutxDTPgWcx+WWieBg7a2ToGyh8NKFVMe5si3HQeEPeEK2Xr+fIqLNuL+16gyFFioy6I + pDNNIlthVOd2g0HKVuM9tC7mUqe1KGrQZuOPyRrgdVDkN4Hr8awfNj92Uie81+jfTxFOM3TtnGed + nabFDv1+WJFDJKBoUcmanlfpRMEhc9pnDu6SZEejBPFaADmbFJG5hQZKlJU8JjFgZrju3/oXH5xf + esYM9maYEpiC/xsmhAeXsrZFLLlAAibl+tgaFiFPqIBvFAgNxD5eEY0bZKCDj0QrYjOMoBn2b3yZ + oY5cQbERFihIRS9v+z/COWACLj61NJqnEYT/V3/X/wHgkelOUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['496'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU6PdAsVriTtB542L7QxJOxn/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU7HQxjNsUWm6TTgylayybfX/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61UwU7jMBC98xWRD5wW6pikoZXQiuW0iBWLVDiAVpETT6hFYke2U7VC/fe1naRJ - S9HugR6qdsYz82bem3k/CQKUU8U0mgcv9k8QvPtvay65eHPm3uBeNtrICpS1opvH6W92rZ8UX5gf - cUTukof17f1aoC5++61PVHDxCqpWXBgXGALJIxLTOJnRME8KklB8kRR4OiXZZRzjizgHyrKiCC8p - tj8guYyLDCdAaAFhnqNd4ny1ShXopnR5RVOWO49oqqyFuR59IhKRIZqudFpLbWiZVtTky8McsK65 - ooZLkVZSGOcPya5CBYa64QxtcubHcjN9mF3/ervdyDqsHuRPeX8nH7PpCDU18CrVxr2WZmlh7pKa - TQ3OnCtg3Ow3ehRjRsVbKmjlo/Zb00YBmOOtZYoKj/aJazqENTWz2FhKPU8Eh9EZTs4IWYTJPA7n - 8ew8muEoJM+jSoxZBg5lwo3rbsxIqycgx83hR7PlxbiuDpJ0hOWSHXHmshFGbdKR94MYcypSBpmd - 7jwwqoFBMu0U92Q0ksAGqJM9wQSP9XeAEHGdrkDxgoOb714Bp7fjanWYOsrnQUFLPaBaKihsIjTx - Szr5D3Up+AeH+GKKo/i53dOtHdAf1xDqBe0nhkqqvQgm/crb2p8sfAvtu+uclpxdLexUT0tecXMV - 4lNZFBrMFe4kgwSs97cVDS121+WrSnkMtomwYwy1WKylN9QKVlw2Tr4D78hIexNcXEs0Krj66mHY - IfvDcXBk21N8zriuGwMOVk/8u+f/nLPtZOft4LWe8WkekdbF9d5tT0MXZJOmS1n683+klHvV+feK - +QX6JKbzuQ5Ptn8B8A8qo2AGAAA= + H4sIAAAAAAAAA61UwW7bMAy99ysMHXpaG1uN6yRAsENRbOhhWIF0WzsMhmxRiVZbdiU5ixHk3yfJ + duykKbZDcwgSUiQf+R65PfM8lBJJFZp5P80fz9u6b2POuHi25s5gX1ZKFzlIY0U3D9Hn+83vL+rh + e369WCzrjNR1wn6gNn73oUvEuFiCLCUX2gYGgNMxDkkYTUmQRgxHxL+KmH99jZNJGPpXYQqEJowF + E+KbHxBNQpb4EWDCIEhTtE+crtexBFVlNq+osmzvEVWeNDA3g88Yj3EfTdYqLgulSRbnRKer4xyw + KbkkmhcizguhrT/A+wo5aGKH07fJqRvLTXQXYar+3L5Uj5++sula3L7cPd4PUBMNy0LW9nWhVwbm + PqmuS7DmVALl+rDRkxgTIp5jQXIXddia0hJAn24tkUQ4tN+4In1YVVKDjcbE8YT9YHzhRxd4uvCn + s3A6C/DlJMJhFD0NKlFqGDiWCde2uyEjjZ4AnzYHr82GF227OkrSEpYW9IQzLSqhZR0PvK/EmBIR + U0jMdGeelhX0kmmmeCCjgQRqIFb22Mf+UH9HCBFX8RokZxzsfA8KWL2dVqvF1FI+8xjJVI9qJYGZ + RGjklnT0H+qS8A8OQz80JD41e7ozA/plG0KdoN3EUEaUE8GoW3lT+42Fb6B9tJ2TjNP5wkz1POM5 + 1/PAPy8YU6DnfisZJGBzuK2ob7G9Lu9VymEwTQQtY6jBYiydoZSw5kVl5dvzjnRhboKNa4hGjMv3 + HoYZsjscR0e2OcWXlKuy0mBhdcRvHf+XnO5Ge28Lr/EMT/OAtDau8+46GtogkzReFZk7/ydK2Vet + /6CYW6A3Ylqf7fBs9xe46IvaYAYAAA== headers: content-encoding: [gzip] - content-length: ['647'] + content-length: ['649'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU6PdAsVriTtB542L7QxJOxn/cards?is_valid=True&limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU7HQxjNsUWm6TTgylayybfX/cards?is_valid=True&limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61UwU7jMBC98xWRD5wW6pikoZXQiuW0iBWLVDiAVpETT6hFYke2U7VC/fe1naRJ - S9HugR6qdsYz82bem3k/CQKUU8U0mgcv9k8QvPtvay65eHPm3uBeNtrICpS1opvH6W92rZ8UX5gf - cUTukof17f1aoC5++61PVHDxCqpWXBgXGALJIxLTOJnRME8KklB8kRR4OiXZZRzjizgHyrKiCC8p - tj8guYyLDCdAaAFhnqNd4ny1ShXopnR5RVOWO49oqqyFuR59IhKRIZqudFpLbWiZVtTky8McsK65 - ooZLkVZSGOcPya5CBYa64QxtcubHcjN9mF3/ervdyDqsHuRPeX8nH7PpCDU18CrVxr2WZmlh7pKa - TQ3OnCtg3Ow3ehRjRsVbKmjlo/Zb00YBmOOtZYoKj/aJazqENTWz2FhKPU8Eh9EZTs4IWYTJPA7n - 8ew8muEoJM+jSoxZBg5lwo3rbsxIqycgx83hR7PlxbiuDpJ0hOWSHXHmshFGbdKR94MYcypSBpmd - 7jwwqoFBMu0U92Q0ksAGqJM9wQSP9XeAEHGdrkDxgoOb714Bp7fjanWYOsrnQUFLPaBaKihsIjTx - Szr5D3Up+AeH+GKKo/i53dOtHdAf1xDqBe0nhkqqvQgm/crb2p8sfAvtu+uclpxdLexUT0tecXMV - 4lNZFBrMFe4kgwSs97cVDS121+WrSnkMtomwYwy1WKylN9QKVlw2Tr4D78hIexNcXEs0Krj66mHY - IfvDcXBk21N8zriuGwMOVk/8u+f/nLPtZOft4LWe8WkekdbF9d5tT0MXZJOmS1n683+klHvV+feK - +QX6JKbzuQ5Ptn8B8A8qo2AGAAA= + H4sIAAAAAAAAA61UwW7bMAy99ysMHXpaG1uN6yRAsENRbOhhWIF0WzsMhmxRiVZbdiU5ixHk3yfJ + duykKbZDcwgSUiQf+R65PfM8lBJJFZp5P80fz9u6b2POuHi25s5gX1ZKFzlIY0U3D9Hn+83vL+rh + e369WCzrjNR1wn6gNn73oUvEuFiCLCUX2gYGgNMxDkkYTUmQRgxHxL+KmH99jZNJGPpXYQqEJowF + E+KbHxBNQpb4EWDCIEhTtE+crtexBFVlNq+osmzvEVWeNDA3g88Yj3EfTdYqLgulSRbnRKer4xyw + KbkkmhcizguhrT/A+wo5aGKH07fJqRvLTXQXYar+3L5Uj5++sula3L7cPd4PUBMNy0LW9nWhVwbm + PqmuS7DmVALl+rDRkxgTIp5jQXIXddia0hJAn24tkUQ4tN+4In1YVVKDjcbE8YT9YHzhRxd4uvCn + s3A6C/DlJMJhFD0NKlFqGDiWCde2uyEjjZ4AnzYHr82GF227OkrSEpYW9IQzLSqhZR0PvK/EmBIR + U0jMdGeelhX0kmmmeCCjgQRqIFb22Mf+UH9HCBFX8RokZxzsfA8KWL2dVqvF1FI+8xjJVI9qJYGZ + RGjklnT0H+qS8A8OQz80JD41e7ozA/plG0KdoN3EUEaUE8GoW3lT+42Fb6B9tJ2TjNP5wkz1POM5 + 1/PAPy8YU6DnfisZJGBzuK2ob7G9Lu9VymEwTQQtY6jBYiydoZSw5kVl5dvzjnRhboKNa4hGjMv3 + HoYZsjscR0e2OcWXlKuy0mBhdcRvHf+XnO5Ge28Lr/EMT/OAtDau8+46GtogkzReFZk7/ydK2Vet + /6CYW6A3Ylqf7fBs9xe46IvaYAYAAA== headers: content-encoding: [gzip] - content-length: ['647'] + content-length: ['649'] content-type: [application/json] status: {code: 200, message: OK} version: 1 diff --git a/tests/py/fixtures/TestBillingAssociate.yml b/tests/py/fixtures/TestBillingAssociate.yml index 6cd1fc2d39..66bdc334e6 100644 --- a/tests/py/fixtures/TestBillingAssociate.yml +++ b/tests/py/fixtures/TestBillingAssociate.yml @@ -3,19 +3,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -25,19 +25,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -47,13 +47,13 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"bank_accounts\": [],\n \"meta\": {\n - \ \"last\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\",\n - \ \"next\": null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\",\n + \ \"last\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\",\n + \ \"next\": null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['396'] @@ -69,8 +69,8 @@ interactions: \"Not Found\",\n \"category_code\": \"not-found\",\n \"description\": \"

The requested URL was not found on the server.

If you entered the URL manually please check your spelling and try again.

Your request id - is OHM698aee0a011311e48ad106429171ffad.\",\n \"status_code\": 404,\n - \ \"category_type\": \"request\",\n \"request_id\": \"OHM698aee0a011311e48ad106429171ffad\"\n + is OHM8c2ebc98013611e4b7da06429171ffad.\",\n \"status_code\": 404,\n + \ \"category_type\": \"request\",\n \"request_id\": \"OHM8c2ebc98013611e4b7da06429171ffad\"\n \ }\n ]\n}"} headers: content-length: ['430'] @@ -87,13 +87,13 @@ interactions: \"321174851\",\n \"bank_name\": \"SAN MATEO CREDIT UNION\",\n \"account_type\": \"checking\",\n \"name\": \"Alice G. Krebs\",\n \"links\": {\n \"customer\": null,\n \"bank_account_verification\": null\n },\n \"can_credit\": - true,\n \"created_at\": \"2014-07-01T11:32:41.951223Z\",\n \"fingerprint\": + true,\n \"created_at\": \"2014-07-01T15:44:12.669501Z\",\n \"fingerprint\": \"5f0ba9fa3f1122ef13b944a40abfe44e7eba9e16934e64200913cb4c402ace14\",\n \"updated_at\": - \"2014-07-01T11:32:41.951226Z\",\n \"href\": \"/bank_accounts/BA3dHpK9BMTGleJbwQyO9U2B\",\n + \"2014-07-01T15:44:12.669504Z\",\n \"href\": \"/bank_accounts/BA4hixLak3IdlPJRaGtMXgB7\",\n \ \"meta\": {},\n \"account_number\": \"xxxxxx0001\",\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \ \"state\": null,\n \"postal_code\": null,\n \"country_code\": - null\n },\n \"can_debit\": false,\n \"id\": \"BA3dHpK9BMTGleJbwQyO9U2B\"\n + null\n },\n \"can_debit\": false,\n \"id\": \"BA4hixLak3IdlPJRaGtMXgB7\"\n \ }\n ],\n \"links\": {\n \"bank_accounts.credits\": \"/bank_accounts/{bank_accounts.id}/credits\",\n \ \"bank_accounts.bank_account_verifications\": \"/bank_accounts/{bank_accounts.id}/verifications\",\n \ \"bank_accounts.customer\": \"/customers/{bank_accounts.customer}\",\n @@ -111,19 +111,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -133,19 +133,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -155,13 +155,13 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"bank_accounts\": [],\n \"meta\": {\n - \ \"last\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\",\n - \ \"next\": null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\",\n + \ \"last\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\",\n + \ \"next\": null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['396'] @@ -171,70 +171,70 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/bank_accounts/BA3dHpK9BMTGleJbwQyO9U2B + uri: https://api.balancedpayments.com:443/bank_accounts/BA4hixLak3IdlPJRaGtMXgB7 response: body: string: !!binary | - H4sIAAAAAAAAA5VT0W6bMBR971cgntdgg5OMvCVb1XVVE3VLXzpNyNiX1QoBZMy2KOLfZ1yogaRS - xoMffA7X595z7vHKcdyYZruIMpZXmSrdhfNDXzrO0ZwalnmlRPYryqp9DFLjbuBjPCcfp9j90JFM - jYzuocG/L9fOw3J7s3E+fbv5fLd1ntZ3m7Ult29F6lAYPnsBttNPWEZXaZkKBs7txLmXEJcWT0W2 - a6R2IrVMVpUq3xuBWZWmnbJRf9FvkCIRjCqRZy217aF+a4bRLGISuFCaoWQFFpFAFfCINojrI0yu - 0fwa4S3Gi8BfEDwJp9j3g2crNdGNgSykyMw/0wTFNExokGBNhAQHcUgIJYjGCRACc9Aw4FkYEJgR - H6EQBywmjCCfMsDEFq4KfomWWU/Li4SkEeENLPdWy4B/Ke7D1cP2NoWv8Z/HwyZ88lf2rT0o2ozb - zqjz0Kbir/kQQr1YUM4llGOnhDqcuqQtBf/8NT69LpXu/fS6yDWQRiznZ0ATcHnoo2et5xAb5xOa - ltZ6wZvJvTsqU6nW588mLO4woMMVm7xmq5nK2InjwJiJ4LXXkV8zOKrUpw+ifWHx/jZ06zUWa/fK - 9bolK72R0g6o28yMipiRXqip5f5fv2aWg27GCt8dVe1qw+qr+h9WEmkmDAUAAA== + H4sIAAAAAAAAA5VT0W6bMBR971dYPK+JDU4y8pZuVZVtTacuk6pOEzLm0lghJjJmahTx7zMuzEBS + KePBDz6H63PvOfd4hZAXM7mNGOd5KXXhzdEvc4nQ0Z4GVnmphXyJZLmLQRncC3xCZvTjhHgfWpKt + IdkOavzHYoXuF+vbB/Tp8fbzco1+rpYPK0du3or0YW/5fAN8a55wjLbSIhMc0N0IfVUQFw7PhNzW + UluRRiYvC53vrEBZZlmrbNBf9AeUSAVnWuSyoTY9VP+a4UxGXEEitGFoVYJDFDANScRqxPMxodd4 + do3JmkzmlM6JP5pOwwkmz05qahoDtVdC2n8mKY5ZmLIgJcT3ISVBHFLKKGZxCpTCDAwMZBoGFKbU + xzgkAY8pp9hnHAh1hct9cokW2tGyUZDWIsY9y8c3C7oRr9/YNlgm2fcvj+xO3z+93MzcWzvQrB63 + m1HroUvFq/0wxp1YsCRRUAydEvpw6pKxFPzz1+T0utCm99PrfW6ALOJ5cga0AVeHLnrW+gRi63zK + ssJZL5J6cu+OylaqzPm7DovXD2h/xUZv2aqnMnTi2DNmJJJq3JLfMjio1KX3on1h8e42tOs1FOv2 + yhu3S1aMB0pboGoyMyhiR3qhpob7f/3aWfa6GSp8d1SVZwyrrqq/OOOhGAwFAAA= headers: content-encoding: [gzip] - content-length: ['502'] + content-length: ['503'] content-type: [application/json] status: {code: 200, message: OK} - request: body: '{"routing_number": "321174851", "bank_name": "SAN MATEO CREDIT UNION", "account_type": "checking", "name": "Alice G. Krebs", "links": {"customer": - "/customers/CU2R4ZqaRKDZoW1GpfgeKFbr"}, "can_credit": true, "created_at": "2014-07-01T11:32:41.951223Z", + "/customers/CU3KoKRb123DPYH3y6rw4OmF"}, "can_credit": true, "created_at": "2014-07-01T15:44:12.669501Z", "address": {"city": null, "line2": null, "line1": null, "state": null, "postal_code": - null, "country_code": null}, "updated_at": "2014-07-01T11:32:41.951226Z", "meta": + null, "country_code": null}, "updated_at": "2014-07-01T15:44:12.669504Z", "meta": {}, "account_number": "xxxxxx0001", "fingerprint": "5f0ba9fa3f1122ef13b944a40abfe44e7eba9e16934e64200913cb4c402ace14", - "can_debit": false, "id": "BA3dHpK9BMTGleJbwQyO9U2B"}' + "can_debit": false, "id": "BA4hixLak3IdlPJRaGtMXgB7"}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/bank_accounts/BA3dHpK9BMTGleJbwQyO9U2B + uri: https://api.balancedpayments.com:443/bank_accounts/BA4hixLak3IdlPJRaGtMXgB7 response: body: string: !!binary | - H4sIAAAAAAAAA5VTW2+bMBR+769APK/EBicZeUvaLuuiJlqWaFKmCRlz3FohwIxZF0X89xkC5dJ0 - 6njwg7/D8Xc553RlGKZPo71HGYuzSKXmxPihLw3jVJ4alnGmRPToRdnBB6lx07ExHpOPQ2x+qIvK - HhE9QIF/my6Nh+nmbmXcrO9u7zfGdnm/WjbF1VueOiZlPXsCttdPNBV1p2koGBhzy1hI8NMGD0W0 - L6jWJDVNlqUqPpwJ3mztNdn9ouvF7S7+jucJf4TFJ1++NOip9n6DFFwwqkQc6bZRFoaVsvxFIqOR - xyQEQukKJTNoEAlUQeDRAjFthMk1Gl8jvMF44tgTgi13iG3b2TUCuJYLMpEiKv8ZcuRTl1OHY10I - HDu+SwgliPocCIExaBjwyHUIjIiNkIsd5hNGkE0ZYNI0zpLgn1wcazR0yQi3uDxJ4AWJQWcQBrOp - E3xOFu7sYTMP4Yv//PW4crf2rHnrAIoWITQe1ck2s/Kn/BBCrWGhQSAh7ecn1LGyvjZWp6SDBvvy - NX59nSqt/fV1Emsg9FgcXADLsZfHNnox+gD8MnlOw7SJXgSFc29aVXbK9fmz0FSoaY1td/Gs82wV - rvSTOHWCsUSQD+ris1W9Tu3yzmi/s3l7G+ql65NtbdugXr100GNaA3k1M70mpaXv5FTV/p/e0suO - mj7DN63KTR1YfpX/BfGP3OgiBQAA + H4sIAAAAAAAAA5VTW2+bMBR+769APK/BBgMjb+llXZY1qbJU2kUVMubQWCEQGdM1ivjvMwTKpenU + 8uAHf4fj73LO4UzT9IAmG58yluaJzPSx9kddatqhOhUs0lzy5NFP8m0AQuG6ZWLsks821j81RVWP + hG6hxH9M5trtZHW90C6X11fTlXY/ny7mbXH9li/3u6qerYFt1BNtRdNpEnMG2s1ImwkIshaPebIp + qTYkFU2WZzLdHgle3luzdLYMsGld3f36au0d8Zcstl9eGgxU+08geMQZlTxNVNskj+NaWfEikdHE + ZwJCLlWFFDm0iAAqIfRpiegmwuQcuecIr7A9JmSMzZHjeDbCv1sBkZILYid4Uv1jRyigXkStCGPT + hAhbgUcIJYgGERACLigYsONZBBxiIuRhiwWEEWRSBpi0jfNd+F8uzgi52LS7XNYCopKE0RsE42JC + 1vz5O91Y0zC++7akN/L25+OF2761BUnLEFqPmmTbWXmuPoRQZ1hoGArIhvlxua+tb4xVKamgwTx9 + jV9fZ1Jpf329SxUQ+ywNT4DV2It9Fz0ZfQhBlXxE46yNnoelc29aVXUq1PlQairVdMa2v3ij42yV + rgyTOPSCGfGwMJrio1WDTt3y3mi/s3l3G5qlG5LtbJvRrF5mDJg2QFHPzKBJZek7OdW1H9NbedlT + M2T4plWFrgIrzop/+IVNBSIFAAA= headers: content-encoding: [gzip] - content-length: ['534'] + content-length: ['533'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -244,21 +244,21 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61U72vbMBD93r/C+MM+rYlkK+lcKCP9sa4LTViXMOgYRpZPrahje7LcNoT875MU - O7bTdHTQfDDk7nT37r3HrQ4cx41o+hBSxrIyVYV77PzSQcdZ2a9Oy6xUIr0L03IRgdR51/cwPiKf - Btj9WBfZHildgMn/GE2c69HsYuqc3VycX82c+eRqOmmKq1mhWua2nt0De9Ajmoq60ygRDJzLnjOW - EBVNPhHpg4Fag9QwWVmobLEBeDb3bsjtH3ozPr/NfuLLnN/B+Esktw12tg4fQQouGFUiS3XbtEyS - arP1dkVG05BJiIXSFUqW0GQkUAVxSE3G9RAmh+joEOEZxse+d0xwLxhgz/NvmwW4XhdkLkVq3ww4 - imjAqc+xLgSO/SgghBJEIw6EwBHoNOBh4BMYEg+hAPssIowgjzLApGlc5vE/sfi94SAgQ9zCci+B - GxD9jhH6pyM//pqPg9Pr2WUC36Kn78tpMPdOm1kLUNSI0HBUK9t45dn+EEIts9A4llDs6ifUsqK+ - JlarpIUGb38YvwwXSu/+MpxnOpGELIv3JK3t5bKd3St9DJFVntOkaKQXsWHuVapsp7X+/jY7uTVh - NuwmtLDi92vrFv3XjNuV5nMiFkKdYPQh47wAdYIqTdwUnk1L498Nie5W3PcbYqfrKRhVMzYodKQO - 5BIeRVYahVtQVKZVMO+qZ1zI9yNAU2ptaBzTOg3d49azIhpYu2ZfdbzfE/G6X9VWYLv59r/O8Xhj - 7/a9qc/aDtT2PWs5ZAdoXbWuHdDFublXbwRVF//fxpbMzj79HYyvkrV2jWoH67+Jyu5WhgYAAA== + H4sIAAAAAAAAA61U227aQBB9z1dYfuhTg3ftBQpSVJFL05QGIkqkXlRZ6/U4rDA2Wq9TEOLfu7vY + 2CZQpVJ4sMTM7MyZc45mc2ZZdkCTuU8ZS/NEZnbf+qWClrUxX5UWaS558uQn+SIAofK252LcJR/a + 2H5fFpkeCV2Azn8bjKz7wfRmbF1Nbq7vptbj6G48qoqLWb5cL009mwGbqxFVRdlpEHMG1m3LGgoI + siof82SuoZYgFUyWZzJd7ABePXrDdDgJsOtdP/z47K074g8ZLz7tGxxs7T+D4BFnVPI0UW2TPI6L + zbb7FRlNfCYg5FJVSJFDlRFAJYQ+1RnbRZico+45wlPc7hPSx26r0+m1Ef5ZLRCpdUEsBU/Mm3aE + AtqLqBdh7LoQYS/oEUIJokEEhEAXVBpwp+cR6BAXoR72WEAYQS5lgEnVOF+G/8TSaaEudtt1LDMB + kQbhNIzgXA7IjK++0rl3F8YPXyb0Vt5/f7rsVrMWIKkWoeKoVLbyysr8EEI1s9AwFJAd6sfluqC+ + JFappIQG93gYvwxnUu3+MrxMVSL2WRoeSRrbi3U9e1T6EAKjfETjrJKeh5q5k1SZTlv1/a13skvC + TNiOaWbEd0rrZs4p4zal+RjzBZcXGL1LoygDeYEKTewEVrql9u+ORHsv7tsNMdPVFIyKGTsUKlIG + lgKeeZprhWtQZKpU0O+KZxEXb0eAotTYUDumdhqax61lRNSwDs2+aXi/xcOtU9QWYJv5+r/G8Xhl + 7/q9Kc/aAdT6Pas55ABoWbUtHdDEubtXrwRVFv/fxobMxj7OAcaTZG1trdrZ9i8rRFE8hgYAAA== headers: content-encoding: [gzip] content-length: ['625'] @@ -268,21 +268,21 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61U72vbMBD93r/C+MM+rYlkK+lcKCP9sa4LTViXMOgYRpZPrahje7LcNoT875MU - O7bTdHTQfDDk7nT37r3HrQ4cx41o+hBSxrIyVYV77PzSQcdZ2a9Oy6xUIr0L03IRgdR51/cwPiKf - Btj9WBfZHildgMn/GE2c69HsYuqc3VycX82c+eRqOmmKq1mhWua2nt0De9Ajmoq60ygRDJzLnjOW - EBVNPhHpg4Fag9QwWVmobLEBeDb3bsjtH3ozPr/NfuLLnN/B+Esktw12tg4fQQouGFUiS3XbtEyS - arP1dkVG05BJiIXSFUqW0GQkUAVxSE3G9RAmh+joEOEZxse+d0xwLxhgz/NvmwW4XhdkLkVq3ww4 - imjAqc+xLgSO/SgghBJEIw6EwBHoNOBh4BMYEg+hAPssIowgjzLApGlc5vE/sfi94SAgQ9zCci+B - GxD9jhH6pyM//pqPg9Pr2WUC36Kn78tpMPdOm1kLUNSI0HBUK9t45dn+EEIts9A4llDs6ifUsqK+ - JlarpIUGb38YvwwXSu/+MpxnOpGELIv3JK3t5bKd3St9DJFVntOkaKQXsWHuVapsp7X+/jY7uTVh - NuwmtLDi92vrFv3XjNuV5nMiFkKdYPQh47wAdYIqTdwUnk1L498Nie5W3PcbYqfrKRhVMzYodKQO - 5BIeRVYahVtQVKZVMO+qZ1zI9yNAU2ptaBzTOg3d49azIhpYu2ZfdbzfE/G6X9VWYLv59r/O8Xhj - 7/a9qc/aDtT2PWs5ZAdoXbWuHdDFublXbwRVF//fxpbMzj79HYyvkrV2jWoH67+Jyu5WhgYAAA== + H4sIAAAAAAAAA61U227aQBB9z1dYfuhTg3ftBQpSVJFL05QGIkqkXlRZ6/U4rDA2Wq9TEOLfu7vY + 2CZQpVJ4sMTM7MyZc45mc2ZZdkCTuU8ZS/NEZnbf+qWClrUxX5UWaS558uQn+SIAofK252LcJR/a + 2H5fFpkeCV2Azn8bjKz7wfRmbF1Nbq7vptbj6G48qoqLWb5cL009mwGbqxFVRdlpEHMG1m3LGgoI + siof82SuoZYgFUyWZzJd7ABePXrDdDgJsOtdP/z47K074g8ZLz7tGxxs7T+D4BFnVPI0UW2TPI6L + zbb7FRlNfCYg5FJVSJFDlRFAJYQ+1RnbRZico+45wlPc7hPSx26r0+m1Ef5ZLRCpdUEsBU/Mm3aE + AtqLqBdh7LoQYS/oEUIJokEEhEAXVBpwp+cR6BAXoR72WEAYQS5lgEnVOF+G/8TSaaEudtt1LDMB + kQbhNIzgXA7IjK++0rl3F8YPXyb0Vt5/f7rsVrMWIKkWoeKoVLbyysr8EEI1s9AwFJAd6sfluqC+ + JFappIQG93gYvwxnUu3+MrxMVSL2WRoeSRrbi3U9e1T6EAKjfETjrJKeh5q5k1SZTlv1/a13skvC + TNiOaWbEd0rrZs4p4zal+RjzBZcXGL1LoygDeYEKTewEVrql9u+ORHsv7tsNMdPVFIyKGTsUKlIG + lgKeeZprhWtQZKpU0O+KZxEXb0eAotTYUDumdhqax61lRNSwDs2+aXi/xcOtU9QWYJv5+r/G8Xhl + 7/q9Kc/aAdT6Pas55ABoWbUtHdDEubtXrwRVFv/fxobMxj7OAcaTZG1trdrZ9i8rRFE8hgYAAA== headers: content-encoding: [gzip] content-length: ['625'] @@ -292,19 +292,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -314,19 +314,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -336,13 +336,13 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"cards\": [],\n \"meta\": {\n \"last\": - \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\",\n \"next\": - null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\",\n + \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\",\n \"next\": + null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['364'] @@ -358,8 +358,8 @@ interactions: \"Not Found\",\n \"category_code\": \"not-found\",\n \"description\": \"

The requested URL was not found on the server.

If you entered the URL manually please check your spelling and try again.

Your request id - is OHM6cbe9978011311e48ad106429171ffad.\",\n \"status_code\": 404,\n - \ \"category_type\": \"request\",\n \"request_id\": \"OHM6cbe9978011311e48ad106429171ffad\"\n + is OHM90c6a126013611e4a4e806429171ffad.\",\n \"status_code\": 404,\n + \ \"category_type\": \"request\",\n \"request_id\": \"OHM90c6a126013611e4a4e806429171ffad\"\n \ }\n ]\n}"} headers: content-length: ['430'] @@ -376,16 +376,16 @@ interactions: \ \"customer\": null\n },\n \"fingerprint\": \"1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc\",\n \ \"cvv_result\": null,\n \"number\": \"xxxxxxxxxxxx4242\",\n \"avs_postal_match\": null,\n \"expiration_month\": 12,\n \"meta\": {},\n \"id\": - \"CC3k3FMoyWzNKUsXNwXVDxGt\",\n \"category\": \"other\",\n \"type\": + \"CC4q3Nm89zMS5ujKwSr7wduZ\",\n \"category\": \"other\",\n \"type\": \"credit\",\n \"cvv_match\": null,\n \"bank_name\": \"\",\n \"avs_street_match\": - null,\n \"brand\": \"Visa\",\n \"updated_at\": \"2014-07-01T11:32:47.614703Z\",\n + null,\n \"brand\": \"Visa\",\n \"updated_at\": \"2014-07-01T15:44:20.460279Z\",\n \ \"address\": {\n \"city\": null,\n \"line2\": null,\n \ \"line1\": null,\n \"state\": null,\n \"postal_code\": null,\n \"country_code\": null\n },\n \"can_debit\": true,\n \ \"name\": null,\n \"expiration_year\": 2020,\n \"cvv\": null,\n \ \"is_verified\": true,\n \"avs_result\": null,\n \"can_credit\": - false,\n \"href\": \"/cards/CC3k3FMoyWzNKUsXNwXVDxGt\",\n \"created_at\": - \"2014-07-01T11:32:47.614700Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": + false,\n \"href\": \"/cards/CC4q3Nm89zMS5ujKwSr7wduZ\",\n \"created_at\": + \"2014-07-01T15:44:20.460277Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": \"/cards/{cards.id}/card_holds\",\n \"cards.customer\": \"/customers/{cards.customer}\",\n \ \"cards.disputes\": \"/cards/{cards.id}/disputes\",\n \"cards.debits\": \"/cards/{cards.id}/debits\"\n }\n}"} @@ -400,19 +400,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -422,19 +422,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -444,13 +444,13 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"cards\": [],\n \"meta\": {\n \"last\": - \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\",\n \"next\": - null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\",\n + \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\",\n \"next\": + null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['364'] @@ -460,73 +460,73 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/cards/CC3k3FMoyWzNKUsXNwXVDxGt + uri: https://api.balancedpayments.com:443/cards/CC4q3Nm89zMS5ujKwSr7wduZ response: body: string: !!binary | - H4sIAAAAAAAAA41UwY6bMBC971cgzt3ENhDSXLdqD1X31G5Xu6qQsYeNFTDINmnSiH+vbUgg2URa - Dhae8Zt5M/Psw10QhIwqrsNV8Go3QXDwqzWXQm6c+WhwJ1tt6gqUtcq2LIeT3acjpBDyDVSjhDT2 - SIiBsJgkNEk/U8zSgqQURWmBFguSL5MERQkDyvOiwEuK7A+ky6TIUQqEFoAZC0+B2XabKdBt6eK6 - 1CePbKvcEwp3ky8mMRnRdKuzptaGlllFDVtfxoBdIxQ1opZZVUvj/JicMlRgqGvDWKbgLt/DQ7SJ - vv6o97//PX7/pZ8f/z4/fdl9MxPW1MBbrfbudG3WluYpqNk34MxMARdTiC30Ksecyk0maeVR56Vp - owDMDZii0rN9EpqOsLbhlhvPqJ8TQTi+R+k9wj8xXkVkFaezBY5TFL1MMnFuJ3ApCGFcddOJ9MoB - ct2M35vtXIyr6iLIMDBW8ytOVrfSqH028b4TI6My45Db7q4Co1oYJdN38UxGEwnsgTo9EUTQVH8X - DEOhsy0oUQhw/T1L4PR2Xa2O0zDyVVDQUo+s1goKGyic++s4/4C6FHxkhugl9K3p7PrHFXRxsfvr - P3NZs3Vd+pfgSOLgucwE7zyrwd935YgbnwSLGjZ6PiCPhm7Q0QDiQjetgRupTt6zRH6UtxC9zxbX - 3XX/Afc5O1/UBAAA + H4sIAAAAAAAAA41UwXKbMBC95ysYzo0tZDA21xw77SWdHtLpMIu0xGpAUEk4cT38eyUZG3CcmfjA + mF293fd2nzjeBUHIQHEdZsEv+xIER/+04UrIFxc+B9zJTpumRmWjsquq4WT/5QwphXxG1SohjT0S + RkhZTBNI0i1ELC1pCmSVlmS9psUmScgqYQi8KMtoA8T+wXSTlAVJkUKJEWPhpTDb73OFuqtcXdf6 + kpFdXXhC4dvkF9OYjmjY67xttIEqr8Gw3XUNfGuFAiMamdeNNC4f0UuHGg24MYwyBXf9Hh7iv6vv + 9Wb779tj0v35+vqo0lfePU1Yg8HnRh3c6cbsLM1LUXNo0YWZQi7MXOhNjgXIl1xC7VFzadooRHNb + WqFAerY/hYYR1rXccuM5+D1REsX3JL0n0Y8oyeI4o2QRrwlNtxMxwLndwLUhhHHqphs5OQfp7XD0 + Pmz3YpyqqyLDwljDbyRZ00mjDvkk+86MDGTOsbDTzQKjOhwtc5rizEYTCxwQnJ8ooWTqvyuGodD5 + HpUoBbr5zho4v912q+M0rDwLSqj0yGqnsLSFwqW/jstPuEvhZ3aYPoV+NL19/naCri726fovXNd8 + 11T+S3AmcfRcFoL3ntWQP03ljBs/CRY1vOjlgDwH+sF6A4gL3XYGP2h1yc4a+VV+hDjlrLj+rv8P + dvtpftQEAAA= headers: content-encoding: [gzip] - content-length: ['525'] + content-length: ['521'] content-type: [application/json] status: {code: 200, message: OK} - request: - body: '{"links": {"customer": "/customers/CU2R4ZqaRKDZoW1GpfgeKFbr"}, "cvv_result": + body: '{"links": {"customer": "/customers/CU3KoKRb123DPYH3y6rw4OmF"}, "cvv_result": null, "number": "xxxxxxxxxxxx4242", "avs_postal_match": null, "expiration_month": - 12, "meta": {}, "id": "CC3k3FMoyWzNKUsXNwXVDxGt", "category": "other", "type": + 12, "meta": {}, "id": "CC4q3Nm89zMS5ujKwSr7wduZ", "category": "other", "type": "credit", "cvv_match": null, "bank_name": "", "avs_street_match": null, "brand": - "Visa", "updated_at": "2014-07-01T11:32:47.614703Z", "fingerprint": "1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc", + "Visa", "updated_at": "2014-07-01T15:44:20.460279Z", "fingerprint": "1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc", "can_debit": true, "name": null, "expiration_year": 2020, "can_credit": false, - "is_verified": true, "avs_result": null, "cvv": null, "created_at": "2014-07-01T11:32:47.614700Z", + "is_verified": true, "avs_result": null, "cvv": null, "created_at": "2014-07-01T15:44:20.460277Z", "address": {"city": null, "line2": null, "line1": null, "state": null, "postal_code": null, "country_code": null}}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/cards/CC3k3FMoyWzNKUsXNwXVDxGt + uri: https://api.balancedpayments.com:443/cards/CC4q3Nm89zMS5ujKwSr7wduZ response: body: string: !!binary | - H4sIAAAAAAAAA41UTW/iMBC991dEOW/BNgmhXFu1B7Q9VNsPUa0ix56AReJkbYeFRfz3tfMBgcJq - c4iSGb+ZNzPPs7vxPJ9RxbU/9T7tj+ft6rc1Z0KunLkzuJOVNkUOylr9+1fyEsx/0ZfZw7x4x09l - uoDZY6L8Fr//1gVKhVyAKpWQxgExEBaQkIbRHcUsSklE0ShK0XhMkkkYolHIgPIkTfGEIvsB0SRM - ExQBoSlgxvxDYLZexwp0lbm4ssqyg0dWedLQ3PSegATkiKZrHZeFNjSLc2rY8jwGbEqhqBGFjPNC - GufH5JAhB0Ndc45lCl635X60Gj1+L7bvf55nr/rj+ffH28PmyfRYUwOLQm3d6cIsLc1DULMtwZmZ - Ai76EFvoRY4JlatY0rxGnZamjQIwV2CKyprtm9D0CKtKbrnxmNZzIggHtyi6RfgHxtMRmQZ3gzBC - 4xDPe5k4txM4l4kwrrr+RBo9Ablsxl/Ndi7GVXUWpB0YK/gFJysqadQ27nm/iJFRGXNIbHennlEV - HCXTdPFERj0JbIE62RNEUF9/Zwx9oeM1KJEKcP09SeD0dlmtjlM78qmX0kwfWS0VpDaQP6wv6fA/ - 1KXgnzOMBmMcRAjNm3u6tw366Qo6u+7NUhi4rPGyyOr90JHY1VwGgu9rVq2/6UqH6y2KYbc19LBF - doZ9q6MWxIUuKwNXUh28J4nqUV5DND5b3P5m/xdacMXM6gQAAA== + H4sIAAAAAAAAA41UXW+bMBR9769APK+JbSDQvHaaJkX70LpVWqcJGfvSeAXDbJM0i/jvs/lISJpO + 4yEi93LuPefeY++vPM9nVHHtL70f9o/n7btfGy6EfHLhMeC+bLSpSlA26t9+C1bV6kuGSfD28/f3 + wW6htuGn8p0/4Ns3Y6FcyEdQtRLSOCAGwkIS0Si+oZjFOYkpCuIcLRYkS6IIBREDyrM8xwlF9gXi + JMozFAOhOWDG/ENhttmkCnRTuLqyKYpDRjZl1tN8njwhCckRTTc6rSttaJGW1LD1eQ14roWiRlQy + LStpXB6TQ4cSDHXDOcoUvBvLbfg7+FgmN38+3EXNr9X2TsVb3jxMWFMDj5Xaua8rs7Y0D0XNrgYX + Zgq4MKdCL3LMqHxKJS071Kk0bRSAuSwtU1R2bO+FpkdYU3PLjae02xNBOLxG8TXCX3G0DMMlCWY4 + SKIwmoihnNsNnNtEGKduupHeT0Auh/HLsN2LcarOigwLYxW/kGRVI43apZPsCzMyKlMOmZ3u0jOq + gaNl+ime2GhigR1QZ3uCCJr674yhL3S6ASVyAW6+Jw2c3y671XEaVr70clroI6u1gtwW8ufdIZ3/ + h7sU/HOHaBYuEInjh/6ctnZAP52gs+PeXwoz1zVdV0V3P4wk9h2XmeBtx2rI91MZcZOLYj7eGno+ + IMdAO1hvAHGh68bAK60O2ZNG3SpfQ/Q5K669av8C0Edhy+oEAAA= headers: content-encoding: [gzip] - content-length: ['550'] + content-length: ['551'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -536,22 +536,22 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA6VUTW/bMAy991cYOuy0JpJix22AYocW7aFYD8X6gQyDIdtUI9SWPFnOkgX575X8 - ETtpOgxbDkFCiuQj3yM3J56HEqbTEs287/aP523qb2vOhHx15s7gXlalUTloa0WXD/Ten/9k97dX - c/VEbgr+ArfXsUZt/PZzl4gL+QK60EIaF0iAJj4NWBCeM5KEnIYMT0KOp1ManwUBngQJsDTmnJwx - bH9AeBbwGIdAGQeSJGiXOFkuIw1llbm8ssqynUdWedzAXA0+PvVpH82WZVSo0rAsyplJFoc5YFUI - zYxQMsqVNM5P6K5CDoa54fRtirQey+XkdXL9Va2fft/dPpTPd7+eH69WN2aAmhl4UXrtXiuzsDB3 - Sc26AGdONKRiGGIbPYoxZvI1kiyvo/ZbK40GMB+EaSZrtI+iZH1YVaQWWxqxmieKiX+Kw1NMvhEy - m9CZfz4KQjwNyHxQKU0tA4cyEcZ1N2Sk0RPQ42by3mx5Ma6rgyQtYYlKjzgTVUmj19HA+06MCZNR - CrGd7swzuoJeMs0U92Q0kMAamJM9xRQP9XeAEIkyWoIWXICb714Bp7fjanWYWspnHmdZ2aNaaOA2 - ERrXSzr+C3Vp+COH4WhK/BDjebOnWzugH64h1Am6nhjKWFmLYNytvK39wcI30L5kIhfmguBPivMS - zAVuRYIkrPb3E/VNtffk35PXVS1Q0rKCmurW0hkKDUuhKifRnltklN17F9eQibjQ/9+wHV19Dg5O - Z3NgR6koi8qAA9LRualZHYl0O955W0CNZ3hwB1S0cZ132426DbJJo4XK6qN+pJR71fr3itVr8UFM - 63MdnmzfAN+7keI2BgAA + H4sIAAAAAAAAA6VUTW/bMAy991cYOuy0JrJsx2mAYocOw4BgH1i3AeswGLJNNVptyZPlpGmR/z5J + tmMnTYdhyyFISJF85Hvk45nnoYyqvEYL77v543mP7tuYCy7urLk32JdNrWUJyljR1ZdgKZefUp8E + rz9+extsZ2oTfijfoC5+97JPxLi4BVUpLrQN9IFkIYloFF9QP4sZiSkOYoZnM5LOowgHUQY0Txnz + 5xSbHxDPI5biGAhl4GcZ2ifO1utEQd0UNq9oimLvEU2ZtjDvR5+QhGSIpus6qWStaZGUVGer4xxw + X3FFNZciKaXQ1u+TfYUSNLXDGdrkuRvLVfgreF/OLx7eXUfNz+XmWsWbvLkZoaYabqXa2tdSrwzM + fVK9rcCaMwU514eNnsSYUnGXCFq6qMPWaq0A9OnWUkWFQ/uV13QIa6rcYMsT6ngi2A/PcXyO/c9+ + tAjDBQkmfjCPwmjUDM1zw8CxTLi23Y0ZafUE5LTZf2o2vGjb1VGSjrBM5iecmWyEVttk5H0ixoyK + JIfUTHfhadXAIJl2igcyGklgC9TKnmCCx/o7Qoh4naxBccbBzveggNXbabVaTB3lC4/Roh5QrRQw + kwhN3ZJO/0JdCv7IIZ6EM0zi+Kbd050Z0A/bEOoF7SaGClo7EUz7lTe1n1n4FtqrgpdcX/r4hWSs + Bn2JO10hAfeH+4mGprp78u/JXVUD1O9YQW11Y+kNlYI1l42V6MAt0tLsvY1ryUSMq/9v2IzOnYOj + 09ke2EnO66rRYIH0dD46Vic830333g5Q6xkf3BEVXVzv3fWj7oJM0mQlC3fUT5Syrzr/QTG3Fs/E + dD7b4dnuN0A3AAY2BgAA headers: content-encoding: [gzip] content-length: ['642'] @@ -561,22 +561,22 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA6VUTW/bMAy991cYOuy0JpJix22AYocW7aFYD8X6gQyDIdtUI9SWPFnOkgX575X8 - ETtpOgxbDkFCiuQj3yM3J56HEqbTEs287/aP523qb2vOhHx15s7gXlalUTloa0WXD/Ten/9k97dX - c/VEbgr+ArfXsUZt/PZzl4gL+QK60EIaF0iAJj4NWBCeM5KEnIYMT0KOp1ManwUBngQJsDTmnJwx - bH9AeBbwGIdAGQeSJGiXOFkuIw1llbm8ssqynUdWedzAXA0+PvVpH82WZVSo0rAsyplJFoc5YFUI - zYxQMsqVNM5P6K5CDoa54fRtirQey+XkdXL9Va2fft/dPpTPd7+eH69WN2aAmhl4UXrtXiuzsDB3 - Sc26AGdONKRiGGIbPYoxZvI1kiyvo/ZbK40GMB+EaSZrtI+iZH1YVaQWWxqxmieKiX+Kw1NMvhEy - m9CZfz4KQjwNyHxQKU0tA4cyEcZ1N2Sk0RPQ42by3mx5Ma6rgyQtYYlKjzgTVUmj19HA+06MCZNR - CrGd7swzuoJeMs0U92Q0kMAamJM9xRQP9XeAEIkyWoIWXICb714Bp7fjanWYWspnHmdZ2aNaaOA2 - ERrXSzr+C3Vp+COH4WhK/BDjebOnWzugH64h1Am6nhjKWFmLYNytvK39wcI30L5kIhfmguBPivMS - zAVuRYIkrPb3E/VNtffk35PXVS1Q0rKCmurW0hkKDUuhKifRnltklN17F9eQibjQ/9+wHV19Dg5O - Z3NgR6koi8qAA9LRualZHYl0O955W0CNZ3hwB1S0cZ132426DbJJo4XK6qN+pJR71fr3itVr8UFM - 63MdnmzfAN+7keI2BgAA + H4sIAAAAAAAAA6VUTW/bMAy991cYOuy0JrJsx2mAYocOw4BgH1i3AeswGLJNNVptyZPlpGmR/z5J + tmMnTYdhyyFISJF85Hvk45nnoYyqvEYL77v543mP7tuYCy7urLk32JdNrWUJyljR1ZdgKZefUp8E + rz9+extsZ2oTfijfoC5+97JPxLi4BVUpLrQN9IFkIYloFF9QP4sZiSkOYoZnM5LOowgHUQY0Txnz + 5xSbHxDPI5biGAhl4GcZ2ifO1utEQd0UNq9oimLvEU2ZtjDvR5+QhGSIpus6qWStaZGUVGer4xxw + X3FFNZciKaXQ1u+TfYUSNLXDGdrkuRvLVfgreF/OLx7eXUfNz+XmWsWbvLkZoaYabqXa2tdSrwzM + fVK9rcCaMwU514eNnsSYUnGXCFq6qMPWaq0A9OnWUkWFQ/uV13QIa6rcYMsT6ngi2A/PcXyO/c9+ + tAjDBQkmfjCPwmjUDM1zw8CxTLi23Y0ZafUE5LTZf2o2vGjb1VGSjrBM5iecmWyEVttk5H0ixoyK + JIfUTHfhadXAIJl2igcyGklgC9TKnmCCx/o7Qoh4naxBccbBzveggNXbabVaTB3lC4/Roh5QrRQw + kwhN3ZJO/0JdCv7IIZ6EM0zi+Kbd050Z0A/bEOoF7SaGClo7EUz7lTe1n1n4FtqrgpdcX/r4hWSs + Bn2JO10hAfeH+4mGprp78u/JXVUD1O9YQW11Y+kNlYI1l42V6MAt0tLsvY1ryUSMq/9v2IzOnYOj + 09ke2EnO66rRYIH0dD46Vic830333g5Q6xkf3BEVXVzv3fWj7oJM0mQlC3fUT5Syrzr/QTG3Fs/E + dD7b4dnuN0A3AAY2BgAA headers: content-encoding: [gzip] content-length: ['642'] diff --git a/tests/py/fixtures/TestBillingClear.yml b/tests/py/fixtures/TestBillingClear.yml index 485e00085a..d8e6763880 100644 --- a/tests/py/fixtures/TestBillingClear.yml +++ b/tests/py/fixtures/TestBillingClear.yml @@ -3,19 +3,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -25,22 +25,22 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA6VUTW/bMAy991cYOuy0JpJix22AYocW7aFYD8X6gQyDIdtUI9SWPFnOkgX575X8 - ETtpOgxbDkFCiuQj3yM3J56HEqbTEs287/aP523qb2vOhHx15s7gXlalUTloa0WXD/Ten/9k97dX - c/VEbgr+ArfXsUZt/PZzl4gL+QK60EIaF0iAJj4NWBCeM5KEnIYMT0KOp1ManwUBngQJsDTmnJwx - bH9AeBbwGIdAGQeSJGiXOFkuIw1llbm8ssqynUdWedzAXA0+PvVpH82WZVSo0rAsyplJFoc5YFUI - zYxQMsqVNM5P6K5CDoa54fRtirQey+XkdXL9Va2fft/dPpTPd7+eH69WN2aAmhl4UXrtXiuzsDB3 - Sc26AGdONKRiGGIbPYoxZvI1kiyvo/ZbK40GMB+EaSZrtI+iZH1YVaQWWxqxmieKiX+Kw1NMvhEy - m9CZfz4KQjwNyHxQKU0tA4cyEcZ1N2Sk0RPQ42by3mx5Ma6rgyQtYYlKjzgTVUmj19HA+06MCZNR - CrGd7swzuoJeMs0U92Q0kMAamJM9xRQP9XeAEIkyWoIWXICb714Bp7fjanWYWspnHmdZ2aNaaOA2 - ERrXSzr+C3Vp+COH4WhK/BDjebOnWzugH64h1Am6nhjKWFmLYNytvK39wcI30L5kIhfmguBPivMS - zAVuRYIkrPb3E/VNtffk35PXVS1Q0rKCmurW0hkKDUuhKifRnltklN17F9eQibjQ/9+wHV19Dg5O - Z3NgR6koi8qAA9LRualZHYl0O955W0CNZ3hwB1S0cZ132426DbJJo4XK6qN+pJR71fr3itVr8UFM - 63MdnmzfAN+7keI2BgAA + H4sIAAAAAAAAA6VUTW/bMAy991cYOuy0JrJsx2mAYocOw4BgH1i3AeswGLJNNVptyZPlpGmR/z5J + tmMnTYdhyyFISJF85Hvk45nnoYyqvEYL77v543mP7tuYCy7urLk32JdNrWUJyljR1ZdgKZefUp8E + rz9+extsZ2oTfijfoC5+97JPxLi4BVUpLrQN9IFkIYloFF9QP4sZiSkOYoZnM5LOowgHUQY0Txnz + 5xSbHxDPI5biGAhl4GcZ2ifO1utEQd0UNq9oimLvEU2ZtjDvR5+QhGSIpus6qWStaZGUVGer4xxw + X3FFNZciKaXQ1u+TfYUSNLXDGdrkuRvLVfgreF/OLx7eXUfNz+XmWsWbvLkZoaYabqXa2tdSrwzM + fVK9rcCaMwU514eNnsSYUnGXCFq6qMPWaq0A9OnWUkWFQ/uV13QIa6rcYMsT6ngi2A/PcXyO/c9+ + tAjDBQkmfjCPwmjUDM1zw8CxTLi23Y0ZafUE5LTZf2o2vGjb1VGSjrBM5iecmWyEVttk5H0ixoyK + JIfUTHfhadXAIJl2igcyGklgC9TKnmCCx/o7Qoh4naxBccbBzveggNXbabVaTB3lC4/Roh5QrRQw + kwhN3ZJO/0JdCv7IIZ6EM0zi+Kbd050Z0A/bEOoF7SaGClo7EUz7lTe1n1n4FtqrgpdcX/r4hWSs + Bn2JO10hAfeH+4mGprp78u/JXVUD1O9YQW11Y+kNlYI1l42V6MAt0tLsvY1ryUSMq/9v2IzOnYOj + 09ke2EnO66rRYIH0dD46Vic830333g5Q6xkf3BEVXVzv3fWj7oJM0mQlC3fUT5Syrzr/QTG3Fs/E + dD7b4dnuN0A3AAY2BgAA headers: content-encoding: [gzip] content-length: ['642'] @@ -50,7 +50,7 @@ interactions: body: null headers: {} method: DELETE - uri: https://api.balancedpayments.com:443/cards/CC3k3FMoyWzNKUsXNwXVDxGt + uri: https://api.balancedpayments.com:443/cards/CC4q3Nm89zMS5ujKwSr7wduZ response: body: {string: !!python/unicode ''} headers: @@ -61,19 +61,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -83,13 +83,13 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"cards\": [],\n \"meta\": {\n \"last\": - \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\",\n \"next\": - null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\",\n + \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\",\n \"next\": + null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['364'] @@ -99,13 +99,13 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"cards\": [],\n \"meta\": {\n \"last\": - \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\",\n \"next\": - null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\",\n + \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\",\n \"next\": + null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/cards?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/cards?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['364'] @@ -115,19 +115,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -137,21 +137,21 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61U72vbMBD93r/C+MM+rYlkK+lcKCP9sa4LTViXMOgYRpZPrahje7LcNoT875MU - O7bTdHTQfDDk7nT37r3HrQ4cx41o+hBSxrIyVYV77PzSQcdZ2a9Oy6xUIr0L03IRgdR51/cwPiKf - Btj9WBfZHildgMn/GE2c69HsYuqc3VycX82c+eRqOmmKq1mhWua2nt0De9Ajmoq60ygRDJzLnjOW - EBVNPhHpg4Fag9QwWVmobLEBeDb3bsjtH3ozPr/NfuLLnN/B+Esktw12tg4fQQouGFUiS3XbtEyS - arP1dkVG05BJiIXSFUqW0GQkUAVxSE3G9RAmh+joEOEZxse+d0xwLxhgz/NvmwW4XhdkLkVq3ww4 - imjAqc+xLgSO/SgghBJEIw6EwBHoNOBh4BMYEg+hAPssIowgjzLApGlc5vE/sfi94SAgQ9zCci+B - GxD9jhH6pyM//pqPg9Pr2WUC36Kn78tpMPdOm1kLUNSI0HBUK9t45dn+EEIts9A4llDs6ifUsqK+ - JlarpIUGb38YvwwXSu/+MpxnOpGELIv3JK3t5bKd3St9DJFVntOkaKQXsWHuVapsp7X+/jY7uTVh - NuwmtLDi92vrFv3XjNuV5nMiFkKdYPQh47wAdYIqTdwUnk1L498Nie5W3PcbYqfrKRhVMzYodKQO - 5BIeRVYahVtQVKZVMO+qZ1zI9yNAU2ptaBzTOg3d49azIhpYu2ZfdbzfE/G6X9VWYLv59r/O8Xhj - 7/a9qc/aDtT2PWs5ZAdoXbWuHdDFublXbwRVF//fxpbMzj79HYyvkrV2jWoH67+Jyu5WhgYAAA== + H4sIAAAAAAAAA61U227aQBB9z1dYfuhTg3ftBQpSVJFL05QGIkqkXlRZ6/U4rDA2Wq9TEOLfu7vY + 2CZQpVJ4sMTM7MyZc45mc2ZZdkCTuU8ZS/NEZnbf+qWClrUxX5UWaS558uQn+SIAofK252LcJR/a + 2H5fFpkeCV2Azn8bjKz7wfRmbF1Nbq7vptbj6G48qoqLWb5cL009mwGbqxFVRdlpEHMG1m3LGgoI + siof82SuoZYgFUyWZzJd7ABePXrDdDgJsOtdP/z47K074g8ZLz7tGxxs7T+D4BFnVPI0UW2TPI6L + zbb7FRlNfCYg5FJVSJFDlRFAJYQ+1RnbRZico+45wlPc7hPSx26r0+m1Ef5ZLRCpdUEsBU/Mm3aE + AtqLqBdh7LoQYS/oEUIJokEEhEAXVBpwp+cR6BAXoR72WEAYQS5lgEnVOF+G/8TSaaEudtt1LDMB + kQbhNIzgXA7IjK++0rl3F8YPXyb0Vt5/f7rsVrMWIKkWoeKoVLbyysr8EEI1s9AwFJAd6sfluqC+ + JFappIQG93gYvwxnUu3+MrxMVSL2WRoeSRrbi3U9e1T6EAKjfETjrJKeh5q5k1SZTlv1/a13skvC + TNiOaWbEd0rrZs4p4zal+RjzBZcXGL1LoygDeYEKTewEVrql9u+ORHsv7tsNMdPVFIyKGTsUKlIG + lgKeeZprhWtQZKpU0O+KZxEXb0eAotTYUDumdhqax61lRNSwDs2+aXi/xcOtU9QWYJv5+r/G8Xhl + 7/q9Kc/aAdT6Pas55ABoWbUtHdDEubtXrwRVFv/fxobMxj7OAcaTZG1trdrZ9i8rRFE8hgYAAA== headers: content-encoding: [gzip] content-length: ['625'] @@ -161,7 +161,7 @@ interactions: body: null headers: {} method: DELETE - uri: https://api.balancedpayments.com:443/bank_accounts/BA3dHpK9BMTGleJbwQyO9U2B + uri: https://api.balancedpayments.com:443/bank_accounts/BA4hixLak3IdlPJRaGtMXgB7 response: body: {string: !!python/unicode ''} headers: @@ -172,19 +172,19 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF response: body: string: !!binary | - H4sIAAAAAAAAA41UQW7bMBC85xWCznVkyS6a+JqiPeQWtCjgohBWJBMRkUiFpIoahv7epS3JNKmU - veiwOzPkzo54vEmSlPTayJYpne6Sn1hIkuPpiy0BLcOq6Jvmw1RruHi10AmEMC17RXwg1inThgsw - XIpRZRQZZrW+o2AYLcEgIi3W+Xa1/rRa59/yfLcpdkV+e/+x2Nzn+3SmEMUilLvNXVFsHAqVVdlK - YWp/GE7tsQ/fi6ft/g2eHj/v5Y/8a/f8wh6/VOpyZldL4Q+Y1oo9W3o2O5jFldBoUoMwpTZgemtk - KuSqBUPqy3EtM+BZzN4sdJ0GDtrZDgyUPxpQqpj2NkW4OXhA3BOulBXL5Tws24v7XqBIJ7HRlETS - hSaRvTDq4HaDQape4z20LpdSp7UoG9Bm64/JWuBNUORXgRvwrF82P3ZSJ7yX6N/OEU4zdO2UZ50d - 58WO/WFckUMkoGhZy4aeVulEwSFzOmQO7pxkR6MC8VoCOZkUkbmGBkqUVTwmMWIWuO7f+o4Pzi+9 - YAb7Y5gSmIL/GyaEB5eytkUsOUMCJuW66w2LkGdUwDcKhAZiH6+IxhUy0MFHohexGSbQAvs3vszQ - RK6g2AQLFKSi57f9H+EcMQEXn1oazdMEwv9ruBn+AkKZuqpTBgAA + H4sIAAAAAAAAA41UTW/cIBS851dYPnfjZe1spFwTVZVyaFS1h7aqLAxERrFhw0fb1cr/vY9d28uC + EypZPjxmBt68gcNVluXEaiN7pnR+l/2EQpYdjn9YErhnUBW26z5MtY6LFwedQADT0ioSAqFOmTZc + YMOlGFVGkWFWszuKDaM1NoDIN2tUrda3qzX6im7uqhK+65vytkTbH/lMIYolKBXalgh5FCqbupfC + tGEznLpt77+Vj/LxS4M25cPT90/lfqv+VJ/7j+c9d60UYYN5q9izoxezg0VaCYwmLRam1gYb64zM + hVz12JD2vF3PDA4sZq8Ous4jB11ve4ZV2BqmVDEdTIpwsw+AMCcYKdssl1FcdgcPvQCRnYSFriaS + LiwSaYVRe381aqSxGs6hdb2UOq1F3WFtqrBN1mPeRUV+EbgB9vrl8uM69cJ7jv71HOG8ANeOedbF + YR7suD6MI/KIBCtat7Kjx1F6UfDInA6Fhzsl2dNosHipMTmalJC5hEZKlDU8JTFiFrj+bX3DB+9K + L5jB/hqmBKTg/5qJ4dGhnG0JS06QiEm53lnDEuQZFfGNwkJj4h6vhMYFMtKBR8KKVA8TaIH9G15m + 3CWOoNgEixSkoqe3/Z1wjpiIC08tTeZpAsH9Gq6Gf35I1iBTBgAA headers: content-encoding: [gzip] content-length: ['495'] @@ -194,13 +194,13 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"bank_accounts\": [],\n \"meta\": {\n - \ \"last\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\",\n - \ \"next\": null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\",\n + \ \"last\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\",\n + \ \"next\": null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['396'] @@ -210,13 +210,13 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"bank_accounts\": [],\n \"meta\": {\n - \ \"last\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\",\n - \ \"next\": null,\n \"href\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\",\n + \ \"last\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\",\n + \ \"next\": null,\n \"href\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU2R4ZqaRKDZoW1GpfgeKFbr/bank_accounts?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU3KoKRb123DPYH3y6rw4OmF/bank_accounts?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['396'] diff --git a/tests/py/fixtures/TestBillingPayday.yml b/tests/py/fixtures/TestBillingPayday.yml deleted file mode 100644 index 09b174f739..0000000000 --- a/tests/py/fixtures/TestBillingPayday.yml +++ /dev/null @@ -1,148 +0,0 @@ -interactions: -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr - response: - body: - string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA - headers: - content-encoding: [gzip] - content-length: ['495'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?limit=10&offset=0 - response: - body: - string: !!binary | - H4sIAAAAAAAAA6VVyW7bMBC95ysIHXpKbIlyvAFB4ThBigRx9gJNUQg0F5uITDok5dgI/O8lKcmS - sqBFy4MAzcKZefNm+LoHQICRIjoYgp/2B4BX/7XilIsnJy4FzjLTRi6ostJg/ABvx3x2Pn6+OSE/ - bk7x/XwVn69VUPhv98uLGBczqpaKC+Mc+7jHwg6M4+4hYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiLY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMgXb1FXIEJsETqBTnEs1wC+h5AT - f+8Y3p1dn0yujx9CeXUxRVQPzPO4VhNGhs6k2jhraeYWgl3CZrOkTowVJdw0QSzrb2A4ReIpEWjh - vc6vL69uz0YTMP42ujsFx6PJxT6YtEatJp7aKEpNheeG6spgqpDwdXznGlXibEls1iRBnh0wjDoH - Ye8gjO6jaBjDIYxb/X4fdgaPtVA5ZNa+Tk4LsJXUa8hZTB2yH4gjFy+CMbhEXIA7n3q9MZYaxhf/ - YT8L6mBJvM0ghFFY98YyE0ZtksLAxX83GRiJhNCpbccQGJXRir857I1+1Pi4ocjNIAxhRUg7DG/K - DLhOVlRxxqmDvRHAkX83OkFeOyiYCGybQF4ecNkDIoGQBniW1Brusi/YNAQMpbrKf64oc6i0/W5p - /wVxFf0DCWC/04l7j/lsbC2UvxxaQWMOgxRpz6J2uals7E/2VJ7a15QvuDmKwi+SMU3NUdnDQNB1 - c60EVVHFGvz3y31Um2i5UII8upUUDQ2Wiq64zNwCrlgQGGnXlfPLmRIwrv6/YAujX9ZvNn7+LrQI - 18vM2Dmu2vnqu9riZNveaYuEck39nai1ovArtdtiXIpAzjWZy9S/RSVzaqFq+kYwP0Cf+BQ6V+He - 9jfXVB+z7QYAAA== - headers: - content-encoding: [gzip] - content-length: ['751'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: '{"amount": 1000, "description": "janet"}' - headers: {} - method: POST - uri: https://api.balancedpayments.com:443/cards/CC2SGPDNPBU0oOKbaes9tqC1/debits - response: - body: {string: !!python/unicode "{\n \"debits\": [\n {\n \"status\": - \"succeeded\",\n \"description\": \"janet\",\n \"links\": {\n \"customer\": - \"CU2RCigJCqQDdYQEcThv3Jxr\",\n \"source\": \"CC2SGPDNPBU0oOKbaes9tqC1\",\n - \ \"order\": null,\n \"dispute\": null\n },\n \"updated_at\": - \"2014-07-01T11:33:17.139146Z\",\n \"created_at\": \"2014-07-01T11:33:16.424807Z\",\n - \ \"transaction_number\": \"W408-651-6074\",\n \"failure_reason\": - null,\n \"currency\": \"USD\",\n \"amount\": 1000,\n \"failure_reason_code\": - null,\n \"meta\": {},\n \"href\": \"/debits/WD3QtectdD2zCuJi6l0f8vjj\",\n - \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD3QtectdD2zCuJi6l0f8vjj\"\n - \ }\n ],\n \"links\": {\n \"debits.customer\": \"/customers/{debits.customer}\",\n - \ \"debits.dispute\": \"/disputes/{debits.dispute}\",\n \"debits.source\": - \"/resources/{debits.source}\",\n \"debits.order\": \"/orders/{debits.order}\",\n - \ \"debits.refunds\": \"/debits/{debits.id}/refunds\",\n \"debits.events\": - \"/debits/{debits.id}/events\"\n }\n}"} - headers: - content-length: ['1002'] - content-type: [application/json] - status: {code: 201, message: CREATED} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr - response: - body: - string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA - headers: - content-encoding: [gzip] - content-length: ['495'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?limit=10&offset=0 - response: - body: - string: !!binary | - H4sIAAAAAAAAA6VVyW7bMBC95ysIHXpKbIlyvAFB4ThBigRx9gJNUQg0F5uITDok5dgI/O8lKcmS - sqBFy4MAzcKZefNm+LoHQICRIjoYgp/2B4BX/7XilIsnJy4FzjLTRi6ostJg/ABvx3x2Pn6+OSE/ - bk7x/XwVn69VUPhv98uLGBczqpaKC+Mc+7jHwg6M4+4hYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiLY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMgXb1FXIEJsETqBTnEs1wC+h5AT - f+8Y3p1dn0yujx9CeXUxRVQPzPO4VhNGhs6k2jhraeYWgl3CZrOkTowVJdw0QSzrb2A4ReIpEWjh - vc6vL69uz0YTMP42ujsFx6PJxT6YtEatJp7aKEpNheeG6spgqpDwdXznGlXibEls1iRBnh0wjDoH - Ye8gjO6jaBjDIYxb/X4fdgaPtVA5ZNa+Tk4LsJXUa8hZTB2yH4gjFy+CMbhEXIA7n3q9MZYaxhf/ - YT8L6mBJvM0ghFFY98YyE0ZtksLAxX83GRiJhNCpbccQGJXRir857I1+1Pi4ocjNIAxhRUg7DG/K - DLhOVlRxxqmDvRHAkX83OkFeOyiYCGybQF4ecNkDIoGQBniW1Brusi/YNAQMpbrKf64oc6i0/W5p - /wVxFf0DCWC/04l7j/lsbC2UvxxaQWMOgxRpz6J2uals7E/2VJ7a15QvuDmKwi+SMU3NUdnDQNB1 - c60EVVHFGvz3y31Um2i5UII8upUUDQ2Wiq64zNwCrlgQGGnXlfPLmRIwrv6/YAujX9ZvNn7+LrQI - 18vM2Dmu2vnqu9riZNveaYuEck39nai1ovArtdtiXIpAzjWZy9S/RSVzaqFq+kYwP0Cf+BQ6V+He - 9jfXVB+z7QYAAA== - headers: - content-encoding: [gzip] - content-length: ['751'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: '{"amount": 1000, "description": "janet"}' - headers: {} - method: POST - uri: https://api.balancedpayments.com:443/cards/CC2SGPDNPBU0oOKbaes9tqC1/debits - response: - body: {string: !!python/unicode "{\n \"debits\": [\n {\n \"status\": - \"succeeded\",\n \"description\": \"janet\",\n \"links\": {\n \"customer\": - \"CU2RCigJCqQDdYQEcThv3Jxr\",\n \"source\": \"CC2SGPDNPBU0oOKbaes9tqC1\",\n - \ \"order\": null,\n \"dispute\": null\n },\n \"updated_at\": - \"2014-07-01T11:33:19.183741Z\",\n \"created_at\": \"2014-07-01T11:33:18.328686Z\",\n - \ \"transaction_number\": \"W826-691-7336\",\n \"failure_reason\": - null,\n \"currency\": \"USD\",\n \"amount\": 1000,\n \"failure_reason_code\": - null,\n \"meta\": {},\n \"href\": \"/debits/WD3SBmZ5oKPKtu9X2gMD9Y0J\",\n - \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD3SBmZ5oKPKtu9X2gMD9Y0J\"\n - \ }\n ],\n \"links\": {\n \"debits.customer\": \"/customers/{debits.customer}\",\n - \ \"debits.dispute\": \"/disputes/{debits.dispute}\",\n \"debits.source\": - \"/resources/{debits.source}\",\n \"debits.order\": \"/orders/{debits.order}\",\n - \ \"debits.refunds\": \"/debits/{debits.id}/refunds\",\n \"debits.events\": - \"/debits/{debits.id}/events\"\n }\n}"} - headers: - content-length: ['1002'] - content-type: [application/json] - status: {code: 201, message: CREATED} -version: 1 diff --git a/tests/py/fixtures/TestPaydayChargeOnBalanced.yml b/tests/py/fixtures/TestChargeOnBalanced.yml similarity index 55% rename from tests/py/fixtures/TestPaydayChargeOnBalanced.yml rename to tests/py/fixtures/TestChargeOnBalanced.yml index 1200e15abd..8a7410c67a 100644 --- a/tests/py/fixtures/TestPaydayChargeOnBalanced.yml +++ b/tests/py/fixtures/TestChargeOnBalanced.yml @@ -3,46 +3,46 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA6VVyW7bMBC95ysIHXpKbIlyvAFB4ThBigRx9gJNUQg0F5uITDok5dgI/O8lKcmS - sqBFy4MAzcKZefNm+LoHQICRIjoYgp/2B4BX/7XilIsnJy4FzjLTRi6ostJg/ABvx3x2Pn6+OSE/ - bk7x/XwVn69VUPhv98uLGBczqpaKC+Mc+7jHwg6M4+4hYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiLY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMgXb1FXIEJsETqBTnEs1wC+h5AT - f+8Y3p1dn0yujx9CeXUxRVQPzPO4VhNGhs6k2jhraeYWgl3CZrOkTowVJdw0QSzrb2A4ReIpEWjh - vc6vL69uz0YTMP42ujsFx6PJxT6YtEatJp7aKEpNheeG6spgqpDwdXznGlXibEls1iRBnh0wjDoH - Ye8gjO6jaBjDIYxb/X4fdgaPtVA5ZNa+Tk4LsJXUa8hZTB2yH4gjFy+CMbhEXIA7n3q9MZYaxhf/ - YT8L6mBJvM0ghFFY98YyE0ZtksLAxX83GRiJhNCpbccQGJXRir857I1+1Pi4ocjNIAxhRUg7DG/K - DLhOVlRxxqmDvRHAkX83OkFeOyiYCGybQF4ecNkDIoGQBniW1Brusi/YNAQMpbrKf64oc6i0/W5p - /wVxFf0DCWC/04l7j/lsbC2UvxxaQWMOgxRpz6J2uals7E/2VJ7a15QvuDmKwi+SMU3NUdnDQNB1 - c60EVVHFGvz3y31Um2i5UII8upUUDQ2Wiq64zNwCrlgQGGnXlfPLmRIwrv6/YAujX9ZvNn7+LrQI - 18vM2Dmu2vnqu9riZNveaYuEck39nai1ovArtdtiXIpAzjWZy9S/RSVzaqFq+kYwP0Cf+BQ6V+He - 9jfXVB+z7QYAAA== + H4sIAAAAAAAAA6VVW2+bMBR+76+weNhTmwBOyEWqprSbVq1NWq1dO3WakIPtxiqxmW2yoCr/fbaB + AL1o08YDEud+vvOdw9MBAF6CJFbeFHw3HwA8ubcRp4w/WnEtsJa50mJNpJF6p1/h+TdcbBbXH0hx + cQWz2Z2crH5ir/LfHdaBKOMPRGaScW0dx8mI+oMQwmiI6HicQAKjhPrhaBCRBEUDihMKI4yTkAQU + Tow5SSYUUor9IQqjkbcPnGw2sSQqT21cnqfpXsPz9bIsc9t6AvM03mij4kwojdJ4jXSysrVx0ejJ + NmMSaSZ4vBZcW33g7zOsiUZdcCR5MLYOGsFpruxHbW6xY7qItfjlLNoKhLFpQsWhVZyILQhfQsiw + i3sK52cn6i7anKELqPKLW3xzu7yctBBBmjwIWVhroVcGgn3BusiIFSeSYKa7INb9dzBcIv4Yc7R2 + Xp+v5pdfPs0W4PRsdv0RnMwW54dg0Zv1ungqLQnRDZ4FUY3BUiLu+rhlCjXiPMOmahwjx47QDwZH + /ujID26C4XQAp4NhbzwMQhjct1KVkBn7NjkNwEbS7qFkMbHIviIObD4TGcwR4+Dald4ejKGGds2/ + Os+KOonAzmbih4Hf9k5EzrUs4srA5n+xGQniMSZLM44p0DInDX9L2DvzaPGxIMjuYOiHDSHNMjxr + 02Mq3hDJKCMW9k4CS/796nhl76BiIjBjAmV7wFYPsABcaOBY0hq4rb5i0xRQlKqm/pUk1KLSd7el + /xfEleQPJBhEcBLA+3I3dgbKHxYtr7OHXoqUY1G/vlQm9xt3qiztfcrWTB8H/jtBqSL6uJ6hx8m2 + e1a8pqnqDP57cJfVFFofFK/MbiTVQL1Mkg0TuT3ADQs8Lcy5sn4lUzzK5P83bGB0x/rZxS//Cz3M + VJZrs8fNOJ/cVHsM7/p7bVVQqWn/J1qjqPxq7a5alyqRdY1XInX/opo5rVQtfSeZW6A3fCqd7fBg + 9xv4QHhu7QYAAA== headers: content-encoding: [gzip] content-length: ['751'] @@ -52,17 +52,17 @@ interactions: body: '{"amount": 1061, "description": "janet"}' headers: {} method: POST - uri: https://api.balancedpayments.com:443/cards/CC2SGPDNPBU0oOKbaes9tqC1/debits + uri: https://api.balancedpayments.com:443/cards/CC3MHBsW6vHaL3suLVdTVbO9/debits response: body: {string: !!python/unicode "{\n \"debits\": [\n {\n \"status\": \"succeeded\",\n \"description\": \"janet\",\n \"links\": {\n \"customer\": - \"CU2RCigJCqQDdYQEcThv3Jxr\",\n \"source\": \"CC2SGPDNPBU0oOKbaes9tqC1\",\n + \"CU3KXdyvNSDeyLP3pAWr9hqd\",\n \"source\": \"CC3MHBsW6vHaL3suLVdTVbO9\",\n \ \"order\": null,\n \"dispute\": null\n },\n \"updated_at\": - \"2014-07-01T11:33:03.633978Z\",\n \"created_at\": \"2014-07-01T11:33:03.009437Z\",\n - \ \"transaction_number\": \"W252-963-4934\",\n \"failure_reason\": + \"2014-07-01T15:44:33.253102Z\",\n \"created_at\": \"2014-07-01T15:44:32.580309Z\",\n + \ \"transaction_number\": \"W640-770-4849\",\n \"failure_reason\": null,\n \"currency\": \"USD\",\n \"amount\": 1061,\n \"failure_reason_code\": - null,\n \"meta\": {},\n \"href\": \"/debits/WD3BnKoWXRGDPxtvoKwfPl3P\",\n - \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD3BnKoWXRGDPxtvoKwfPl3P\"\n + null,\n \"meta\": {},\n \"href\": \"/debits/WD4DH9NCjErBiN50xl2g0AkN\",\n + \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD4DH9NCjErBiN50xl2g0AkN\"\n \ }\n ],\n \"links\": {\n \"debits.customer\": \"/customers/{debits.customer}\",\n \ \"debits.dispute\": \"/disputes/{debits.dispute}\",\n \"debits.source\": \"/resources/{debits.source}\",\n \"debits.order\": \"/orders/{debits.order}\",\n @@ -80,9 +80,9 @@ interactions: response: body: {string: !!python/unicode "{\n \"customers\": [\n {\n \"name\": null,\n \"links\": {\n \"source\": null,\n \"destination\": - null\n },\n \"updated_at\": \"2014-07-01T11:33:04.159328Z\",\n \"created_at\": - \"2014-07-01T11:33:04.040810Z\",\n \"dob_month\": null,\n \"id\": - \"CU3CxhsF9DKgEuHqdgc1pfjD\",\n \"phone\": null,\n \"href\": \"/customers/CU3CxhsF9DKgEuHqdgc1pfjD\",\n + null\n },\n \"updated_at\": \"2014-07-01T15:44:33.831067Z\",\n \"created_at\": + \"2014-07-01T15:44:33.712647Z\",\n \"dob_month\": null,\n \"id\": + \"CU4EY3YAnRRePOiqhVPwnzJH\",\n \"phone\": null,\n \"href\": \"/customers/CU4EY3YAnRRePOiqhVPwnzJH\",\n \ \"merchant_status\": \"no-match\",\n \"meta\": {\n \"seq\": \"3\"\n },\n \"dob_year\": null,\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \"state\": @@ -114,16 +114,16 @@ interactions: \ \"customer\": null\n },\n \"fingerprint\": \"9ea2b317b53183f5a93ba23a594a0b8a0f2183ea9cc338e0964755cd9df71b99\",\n \ \"cvv_result\": null,\n \"number\": \"xxxxxxxxxxxx4448\",\n \"avs_postal_match\": null,\n \"expiration_month\": 12,\n \"meta\": {},\n \"id\": - \"CC3DQO5ZMPJ5apmJH2CY5Gfz\",\n \"category\": \"other\",\n \"type\": + \"CC4FZsgPsRQlCDpQ75K0PC17\",\n \"category\": \"other\",\n \"type\": \"credit\",\n \"cvv_match\": null,\n \"bank_name\": \"CREDIT AGRICOLE BANK POLSKA, S.A.\",\n \"avs_street_match\": null,\n \"brand\": - \"Visa\",\n \"updated_at\": \"2014-07-01T11:33:05.211516Z\",\n \"address\": + \"Visa\",\n \"updated_at\": \"2014-07-01T15:44:34.623376Z\",\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \ \"state\": null,\n \"postal_code\": null,\n \"country_code\": null\n },\n \"can_debit\": true,\n \"name\": null,\n \"expiration_year\": 2020,\n \"cvv\": null,\n \"is_verified\": true,\n \"avs_result\": - null,\n \"can_credit\": false,\n \"href\": \"/cards/CC3DQO5ZMPJ5apmJH2CY5Gfz\",\n - \ \"created_at\": \"2014-07-01T11:33:05.211514Z\"\n }\n ],\n \"links\": + null,\n \"can_credit\": false,\n \"href\": \"/cards/CC4FZsgPsRQlCDpQ75K0PC17\",\n + \ \"created_at\": \"2014-07-01T15:44:34.623373Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": \"/cards/{cards.id}/card_holds\",\n \"cards.customer\": \"/customers/{cards.customer}\",\n \"cards.disputes\": \"/cards/{cards.id}/disputes\",\n \ \"cards.debits\": \"/cards/{cards.id}/debits\"\n }\n}"} @@ -135,110 +135,110 @@ interactions: content-type: [application/json] status: {code: 201, message: CREATED} - request: - body: '{"links": {"customer": "/customers/CU3CxhsF9DKgEuHqdgc1pfjD"}, "cvv_result": + body: '{"links": {"customer": "/customers/CU4EY3YAnRRePOiqhVPwnzJH"}, "cvv_result": null, "number": "xxxxxxxxxxxx4448", "expiration_month": 12, "meta": {}, "id": - "CC3DQO5ZMPJ5apmJH2CY5Gfz", "category": "other", "is_verified": true, "type": + "CC4FZsgPsRQlCDpQ75K0PC17", "category": "other", "is_verified": true, "type": "credit", "cvv_match": null, "bank_name": "CREDIT AGRICOLE BANK POLSKA, S.A.", - "avs_street_match": null, "brand": "Visa", "updated_at": "2014-07-01T11:33:05.211516Z", + "avs_street_match": null, "brand": "Visa", "updated_at": "2014-07-01T15:44:34.623376Z", "fingerprint": "9ea2b317b53183f5a93ba23a594a0b8a0f2183ea9cc338e0964755cd9df71b99", "can_debit": true, "name": null, "expiration_year": 2020, "can_credit": false, - "avs_postal_match": null, "avs_result": null, "cvv": null, "created_at": "2014-07-01T11:33:05.211514Z", + "avs_postal_match": null, "avs_result": null, "cvv": null, "created_at": "2014-07-01T15:44:34.623373Z", "address": {"city": null, "line2": null, "line1": null, "state": null, "postal_code": null, "country_code": null}}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/cards/CC3DQO5ZMPJ5apmJH2CY5Gfz + uri: https://api.balancedpayments.com:443/cards/CC4FZsgPsRQlCDpQ75K0PC17 response: body: string: !!binary | - H4sIAAAAAAAAA41U23KbMBB9z1cwPCc24lLAby52c3Eap0nambrTYQQSthoQVBIeux7+vRIXGzvO - tDwww1l295zdI+0uNE2PIUNcH2k/5Iem7eq3hFNCXxXcAerPkos8w0yievDVCjYr/smfzJbT8uY3 - WsagSH5N9Da/uuwKJYQuMSsYoUIl+hiakQXcyLGAZyUO9K0ImhZ0fBsakQeNxJQ4hn4cW5aHDf+D - 7TpOjHyUuCDyfX1fOF6vQ4Z5maq6tEzTfYSWWdTQ3PQe27a9QzZc87DIuYBpmEERr05r4E1BGBQk - p2GWU6HiwNx3yLCAajgHmQTVYwmsyZe5s/j8eOfAIru7MYPvznXyp8caCrzM2Vb9nYuVpLkvKrYF - VnDMMCLiWOhZjhGkryGFWZ0VPE0nty/a+PrpNpjfT7WP44eZ9ji/f56NL7XnwXhwrJ0LhrE4rz1i - kNZyvhEOD2llgSR5FMJ6kaYB7CvDvTLACwAjyxoZzsAFtuuBRa8TQnJFpz4iQsnvr6wxHDbPw+At - LBcnlOyTIu1G4xydCcZ5SQXbhr3oG7fGkIYIR3L8I02wEh881Yz5yGc9j2wxVOfCNEyjb9AThjrh - 4RozkhCs5nvUQBnyvJ0Vp9YTIy2BKT+wWjGcyEL6sD7Fw/+wH8P/2KEJgAPsRXOQKzmgn0rQyX3Q - 3BoD1TVc5Wl9gXQkdjWXAUFVzaqNN1Pp8no3ybC7VviwzeyAqvVRm4QIL0qB32m1jx41qlf5XkYT - k+Kqi+ovvj4JHQsFAAA= + H4sIAAAAAAAAA41UXW+bMBR9769APLcJYCghbxnNti7VkqZdpWaakMEmsQqG2SZtFvHfZ/OREJpO + 4wGJc7n3nnPvsfcXmqZHkCGuj7Wf8kPT9tVbwgmhLwpuAfVnwUWWYiZR3f9hT5/B84Qul3gxJ783 + T4tX+ufbV73JLy/bQjGha8xyRqhQiR6GVghMN3SAOQKxAz0QQgtAx7OhEY6gEVsSx9CLIgBG2PCu + bddxIuSh2DVDz9MPhaPtNmCYF4mqS4skOURokYY1zbfOY9v26JgNtzzIMy5gEqRQRJt+DfyWEwYF + yWiQZlSouGkdOqRYQDWco0yCqrH49ucVXy/48j7xb/J715kZC990O6yhwOuM7dTfmdhImoeiYpdj + BUcMIyJOhZ7lGEL6ElCYVln+cnpz+6hNvixv/fndVPs0+T7TFvO7h9nkUnsYTAan2rlgGIvz2kMG + aSXniXB4TCtyJMmjAFaLtAzTvjLcK8N8NJ2xbY+BM7i2TMNxV51OCMkV9X1EhJLfXVltOGydh833 + sFycULJ7RZqNRhk6E4yyggq2CzrRd26NIA0QDuX4x5pgBT56qh7zic86HtlhqM6FZVhG16A9hjrh + wRYzEhOs5nvSQBnyvJ0Vp8YTYy2GCT+y2jAcy0L6sDrFw/+wH8P/3KEtdwiAC1b1QS7lgH4pQb37 + oL41BqprsMmS6gJpSewrLgOCyopVE6+n0uZ1bpJhe63wYZPZAmXjoyYJEZ4XAn/Q6hA9aVSt8qOM + OibFlRflX+h1jAQLBQAA headers: content-encoding: [gzip] - content-length: ['584'] + content-length: ['585'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU3CxhsF9DKgEuHqdgc1pfjD + uri: https://api.balancedpayments.com:443/customers/CU4EY3YAnRRePOiqhVPwnzJH response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnetIslw08TVpUSDX9NKiENYkEzGRSIWPIoahf+/SlmRaVMtc - dNidGXJnRzxcJUlKrDayZUqn2+QXFpLkcPxiS0DLsCps03waaw0Xrw46ghCmpVVkDsQ6ZdpwAYZL - MagMIv2kZjsKhtEKDCLSdV5sVvmXVV48FsW2LLf55rr4fFuub36mE4UoFqHkm/ymyD0KlbuqlcLU - 82E4dcfe/Sjv3mv97fb+4fmr/f5Gn0nRPb3cn8/sainmA6a1Yk+Onk0OZnElNJrUIEylDRjrjEyF - XLVgSH0+rmUGZhazNwct08BBN9uegZqPBpQqpmebItzsZ0DcE66UrZfLRVh2F597gSKdxEZTEUkX - mkRaYdTe7waD7KzGe2hdLaVOa1E1oM1mPiZrgTdBkV8Ersezfrv8uEm98J6jfz1FOM3QtWOedXaY - Fjv0+2FFHpGAolUtG3pcpRcFj8xpn3m4U5I9jR2I1wrI0aSIzCU0UKJsx2MSA2aB6/+t//DB+6UX - zGDvhimBKfjYMCE8uJSzLWLJCRIwKdedNSxCnlAB3ygQGoh7vCIaF8hABx8JK2IzjKAF9h98maGJ - XEGxERYoSEVPb/t/wjlgAi4+tTSapxGE/1d/1f8Fs5efT1MGAAA= + H4sIAAAAAAAAA41Uy27bMBC85ysEnevIstS48C0oAgS9NAjaAmlRCGuShYhIpMNHW9fQv3dpSzIt + qmEvOuzODLmzIx6ukiQlVhvZMqXTTfINC0lyOH6xJaBlWBW2ad4MtYaLZwcdQAjT0ioyBWKdMm24 + AMOl6FV6kW5UszsKhtEKDCLS1TIvF8v1Ypl/yt9uynJTFNfvinx5s/6ajhSiWISyzlc3pU+hclu1 + Uph6Ogyn7tj3n8u7p+LpVjw+soeP/KX+8vBL/Plwfz5zV0sxHTCtFfvh6NnoYBZXQqNJDcJU2oCx + zshUyEULhtTn41pmYGIxe3HQIg0cdLPtGajpaECpYnqyKcLNfgLEPeFK2Wq+nIdld/GpFyiyk9ho + KiLpTJNIK4za+91gkK3VeA+tq7nUaS2qBrQpp2OyFngTFPlF4Do867vLj5vUC+85+tdjhNMMXTvm + WWeHcbF9v+tX5BEJKFrVsqHHVXpR8MicdpmHOyXZ09iCeK6AHE2KyFxCAyXKtjwm0WNmuP7f+g8f + vF96xgz22zAlMAX/N0wIDy7lbItYcoIETMr1zhoWIY+ogG8UCA3EPV4RjQtkoIOPhBWxGQbQDPsn + vszQRK6g2AALFKSip7f9lXD2mICLTy2N5mkA4f/VXXV/AWr/a3hTBgAA headers: content-encoding: [gzip] - content-length: ['494'] + content-length: ['498'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU3CxhsF9DKgEuHqdgc1pfjD/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU4EY3YAnRRePOiqhVPwnzJH/cards?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA6VU227bMAx971cYethTm1i+LHGAYsiSrtetXdsNWIfBkC050WrLriQHyYr8+yTZ - jp00xYYtDwZCiuQhzyGfDywLxIhjAUbWd/XHsp7NV5lTyh61uTHol6WQeUa4soLJF3eynIsPwfRy - dlKePeFZDIvk5xTU8evDJlFC2YzwglMmdWBAkBO5cBD5Lhy6iY8CN0KOi/zAQ3Y0RHbiKDtBQRy7 - 7pDYwVtv4PsxDnAygFEQgE3ieLEIORFlqvOyMk03HlZmUQVz2fl5njdso9FChEUuJErDDMl4vpuD - LAvKkaQ5C7OcSe2HzqZCRiTSw2nbpNiMZeJOP1/7Dx9vLnxUZBdnzuSbf5r86qBGksxyvtKvczlX - MDdJ5aog2hxzgqncbnQvxgixx5ChzERNbk+m5/fW+PT2fHJ9dWK9H3+6tG6ur+4ux4fWXW/c2+5d - SE6I3N97xBEz7XylArVhZYEVeBwiQ6RjQ+/IHhzZ8B7CkeuObL83gN5gCB86lTBWFO3qiErdfpey - SnDE2W+GL82KOKnb3klSMxrneI8zzksm+SrseF+oNUYsxCRS4x9Zkpek1VQ15i2ddTSyIkjvhWM7 - dlegOwgBFeGCcJpQoue7VUALcr+cNaZaEyMrQaloUc05SVQi0Ddb3P8L+XHyBw4dCH3oPVSLvFYD - +qEbAo3izcRAioQRQb+5Car2KxehgvYupRmVx9B+kyeJIPLYrkUCGFluLzBom6oPzr8nN1UVUFiz - AqrqytIYCk4WNC+1RFtugczVYdBxFZkgofz/G1ajM/di57ZWF7iHqShKSTSQhs5nw2qP4nV/460B - VZ7uRe5QUcc13nUz6jpIJQ3neWqu/p5S+lXt3ypm1uKVmNqnOzxY/wZttdUKVwYAAA== + H4sIAAAAAAAAA6VU30/bMBB+56+I/LAnaPNzaSqhqStsY6BRCkOCaYqc5EItEieznY4O9X+f7SRN + Wso0bX2I1Dvf3Xf3fXfPB4aBYswSjsbGN/nHMJ71V5ozQh+VuTWolxUXRQ5MWtH0q3t659xN6HwO + s0vyY3E7+0l/ff6Emvj1YZsoJfQBWMkIFSowAGxHjuVHnmONnNTDgRNh28Fe4GIzGmEztaUdcBDH + jjMCM3jr+p4XJ0GS+lYUBGiTOF4uQwa8ylReWmXZxkOrPKphPvV+ruuOumi85GFZcIGzMMciXuzm + gKeSMCxIQcO8oEL5LXtTIQeB1XC6NkmixzJ1P9zzhxmfX2XTk/LK987N2dTye6ixgIeCrdTrQiwk + zE1SsSpBmWMGCRHbje7FGGH6GFKc66jp/PTk7MaYfJyfTS8vTo33ky/nxuzy4vp8cmhcDyaD7d65 + YABif+8Rw1S3c0s47sKqMpHgkxBrIm3Tco9M/8i0bixv7Lpjxxu8tS3T8+97lZJEUrSrIyJU+33K + asGBvd9svTRL4oRqeydJw2hcJHuccVFRwVZhz/tCrTGmYQKRHP/YEKyCTlP1mLd01tPICrDaC9u0 + zb5AdxAiwsMlMJISUPPdKqAEuV/OClOjibGR4ox3qBYMUpkIDfUWD/9Cfgz+yKErOXQc37mvF3kt + B/RdNYRaxeuJoQxzLYJhexNk7VcuQg3tXUZyIo4t802RphzEsdmIBFF42l5g1DXVHJx/T66rSqBW + wwqqq0tLaygZLElRKYl23CJRyMOg4moyUUrY/zcsR6fvxc5trS/wICG8rAQoIC2dz5rVAUnWw423 + AVR7+he5R0UT13rX7aibIJk0XBSZvvp7SqlXjX+rmF6LV2Ian+rwYP0b8YzZnFcGAAA= headers: content-encoding: [gzip] - content-length: ['676'] + content-length: ['677'] content-type: [application/json] status: {code: 200, message: OK} - request: body: '{"amount": 1061, "description": "whatever username"}' headers: {} method: POST - uri: https://api.balancedpayments.com:443/cards/CC3DQO5ZMPJ5apmJH2CY5Gfz/debits + uri: https://api.balancedpayments.com:443/cards/CC4FZsgPsRQlCDpQ75K0PC17/debits response: body: {string: !!python/unicode "{\n \"errors\": [\n {\n \"status\": \"Payment Required\",\n \"category_code\": \"card-declined\",\n \"additional\": \"Account Frozen\",\n \"status_code\": 402,\n \"category_type\": - \"banking\",\n \"extras\": {},\n \"request_id\": \"OHM78c3ee8a011311e4a4e806429171ffad\",\n - \ \"description\": \"R758: Account Frozen. Your request id is OHM78c3ee8a011311e4a4e806429171ffad.\"\n + \"banking\",\n \"extras\": {},\n \"request_id\": \"OHM9b39af72013611e4b7da06429171ffad\",\n + \ \"description\": \"R758: Account Frozen. Your request id is OHM9b39af72013611e4b7da06429171ffad.\"\n \ }\n ],\n \"links\": {\n \"debits.customer\": \"/customers/{debits.customer}\",\n \ \"debits.dispute\": \"/disputes/{debits.dispute}\",\n \"debits.source\": \"/resources/{debits.source}\",\n \"debits.order\": \"/orders/{debits.order}\",\n \ \"debits.refunds\": \"/debits/{debits.id}/refunds\",\n \"debits.events\": \"/debits/{debits.id}/events\"\n },\n \"debits\": [\n {\n \"status\": \"failed\",\n \"description\": \"whatever username\",\n \"links\": - {\n \"customer\": \"CU3CxhsF9DKgEuHqdgc1pfjD\",\n \"source\": - \"CC3DQO5ZMPJ5apmJH2CY5Gfz\",\n \"order\": null,\n \"dispute\": - null\n },\n \"updated_at\": \"2014-07-01T11:33:07.337495Z\",\n \"created_at\": - \"2014-07-01T11:33:07.058857Z\",\n \"transaction_number\": \"W137-025-4334\",\n + {\n \"customer\": \"CU4EY3YAnRRePOiqhVPwnzJH\",\n \"source\": + \"CC4FZsgPsRQlCDpQ75K0PC17\",\n \"order\": null,\n \"dispute\": + null\n },\n \"updated_at\": \"2014-07-01T15:44:37.542581Z\",\n \"created_at\": + \"2014-07-01T15:44:37.270803Z\",\n \"transaction_number\": \"W081-671-9798\",\n \ \"failure_reason\": \"R758: Account Frozen.\",\n \"currency\": \"USD\",\n \"amount\": 1061,\n \"failure_reason_code\": \"card-declined\",\n - \ \"meta\": {},\n \"href\": \"/debits/WD3FVZLdNCGAUQ0VtJ2htxRn\",\n - \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD3FVZLdNCGAUQ0VtJ2htxRn\"\n + \ \"meta\": {},\n \"href\": \"/debits/WD4IXVOElpbeHACesZUPkr09\",\n + \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD4IXVOElpbeHACesZUPkr09\"\n \ }\n ]\n}"} headers: content-length: ['1426'] @@ -252,9 +252,9 @@ interactions: response: body: {string: !!python/unicode "{\n \"customers\": [\n {\n \"name\": null,\n \"links\": {\n \"source\": null,\n \"destination\": - null\n },\n \"updated_at\": \"2014-07-01T11:33:07.979850Z\",\n \"created_at\": - \"2014-07-01T11:33:07.864901Z\",\n \"dob_month\": null,\n \"id\": - \"CU3GPWAhne1hO9gpoRn8fOS1\",\n \"phone\": null,\n \"href\": \"/customers/CU3GPWAhne1hO9gpoRn8fOS1\",\n + null\n },\n \"updated_at\": \"2014-07-01T15:44:38.120756Z\",\n \"created_at\": + \"2014-07-01T15:44:38.013455Z\",\n \"dob_month\": null,\n \"id\": + \"CU4JOi5FNtTIATtNhChk2T8Z\",\n \"phone\": null,\n \"href\": \"/customers/CU4JOi5FNtTIATtNhChk2T8Z\",\n \ \"merchant_status\": \"no-match\",\n \"meta\": {\n \"seq\": \"4\"\n },\n \"dob_year\": null,\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \"state\": @@ -286,16 +286,16 @@ interactions: \ \"customer\": null\n },\n \"fingerprint\": \"1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc\",\n \ \"cvv_result\": null,\n \"number\": \"xxxxxxxxxxxx4242\",\n \"avs_postal_match\": null,\n \"expiration_month\": 12,\n \"meta\": {},\n \"id\": - \"CC3HTH0bkqdVstmShNmjWL8V\",\n \"category\": \"other\",\n \"type\": + \"CC4L2Pd5dVpoGgLm6cVV32AJ\",\n \"category\": \"other\",\n \"type\": \"credit\",\n \"cvv_match\": null,\n \"bank_name\": \"\",\n \"avs_street_match\": - null,\n \"brand\": \"Visa\",\n \"updated_at\": \"2014-07-01T11:33:08.809298Z\",\n + null,\n \"brand\": \"Visa\",\n \"updated_at\": \"2014-07-01T15:44:39.117159Z\",\n \ \"address\": {\n \"city\": null,\n \"line2\": null,\n \ \"line1\": null,\n \"state\": null,\n \"postal_code\": null,\n \"country_code\": null\n },\n \"can_debit\": true,\n \ \"name\": null,\n \"expiration_year\": 2020,\n \"cvv\": null,\n \ \"is_verified\": true,\n \"avs_result\": null,\n \"can_credit\": - false,\n \"href\": \"/cards/CC3HTH0bkqdVstmShNmjWL8V\",\n \"created_at\": - \"2014-07-01T11:33:08.809295Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": + false,\n \"href\": \"/cards/CC4L2Pd5dVpoGgLm6cVV32AJ\",\n \"created_at\": + \"2014-07-01T15:44:39.117156Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": \"/cards/{cards.id}/card_holds\",\n \"cards.customer\": \"/customers/{cards.customer}\",\n \ \"cards.disputes\": \"/cards/{cards.id}/disputes\",\n \"cards.debits\": \"/cards/{cards.id}/debits\"\n }\n}"} @@ -307,34 +307,34 @@ interactions: content-type: [application/json] status: {code: 201, message: CREATED} - request: - body: '{"links": {"customer": "/customers/CU3GPWAhne1hO9gpoRn8fOS1"}, "cvv_result": + body: '{"links": {"customer": "/customers/CU4JOi5FNtTIATtNhChk2T8Z"}, "cvv_result": null, "number": "xxxxxxxxxxxx4242", "expiration_month": 12, "meta": {}, "id": - "CC3HTH0bkqdVstmShNmjWL8V", "category": "other", "is_verified": true, "type": + "CC4L2Pd5dVpoGgLm6cVV32AJ", "category": "other", "is_verified": true, "type": "credit", "cvv_match": null, "bank_name": "", "avs_street_match": null, "brand": - "Visa", "updated_at": "2014-07-01T11:33:08.809298Z", "fingerprint": "1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc", + "Visa", "updated_at": "2014-07-01T15:44:39.117159Z", "fingerprint": "1e2c425a579a1c7f27a037f0662b855035ceadbff18a0adbe785fb07e2afe1cc", "can_debit": true, "name": null, "expiration_year": 2020, "can_credit": false, - "avs_postal_match": null, "avs_result": null, "cvv": null, "created_at": "2014-07-01T11:33:08.809295Z", + "avs_postal_match": null, "avs_result": null, "cvv": null, "created_at": "2014-07-01T15:44:39.117156Z", "address": {"city": null, "line2": null, "line1": null, "state": null, "postal_code": null, "country_code": null}}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/cards/CC3HTH0bkqdVstmShNmjWL8V + uri: https://api.balancedpayments.com:443/cards/CC4L2Pd5dVpoGgLm6cVV32AJ response: body: string: !!binary | - H4sIAAAAAAAAA41U32+bMBB+71+BeF4T24RC8jb1YX2Y1mntWqnVhIx9BC9gmG2iRhH/+2x+JCRN - p/GA4M7f3Xd3n29/5Xk+o4prf+W92h/P23dvay6E3DjzaHAnG22qEpS1+rc/gy/fnz/nEnB+v1zX - 1Q8ZZ/cP2B/w7acxUCbkGlSthDQOiIGwBQlpGC0pZlFGIoqCKEM3NySNwxAFIQPK0yzDMUX2A6I4 - zFIUAaEZYMb8Q2C23SYKdFO4uLIpioNHNmXa03ybPAuyIEc03eqkrrShRVJSw/LzGPBWC0WNqGRS - VtI4PyaHDCUY6ppzLFPwri23wd3jHUo3f/iTNuVD/q38/fw1fpqwpgbWldq505XJLc1DULOrwZmZ - Ai7MaaEXOaZUbhJJyw51Wpo2CsBcLi1VVHZsn4SmR1hTc8uNJ7SbE0F4cY2ia4QfMV4FwQotZwTH - eBG/TDJxbidwLhNhXHXTifR6AnLZjN+b7VyMq+osyDAwVvELTlY10qhdMvG+EyOjMuGQ2u6uPKMa - OEqm7+KJjCYS2AF1sieIoKn+zhj6QidbUCIT4Pp7ksDp7bJaHadh5Csvo4U+ssoVZDaQP+8u6fw/ - 1KXgnzOMZzFakmX40t/T1jbolyvo7Lr3S2HmsiZ5VXT7YSSx77jMBG87VoO/78qImyyK+bg19HxA - joZ20NEA4kLXjYEPUh28J4m6UX6E6H22uPaq/Qv9vDF+6gQAAA== + H4sIAAAAAAAAA41UTY+bMBC9769AnLsJdiAkua0itepqte0hzWGrChl7CFbAINtEG0X899p8J5tV + yyEiM7yZN/OefXlwHJcSyZS7cX6bP45zaX5NOOPiaMN9wH5ZKV3kIE3U3f7yn3/w4Our3n1/2unX + dJse8W715nb4+ktfKOHiALKUXGgLRICpjwMShGuCaJjgkHiLMPGWSxyvgsBbBBQIi5MErYhnXiBc + BUnshYBJAohSdyhMT6dIgqoyW1dUWTZkRJXHLc33yeNjH49oclJRWShNsignmqa3NeC95JJoXogo + L4S2eYSHDjloYpczjslZs5at/4J/soDty+Lb4SVf0v1+gZ+eJ6yJhkMhz/brQqeG5lBUn0uwYSqB + cX096F2OMRHHSJC8QV2PprQE0PdHiyURDds9V2SEVSUz3FhEGp2wh/xHL3z00A4FG9/fLNazcL3A + yGg8MCaMGQVubcK1nW6qSOsnwPfD6GPY6KLtVDdFOsFowe4kaVEJLc/RJPvBjJSIiEFstrtxtKxg + tEy7xSsbTSxwBmJtjz3sTf13w9DlKjqB5AkHu9+rBtZv991qOXWSb5yEZGpklUpITCF33hzS+X+4 + S8I/NEQoRMGyO6e1WdAfO9DNcW8vhZntGqVF1twPPYlLw2XGWd2w6vLtVnrc5KKY97eGmnfIPlB3 + PupAjKuy0vBJqyF71aiR8jNEmzPD1Q/1X+Fd3UjqBAAA headers: content-encoding: [gzip] - content-length: ['550'] + content-length: ['546'] content-type: [application/json] status: {code: 200, message: OK} - request: @@ -348,16 +348,16 @@ interactions: \ \"customer\": null\n },\n \"fingerprint\": \"d34d613121ae61ae732d86eaf09929617bd3f5ccc60f7364d32ae1afc5f81745\",\n \ \"cvv_result\": null,\n \"number\": \"xxxxxxxxxxxx4242\",\n \"avs_postal_match\": null,\n \"expiration_month\": 12,\n \"meta\": {},\n \"id\": - \"CC3J5cFlr9RfnD3ztsdDa3xf\",\n \"category\": \"other\",\n \"type\": + \"CC4MOdbG69Yqk2AzU5zkwHdD\",\n \"category\": \"other\",\n \"type\": \"credit\",\n \"cvv_match\": null,\n \"bank_name\": \"\",\n \"avs_street_match\": - null,\n \"brand\": \"Visa\",\n \"updated_at\": \"2014-07-01T11:33:09.854875Z\",\n + null,\n \"brand\": \"Visa\",\n \"updated_at\": \"2014-07-01T15:44:40.681317Z\",\n \ \"address\": {\n \"city\": null,\n \"line2\": null,\n \ \"line1\": null,\n \"state\": null,\n \"postal_code\": null,\n \"country_code\": null\n },\n \"can_debit\": true,\n \ \"name\": null,\n \"expiration_year\": 2030,\n \"cvv\": null,\n \ \"is_verified\": true,\n \"avs_result\": null,\n \"can_credit\": - false,\n \"href\": \"/cards/CC3J5cFlr9RfnD3ztsdDa3xf\",\n \"created_at\": - \"2014-07-01T11:33:09.854872Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": + false,\n \"href\": \"/cards/CC4MOdbG69Yqk2AzU5zkwHdD\",\n \"created_at\": + \"2014-07-01T15:44:40.681315Z\"\n }\n ],\n \"links\": {\n \"cards.card_holds\": \"/cards/{cards.id}/card_holds\",\n \"cards.customer\": \"/customers/{cards.customer}\",\n \ \"cards.disputes\": \"/cards/{cards.id}/disputes\",\n \"cards.debits\": \"/cards/{cards.id}/debits\"\n }\n}"} @@ -369,83 +369,83 @@ interactions: content-type: [application/json] status: {code: 201, message: CREATED} - request: - body: '{"links": {"customer": "/customers/CU3GPWAhne1hO9gpoRn8fOS1"}, "cvv_result": + body: '{"links": {"customer": "/customers/CU4JOi5FNtTIATtNhChk2T8Z"}, "cvv_result": null, "number": "xxxxxxxxxxxx4242", "expiration_month": 12, "meta": {}, "id": - "CC3J5cFlr9RfnD3ztsdDa3xf", "category": "other", "is_verified": true, "type": + "CC4MOdbG69Yqk2AzU5zkwHdD", "category": "other", "is_verified": true, "type": "credit", "cvv_match": null, "bank_name": "", "avs_street_match": null, "brand": - "Visa", "updated_at": "2014-07-01T11:33:09.854875Z", "fingerprint": "d34d613121ae61ae732d86eaf09929617bd3f5ccc60f7364d32ae1afc5f81745", + "Visa", "updated_at": "2014-07-01T15:44:40.681317Z", "fingerprint": "d34d613121ae61ae732d86eaf09929617bd3f5ccc60f7364d32ae1afc5f81745", "can_debit": true, "name": null, "expiration_year": 2030, "can_credit": false, - "avs_postal_match": null, "avs_result": null, "cvv": null, "created_at": "2014-07-01T11:33:09.854872Z", + "avs_postal_match": null, "avs_result": null, "cvv": null, "created_at": "2014-07-01T15:44:40.681315Z", "address": {"city": null, "line2": null, "line1": null, "state": null, "postal_code": null, "country_code": null}}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/cards/CC3J5cFlr9RfnD3ztsdDa3xf + uri: https://api.balancedpayments.com:443/cards/CC4MOdbG69Yqk2AzU5zkwHdD response: body: string: !!binary | - H4sIAAAAAAAAA41U227bMAx971cYfl4TS3J8ydvQYgP20qG7FOgwGIpExUJt2ZDlIFnhf5/kS+Kk - 6TADNmBShzwkj/h643k+o5o3/tr7ZX8877X/WnMh1YszTwZ3sm1MVYK2Vv/uB/n89eljrgDlD+m2 - rh5VIh6+IX/Edx+mQEKqLehaS2UckJOQR4ggjChE9o0J5kkEVARpitMIxRtOxIoxFgUiJlHICaaA - qGArkaA4XPnHwGy3yzQ0beHiqrYojh7VlpuB5n72hDjEJzTdNVldNYYWWUkNyy9jwL6WmhpZqays - lHF+hI8ZSjDUNedUpuR9W+7IlxX7VOj0Uah78sc0/J6SvZixpga2lT6405XJLc1jUHOowZmZBi7N - eaFXOW6oeskULXvUeWmN0QDmemkbTVXP9qds6AnW1txy4xnt54QDFN4G8W2AviO0JmSNggWOEozC - 51kmzu0ELmUijatuPpFBT4Cvm9Fbs52LcVVdBBkHxip+xcmqVhl9yGbeN2JkVGUcNra7a8/oFk6S - Gbp4JqOZBA5AnexxQIK5/i4Y+rLJdqClkOD6e5bA6e26Wh2nceRrT9CiObHKNQgbyF/2l3T5H+rS - 8K8ZBukiWYVJjJ+He9rZBv12BV1c92EpLFzWLK+Kfj9MJF57LgvJu57V6B+6MuFmi2I5bY1mOSIn - QzfqaARx2dStgXdSHb1nifpRvocYfLa47qb7C+9XDG3qBAAA + H4sIAAAAAAAAA41U226jMBB971cgntsEG0Mub1VWe5O2fUlX2q5WyNimWAHD2ibbNOLfaxtISJpW + GylIzHBmzsw59v7K83yCJVX+0vttXjxv754mXHCxseEhYL9slK5KJk3UXz2g7/c8+nyn199u1/ou + X+UbuJ4/+j2+vR4KZVw8MVlLLrQF0hDRGIQAAsxi85+FkM5jhrNgsYCLGMxSGmYRISQOslkYIxpC + zADOSJTNwQxF/qEw2W4TyVRT2LqiKYpDRjRl2tF8Hv0QRPCIxluV1JXSuEhKrEl+XoM911xizSuR + lJXQNg/goUPJNLbLOY7JqVvLCv24p+mXePHr7wbevjxEL5t/X+mnEWus2VMld/brSueG5qGo3tXM + holklOvTQS9yTLHYJAKXDnU6mtKSMX15tFRi4dj+5AofYU1NDTeaYKcTDAC6CWY3AViDaInQEoGJ + EW2OosdRJ0qNAuc24dpON1ak8xODl8Pgbdjoou1UZ0V6wUhFLyRJ1Qgtd8ko+8aMBIuEstRsd+lp + 2bCjZbotnthoZIEdw9b2MAiDsf/OGPpcJVsmecaZ3e9JA+u3y261nHrJl16GC3VklUuWmUL+1B3S + 6X+4S7IPNQwm8dwcPqOhW01rnn/sQGfHvbsUJrZrkleFux8GEnvHZcJp61j1+W4rA250UUyHW0NN + e+QQaHsf9SDKVd1o9k6rQ/akkZPyPUSXM8O1V+0rTJM7KOoEAAA= headers: content-encoding: [gzip] - content-length: ['549'] + content-length: ['551'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU3GPWAhne1hO9gpoRn8fOS1 + uri: https://api.balancedpayments.com:443/customers/CU4JOi5FNtTIATtNhChk2T8Z response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnetIit36cSt66DFBHyjQohBochMRkUiFpIoahv69S1uSaVIN - c9Fhd2bInR3xeJMkKe20kQ0one6SX1hIkuPpiy1BGsCq6Or63ViruXi20BGEMC07RX0g1hlowwUx - XIpBZRDpJ7WuZcQAK4lBRHqXF6tFvl7kxbei2C2Xu3x9u11vN+/zn+lEoQoilM2H1TYvHAqT+7KR - wlT+MJzZYz99X35++PGxElBU99unVn4Rm8f7r8XlzLaSwh8wrRQ8Wno2OZjFldBoWhFhSm2I6ayR - qZCLhhhaXY5rwBDPYnix0FUaOGhnOwBR/miEMQXa2xTl5uABcU+4UribLxdh2V7c9wJFWomNuqSS - zTSp7IRRB7cbDLLvNN5D63IudVqLsibarPwxoSG8Dor8KnA9nvXb5sdO6oT3Ev3bKcJphq6d8qyz - 47TYod8PK3KIlChWVrJmp1U6UXDInPWZgzsn2dHYE/FcEnoyKSJzDQ2UGOx5TGLAzHDdv/U/Pji/ - 9IwZ8NeAEpiCtw0TwoNLWdsilpwhAZNx3XYGIuQJFfCNIkITah+viMYVMtDBR6ITsRlG0Az7D77M - pI5cQcEICxSkYue3/ZVwDpiAi08ti+ZpBOH/1d/0/wC0V4mPUwYAAA== + H4sIAAAAAAAAA41UsW7bMBDd8xWC5jqSHKkJvBUBCrRDurhLgkKgSRYiLJEueSpqGPr3Hm1JoUkl + zKLh+N4T793jnW6SJKW9AdVxbdJN8oKFJDmdv3gkScexKvu2/TTVWiH3FjqBEGZUr6kPxDrjBoQk + IJQcVUaRYVbrD4wAZzUBRKTrvChX+f0qL7ZFtSnLzd3DbbHO76vPz+lMoZpHKHlxV1aVQ2FqV3dK + QuM3I5j97ePP8vsPUX19gu23L1t4ah6b/Xr74AgcGiX9BtNG89+Wns0OZnElNJo2REJtgEBvjUyl + WnUEaPPaYseBeBbzPxZapoGDtrcjJ9pvjTCmufEmRQUcPSDOCUfK18vlIizbi/teoMhB4UFbU8UW + DqnqJeijexo0susN3sOYeil1xsi6JQZKv03eEdEGRXEVuAH/9cvmx3bqhPc1+rdzhNMMXTvn2WSn + ebDj+TCOyCFSolndqJadR+lEwSELNmQO7pJkR2NH5L4m9GxSROYaGigxvhMxiRGzwHVf6xs+OE96 + wQz+D7iWmIKPNRPCg0tZ2yKWXCABkwlz6IFHyDMq4IMm0hBql1dE4woZ6OCS6GWshwm0wP6Lm5m0 + kStoPsECBaXZZbe/E84RE3Bx1bJoniYQvq/hZvgPbDJrDlMGAAA= headers: content-encoding: [gzip] - content-length: ['496'] + content-length: ['494'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU3GPWAhne1hO9gpoRn8fOS1/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU4JOi5FNtTIATtNhChk2T8Z/cards?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA+VWW2vbMBR+768IftjTmkjyNYEyRstWxlhH27XQMYysS6PVlj1ZDslK/vskXxIn - ddexMQpbIME5x+foXL7zHd0fjEYOwYqWzmz02fwZje7rXyNOhbyz4k5g36xKnWdMGalz/Ml9+/H6 - 9VwyOD+b3hb5uYz42QV0Wvv1y84RF/KWqUIJqa0hdT0aQBciiFlgvqGLaBQwzMF0iqYBDBPqcp8Q - EgAeuoFHXYQZxJz4PIKh5zsbx2SxiBUrq9T6lVWabjSyypImzGXv4yEPba3xooyLvNQ4jTOsyXzf - B1sWQmEtchlnudRWD9HmhIxpbIuzTVPQuizH7jufvEnV9JzLE/e7LukJdpe8FzXW7DZXK/t2rucm - zI1TvSqYFRPFqNC7iQ7GmGB5F0uc1Va7qZVaMaaHU0sUlnW0V6LEW7OqoCY2GuO6TwhA7xCEhwBe - Qjhz3RkEYxRECHo3vZMoNR3Yh4nQNrt+Rxo8MTQshg/Fpi/aZrXnpG0YyemAkuSV1GoV97QPwEiw - jClLTHVnI60qtoVMU8UdGPUgsGLYwh4BF/TxtxehI8p4wZTggtn67hxg8TaMVhtT2/LZiOO03EY1 - V4wbR86kHtLJL6BLsZ/1EEzHke9FIbpp5rSF718fesgQ8ZCP/XCKIQk5CjFwQw6CACWR7wPXJwzT - hHMYYWAeWBj5PAEhQ5gzSMjuLAyX8VmH/vTyFCR33+hVqbOL+Yfs6/X76OofGHoDGAQj6EX/9dCj - Zx76p9D1xNBH4wiY3ep3Q29Y8YtlMafbYjVNOikua+afdHveEM4jW77ho1epyIQ+guBFznnJ9BFo - Ee9Ittxdys6WydpLxO87r081gcK2K05zupF0gkKxhcgru5e2hO7o3Cx7S+INgztcqD9P2JSuJtG9 - +1Jzqxr3b0y9st7XdL7RrruyNWIqyqLSzEbfEX9rIOh6stG2WbSujMN4nqf1TW7Ayr7V6nfs6l34 - iE2rsxkerH8AQzNlEisKAAA= + H4sIAAAAAAAAA+VWbW/TMBD+vl9R5QOfWGs7cV4qTWgaYjDBxoeuEiAUOX5ZreYNxynrpv537CRt + 065jCIQmQaVG7V3u/Nzdc3e+PxoMHEoUq5zx4Iv5MxjcN08jTmU+t+K1wL5ZV7rIuDJS5+zau7iS + +M2lnrw7nejL2dlsjibhZ6ezX71cOxIyv+GqVDLX1hByRD2ECQ4iAmkgUECAGwjg+ygJMQYuppyw + RAgYEmB+8CDEIgEBR0RwSKmzcUwXi1jxqk6t37xO040mr7OkhXnb+3jIQ1trsqjisqg0SeOMaDrb + 98FvS6mIlkUeZ0WurR6izQkZ18QmZxumZE1azrz36CPDbFoW5zfvM59Opy46veihJprfFGpp3y70 + zMDcONXLklsxVZxJvRvoQYwJyedxTrLGaje0SivO9eHQEkXyBu1UVmRrVpfMYGMxaeqEAPSOQXAM + 4ATiseeN3WgYRC6CpsYbxIQxU4F9mkhto+tXpOUTR4fF8KHY1EXbqPacdAWjBTugpEWda7WMe9oH + ZKQkjxlPTHbHA61qvqVMm8UdGvUosOTE0h4BBPr820PoyCpecCWF5Da/OwdYvh1mq8XUlXw8ECSt + tqhmigvjyBk1TTr6BXYp/kQNIQwg9rs+7ej715ueuR7zoQsRJNw338BFLPQ5ESCKUOTDIGGuwJRS + H4jA9T3mIsIhERSLEAYe3u2Fw2l81qb/cMWScz/69G2OTu+u8d38+1v2+h9oeg8OTdFCD//XTe8+ + c9M/xa6fN70Hhn5oms/UsJmHK/P8aqeYs95ijdhJSdVM/tF6z5uB88iWb+fRq1RmUp9A8KIQouL6 + BHSMd3J+u7uUne0k6y4Rv++8OdUAhV1VnPZ0I1kLSsUXsqjtXtoOdEcXZtnbId5OcEdI9ecBm9Q1 + Q3TvvtTeqob9G1MvrffNON9oV+u0tWImq7LW3KJfD/7OQLLVaKPtouhcGYfxrEibm9wBK/tWp9+x + a3bhIzadzkZ4tPoBSH6ovisKAAA= headers: content-encoding: [gzip] - content-length: ['758'] + content-length: ['761'] content-type: [application/json] status: {code: 200, message: OK} - request: @@ -456,9 +456,9 @@ interactions: response: body: {string: !!python/unicode "{\n \"customers\": [\n {\n \"name\": null,\n \"links\": {\n \"source\": null,\n \"destination\": - null\n },\n \"updated_at\": \"2014-07-01T11:33:11.757331Z\",\n \"created_at\": - \"2014-07-01T11:33:11.640235Z\",\n \"dob_month\": null,\n \"id\": - \"CU3L5OJCUjErSojbUKCxEaGR\",\n \"phone\": null,\n \"href\": \"/customers/CU3L5OJCUjErSojbUKCxEaGR\",\n + null\n },\n \"updated_at\": \"2014-07-01T15:44:42.971621Z\",\n \"created_at\": + \"2014-07-01T15:44:42.833241Z\",\n \"dob_month\": null,\n \"id\": + \"CU4Peo8BtJifohKDry4aff4Z\",\n \"phone\": null,\n \"href\": \"/customers/CU4Peo8BtJifohKDry4aff4Z\",\n \ \"merchant_status\": \"no-match\",\n \"meta\": {\n \"seq\": \"5\"\n },\n \"dob_year\": null,\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \"state\": @@ -483,35 +483,35 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU3L5OJCUjErSojbUKCxEaGR + uri: https://api.balancedpayments.com:443/customers/CU4Peo8BtJifohKDry4aff4Z response: body: string: !!binary | - H4sIAAAAAAAAA41UwY7TMBC971dEOdNN07RU6rVaIQESEtALCEUT2yjeTexiO2irKv/OuE1S1w6Y - Sw4z7z173rz4/JAkKem0kS1TOt0l37GQJOfLF1sCWoZV0TXNm7HWcPFioSMIYVp2ivhArFOmDRdg - uBSDyiDST2rdkYJhtASDiHS1zNeL5XaxzL/m+a4odnn+uN1siyL/lk4UoliE8na9XBUbh0JlVbZS - mNofhlN77P5QfNx8er8/PD+pL/K5OnzYvz7Bu8+3M4+1FP6Aaa3YT0vPJgezuBIaTWoQptQGTGeN - TIVctGBIfTuuZQY8i9kvC92kgYN2thMD5Y8GlCqmvU0Rbk4eEPeEK2Wr+XIelu3FfS9Q5Cix0ZRE - 0pkmkZ0w6uR2g0GqTuM9tC7nUqe1KBvQZu2PyVrgTVDkd4Hr8awfNj92Uie8t+g/ThFOM3Ttkmed - nafFDv1+WJFDJKBoWcuGXlbpRMEhc9pnDu6aZEejAvFSArmYFJG5hwZKlFU8JjFgZrju3/oXH5xf - esYM9mqYEpiC/xsmhAeXsrZFLLlCAibl+tgZFiFPqIBvFAgNxD5eEY07ZKCDj0QnYjOMoBn2b3yZ - oYlcQbERFihIRa9v+z/COWACLj61NJqnEYT/V//Q/wEveU2HUwYAAA== + H4sIAAAAAAAAA41UsW7bMBDd8xWC5jqyFKZJPaadkiVDu7QohDNJQ0Qk0iWpoIahf+/RlhSaVMos + Go7vPfHePd7xKsty2hurOq5Nvsl+YSHLjqcvHknoOFZl37afplor5IuDTiCEGdVrGgKxzrixQoIV + So4qo8gwq/V7BpazGiwi8mpdktX6brUuv5e3G0I2pLr+cld+rsqf+Uyhmico9zc3FfEpTG3rTknb + hM0I5n779Qd55ur+wT6KnWqevukDgd2OeP/cN0qGDeaN5jtHL2YHi7QSGk0bkLY2FmzvjMylWnVg + afPWYsctBBbzPw56m0cOut4OHHTYGjCmuQkmRYU9BECcE46UV8vlMi67i4deoMhe4UFbU8UWDqnq + pdUH/zRqZNsbvIcx9VLqjJF1C8aSsE3egWijorgI3ID/+u3y4zr1wvsW/es5wnmBrp3ybIrjPNjx + fBhH5BEpaFY3qmWnUXpR8MiCDYWHOyfZ09iCfKmBnkxKyFxCIyXGtyIlMWIWuP5rfccH70kvmMH/ + Wq4lpuBjzcTw6FLOtoQlZ0jEZMLse8sT5BkV8a0GaYC65ZXQuEBGOrgkepnqYQItsF9xM0ObuILm + EyxSUJqdd/t/wjliIi6uWpbM0wTC9zVcDf8AHOi05VMGAAA= headers: content-encoding: [gzip] - content-length: ['496'] + content-length: ['491'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU3L5OJCUjErSojbUKCxEaGR/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU4Peo8BtJifohKDry4aff4Z/cards?limit=10&offset=0 response: body: {string: !!python/unicode "{\n \"cards\": [],\n \"meta\": {\n \"last\": - \"/customers/CU3L5OJCUjErSojbUKCxEaGR/cards?limit=10&offset=0\",\n \"next\": - null,\n \"href\": \"/customers/CU3L5OJCUjErSojbUKCxEaGR/cards?limit=10&offset=0\",\n + \"/customers/CU4Peo8BtJifohKDry4aff4Z/cards?limit=10&offset=0\",\n \"next\": + null,\n \"href\": \"/customers/CU4Peo8BtJifohKDry4aff4Z/cards?limit=10&offset=0\",\n \ \"limit\": 10,\n \"offset\": 0,\n \"previous\": null,\n \"total\": - 0,\n \"first\": \"/customers/CU3L5OJCUjErSojbUKCxEaGR/cards?limit=10&offset=0\"\n + 0,\n \"first\": \"/customers/CU4Peo8BtJifohKDry4aff4Z/cards?limit=10&offset=0\"\n \ },\n \"links\": {}\n}"} headers: content-length: ['364'] @@ -521,46 +521,46 @@ interactions: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['499'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA6VVyW7bMBC95ysIHXpKbIlyvAFB4ThBigRx9gJNUQg0F5uITDok5dgI/O8lKcmS - sqBFy4MAzcKZefNm+LoHQICRIjoYgp/2B4BX/7XilIsnJy4FzjLTRi6ostJg/ABvx3x2Pn6+OSE/ - bk7x/XwVn69VUPhv98uLGBczqpaKC+Mc+7jHwg6M4+4hYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiLY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMgXb1FXIEJsETqBTnEs1wC+h5AT - f+8Y3p1dn0yujx9CeXUxRVQPzPO4VhNGhs6k2jhraeYWgl3CZrOkTowVJdw0QSzrb2A4ReIpEWjh - vc6vL69uz0YTMP42ujsFx6PJxT6YtEatJp7aKEpNheeG6spgqpDwdXznGlXibEls1iRBnh0wjDoH - Ye8gjO6jaBjDIYxb/X4fdgaPtVA5ZNa+Tk4LsJXUa8hZTB2yH4gjFy+CMbhEXIA7n3q9MZYaxhf/ - YT8L6mBJvM0ghFFY98YyE0ZtksLAxX83GRiJhNCpbccQGJXRir857I1+1Pi4ocjNIAxhRUg7DG/K - DLhOVlRxxqmDvRHAkX83OkFeOyiYCGybQF4ecNkDIoGQBniW1Brusi/YNAQMpbrKf64oc6i0/W5p - /wVxFf0DCWC/04l7j/lsbC2UvxxaQWMOgxRpz6J2uals7E/2VJ7a15QvuDmKwi+SMU3NUdnDQNB1 - c60EVVHFGvz3y31Um2i5UII8upUUDQ2Wiq64zNwCrlgQGGnXlfPLmRIwrv6/YAujX9ZvNn7+LrQI - 18vM2Dmu2vnqu9riZNveaYuEck39nai1ovArtdtiXIpAzjWZy9S/RSVzaqFq+kYwP0Cf+BQ6V+He - 9jfXVB+z7QYAAA== + H4sIAAAAAAAAA6VVW2+bMBR+76+weNhTmwBOyEWqprSbVq1NWq1dO3WakIPtxiqxmW2yoCr/fbaB + AL1o08YDEud+vvOdw9MBAF6CJFbeFHw3HwA8ubcRp4w/WnEtsJa50mJNpJF6p1/h+TdcbBbXH0hx + cQWz2Z2crH5ir/LfHdaBKOMPRGaScW0dx8mI+oMQwmiI6HicQAKjhPrhaBCRBEUDihMKI4yTkAQU + Tow5SSYUUor9IQqjkbcPnGw2sSQqT21cnqfpXsPz9bIsc9t6AvM03mij4kwojdJ4jXSysrVx0ejJ + NmMSaSZ4vBZcW33g7zOsiUZdcCR5MLYOGsFpruxHbW6xY7qItfjlLNoKhLFpQsWhVZyILQhfQsiw + i3sK52cn6i7anKELqPKLW3xzu7yctBBBmjwIWVhroVcGgn3BusiIFSeSYKa7INb9dzBcIv4Yc7R2 + Xp+v5pdfPs0W4PRsdv0RnMwW54dg0Zv1ungqLQnRDZ4FUY3BUiLu+rhlCjXiPMOmahwjx47QDwZH + /ujID26C4XQAp4NhbzwMQhjct1KVkBn7NjkNwEbS7qFkMbHIviIObD4TGcwR4+Dald4ejKGGds2/ + Os+KOonAzmbih4Hf9k5EzrUs4srA5n+xGQniMSZLM44p0DInDX9L2DvzaPGxIMjuYOiHDSHNMjxr + 02Mq3hDJKCMW9k4CS/796nhl76BiIjBjAmV7wFYPsABcaOBY0hq4rb5i0xRQlKqm/pUk1KLSd7el + /xfEleQPJBhEcBLA+3I3dgbKHxYtr7OHXoqUY1G/vlQm9xt3qiztfcrWTB8H/jtBqSL6uJ6hx8m2 + e1a8pqnqDP57cJfVFFofFK/MbiTVQL1Mkg0TuT3ADQs8Lcy5sn4lUzzK5P83bGB0x/rZxS//Cz3M + VJZrs8fNOJ/cVHsM7/p7bVVQqWn/J1qjqPxq7a5alyqRdY1XInX/opo5rVQtfSeZW6A3fCqd7fBg + 9xv4QHhu7QYAAA== headers: content-encoding: [gzip] content-length: ['751'] @@ -570,17 +570,17 @@ interactions: body: '{"amount": 1000, "description": "janet"}' headers: {} method: POST - uri: https://api.balancedpayments.com:443/cards/CC2SGPDNPBU0oOKbaes9tqC1/debits + uri: https://api.balancedpayments.com:443/cards/CC3MHBsW6vHaL3suLVdTVbO9/debits response: body: {string: !!python/unicode "{\n \"debits\": [\n {\n \"status\": \"succeeded\",\n \"description\": \"janet\",\n \"links\": {\n \"customer\": - \"CU2RCigJCqQDdYQEcThv3Jxr\",\n \"source\": \"CC2SGPDNPBU0oOKbaes9tqC1\",\n + \"CU3KXdyvNSDeyLP3pAWr9hqd\",\n \"source\": \"CC3MHBsW6vHaL3suLVdTVbO9\",\n \ \"order\": null,\n \"dispute\": null\n },\n \"updated_at\": - \"2014-07-01T11:33:14.816252Z\",\n \"created_at\": \"2014-07-01T11:33:13.722996Z\",\n - \ \"transaction_number\": \"W840-430-2910\",\n \"failure_reason\": + \"2014-07-01T15:44:45.548561Z\",\n \"created_at\": \"2014-07-01T15:44:44.926318Z\",\n + \ \"transaction_number\": \"W260-348-1523\",\n \"failure_reason\": null,\n \"currency\": \"USD\",\n \"amount\": 1000,\n \"failure_reason_code\": - null,\n \"meta\": {},\n \"href\": \"/debits/WD3NqPJy6Kz9Xxn4NCgfjq1r\",\n - \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD3NqPJy6Kz9Xxn4NCgfjq1r\"\n + null,\n \"meta\": {},\n \"href\": \"/debits/WD4RA4ycTczpRdM0e3NHNYi5\",\n + \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD4RA4ycTczpRdM0e3NHNYi5\"\n \ }\n ],\n \"links\": {\n \"debits.customer\": \"/customers/{debits.customer}\",\n \ \"debits.dispute\": \"/disputes/{debits.dispute}\",\n \"debits.source\": \"/resources/{debits.source}\",\n \"debits.order\": \"/orders/{debits.order}\",\n diff --git a/tests/py/fixtures/TestClosing.yml b/tests/py/fixtures/TestClosing.yml index dce6759c81..81665809eb 100644 --- a/tests/py/fixtures/TestClosing.yml +++ b/tests/py/fixtures/TestClosing.yml @@ -7,9 +7,9 @@ interactions: response: body: {string: !!python/unicode "{\n \"customers\": [\n {\n \"name\": null,\n \"links\": {\n \"source\": null,\n \"destination\": - null\n },\n \"updated_at\": \"2014-07-01T11:33:23.610868Z\",\n \"created_at\": - \"2014-07-01T11:33:23.506527Z\",\n \"dob_month\": null,\n \"id\": - \"CU3Yrhw41eTJjqJBFTTVCXTr\",\n \"phone\": null,\n \"href\": \"/customers/CU3Yrhw41eTJjqJBFTTVCXTr\",\n + null\n },\n \"updated_at\": \"2014-07-01T15:44:57.039650Z\",\n \"created_at\": + \"2014-07-01T15:44:56.925624Z\",\n \"dob_month\": null,\n \"id\": + \"CU5555ODX3LB3yvScKR27QPD\",\n \"phone\": null,\n \"href\": \"/customers/CU5555ODX3LB3yvScKR27QPD\",\n \ \"merchant_status\": \"no-match\",\n \"meta\": {\n \"seq\": \"6\"\n },\n \"dob_year\": null,\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \"state\": @@ -41,13 +41,13 @@ interactions: \"321174851\",\n \"bank_name\": \"SAN MATEO CREDIT UNION\",\n \"account_type\": \"checking\",\n \"name\": \"Alice G. Krebs\",\n \"links\": {\n \"customer\": null,\n \"bank_account_verification\": null\n },\n \"can_credit\": - true,\n \"created_at\": \"2014-07-01T11:33:24.291792Z\",\n \"fingerprint\": + true,\n \"created_at\": \"2014-07-01T15:44:57.851974Z\",\n \"fingerprint\": \"5f0ba9fa3f1122ef13b944a40abfe44e7eba9e16934e64200913cb4c402ace14\",\n \"updated_at\": - \"2014-07-01T11:33:24.291795Z\",\n \"href\": \"/bank_accounts/BA3ZjVKBXZkadShuLO55Gx0R\",\n + \"2014-07-01T15:44:57.851976Z\",\n \"href\": \"/bank_accounts/BA567z1OsbkUtySKaCLl1QdX\",\n \ \"meta\": {},\n \"account_number\": \"xxxxxx0001\",\n \"address\": {\n \"city\": null,\n \"line2\": null,\n \"line1\": null,\n \ \"state\": null,\n \"postal_code\": null,\n \"country_code\": - null\n },\n \"can_debit\": false,\n \"id\": \"BA3ZjVKBXZkadShuLO55Gx0R\"\n + null\n },\n \"can_debit\": false,\n \"id\": \"BA567z1OsbkUtySKaCLl1QdX\"\n \ }\n ],\n \"links\": {\n \"bank_accounts.credits\": \"/bank_accounts/{bank_accounts.id}/credits\",\n \ \"bank_accounts.bank_account_verifications\": \"/bank_accounts/{bank_accounts.id}/verifications\",\n \ \"bank_accounts.customer\": \"/customers/{bank_accounts.customer}\",\n @@ -64,93 +64,93 @@ interactions: - request: body: '{"routing_number": "321174851", "bank_name": "SAN MATEO CREDIT UNION", "account_type": "checking", "name": "Alice G. Krebs", "links": {"customer": - "/customers/CU3Yrhw41eTJjqJBFTTVCXTr"}, "can_credit": true, "created_at": "2014-07-01T11:33:24.291792Z", + "/customers/CU5555ODX3LB3yvScKR27QPD"}, "can_credit": true, "created_at": "2014-07-01T15:44:57.851974Z", "fingerprint": "5f0ba9fa3f1122ef13b944a40abfe44e7eba9e16934e64200913cb4c402ace14", - "updated_at": "2014-07-01T11:33:24.291795Z", "meta": {}, "account_number": "xxxxxx0001", + "updated_at": "2014-07-01T15:44:57.851976Z", "meta": {}, "account_number": "xxxxxx0001", "address": {"city": null, "line2": null, "line1": null, "state": null, "postal_code": - null, "country_code": null}, "can_debit": false, "id": "BA3ZjVKBXZkadShuLO55Gx0R"}' + null, "country_code": null}, "can_debit": false, "id": "BA567z1OsbkUtySKaCLl1QdX"}' headers: {} method: PUT - uri: https://api.balancedpayments.com:443/bank_accounts/BA3ZjVKBXZkadShuLO55Gx0R + uri: https://api.balancedpayments.com:443/bank_accounts/BA567z1OsbkUtySKaCLl1QdX response: body: string: !!binary | - H4sIAAAAAAAAA5VTW2+bMBR+769APK/BBlNK3pKsq9puidTSqss0IWMOixsCmTFdo4j/PkOgXJpq - HQ9+8Hc4/i7n7E80TQ9osvYpY2meyEwfaz/Upabtq1PBIs0lT375Sb4JQChct0yMHXJuY/1TU1T1 - SOgGSvxuMte+TbyLhTa7vfh85Wn386vFvC2u3/LlblvVsxWwtXqirWg6TWLOQLscaTcCgqzFY56s - S6oNSUWT5ZlMNweCs3vru1j9IRi866ff19Mvnvcwe/TEa4OBav8ZBI84o5KniWqb5HFcKyteJTKa - +ExAyKWqkCKHFhFAJYQ+LRHdRJicIucUYQ/jsWWNTTIyXey45rIVECm5ILaCJ9U/doQC6kbUijA2 - TYiwFbiEUIJoEAEh4ICCAZ+5FoEzYiLkYosFhBFkUgaYtI3zbfgPLo5zjpHd4bISEJUkjN4gGNOJ - tXx6uJk+Ltc0vFvlXxe2ffmCbtu3NiBpGULrUZNsOysv1YcQ6gwLDUMB2TA/Lne19Y2xKiUVNJjH - r/Hb60wq7W+vt6kCYp+l4RGwGnux66JHow8hqJKPaJy10fOwdO5dq6pOhTp/lppKNZ2x7S/e6DBb - pSvDJPa9YEY8LIym+GDVoFO3vDfaH2ze3YZm6YZkO9tmNKuXGQOmDVDUMzNoUln6QU517f/prbzs - qRkyfNeqQleBFSfFX3VUwNQiBQAA + H4sIAAAAAAAAA5VTTW+jMBC991cgzm1ig4GSW5pUqyrdZNskUrXVChkzbK0QExlTLY3472tIKISm + qy4HH/yG8fuY2V8YhhlSsQkoY2kuVGaOjGd9aRj7+tSwTHPFxe9A5NsQpMZN28LYI9cONi+borqH + oFuo8OV4bnwfr24XxuTxdnq3Mtbzu8W8LT6+FahiV9ezF2Ab/URb0XQaJ5yB8W1gzCSEWYsnXGwq + qg1JTZPlmUq3B4KTtaO/xfTJvr+xi9clmz1a3sOP6XuDnurgFSSPOaOKp0K3FXmSHJWV7xIZFQGT + EHGlK5TMoUUkUAVRQCvEtBAmV8i7QniFnREhI8cbaK98j/xsBcRaLsid5KL+x4lRSP2Y2jHGlgUx + tkOfEEoQDWMgBDzQMGDXtwm4xELIxzYLCSPIogwwaRvnu+ifXK4Hluu6yO1weZEQVySGJ4MwvBk7 + rveGF1m4WatiOaOT+wQ/RE/tW1tQtAqh9ahJtp2VP/WHEOoMC40iCVk/P66Ko/WNsTolHTRY56/x + x+tMae0fr3epBpKApdEZsB57WXTRs9FHENbJxzTJ2uh5VDn3qVV1p1KfvypNlZrO2J4u3uAwW5Ur + /ST2J8EMeFQOm+KDVb1O3fKT0f5i8+42NEvXJ9vZtmGzetmwx7QByuPM9JrUln6R07H2//TWXp6o + 6TP81KrS1IGVF+VfDeyr4SIFAAA= headers: content-encoding: [gzip] - content-length: ['534'] + content-length: ['533'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU3Yrhw41eTJjqJBFTTVCXTr + uri: https://api.balancedpayments.com:443/customers/CU5555ODX3LB3yvScKR27QPD response: body: string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnetIsh0n8DEBeshZLfpAIdDkFmIikQ5JtTUM/XuXtiTTpFL2 - osPuzJA7O+LxJklS2mkjW1A63SbfsZAkx9MXW4K0gFXRNc2HsdZw8WqhIwhhWnaK+kCsM9CGC2K4 - FIPKINJPat2eEQOsIgYR6TIv1ov8fpEXZVFsV6vtcnW7KfKHzcO3dKJQBRHKXb65W947FCZ3VSuF - qf1hOLPHPn1afVX173UB5fPL2/Pjx7L8/PSlVJcz97UU/oBpreCnpWeTg1lcCY2mNRGm0oaYzhqZ - CrloiaH15bgWDPEshjcL3aSBg3a2AxDlj0YYU6C9TVFuDh4Q94QrheV8uQjL9uK+Fyiyl9hoKirZ - TJPKThh1cLvBILtO4z20ruZSp7WoGqLN2h8TWsKboMivAtfjWT9sfuykTngv0b+dIpxm6Nopzzo7 - Tosd+v2wIodIiWJVLRt2WqUTBYfMWZ85uHOSHY0dEa8VoSeTIjLX0ECJwY7HJAbMDNf9W9/xwfml - Z8yAPwaUwBT83zAhPLiUtS1iyRkSMBnX+85AhDyhAr5RRGhC7eMV0bhCBjr4SHQiNsMImmH/wpeZ - NJErKBhhgYJU7Py2/yOcAybg4lPLonkaQfh/9Tf9XxvCezBTBgAA + H4sIAAAAAAAAA41UTY+bMBS8769AnJtACCTaHLt7a6V+S1WrCjm2K6wFO/XHqlHEf+9zAsSx6Xo5 + cHieGfvNG/t0lyQpNkqLjkqV7pKfUEiS0/kPSxx1FKrctO2bsdYy/mShIwhgShiJfSDUCVWacaSZ + 4IPKINJPauZAkKakRhoQaZGvykW+XeSrr6tqV5a7arvM1/ebKv+RThQs6YuUzfK+qDZF6VCI2Ned + 4Lrxm2HEbvvwrYLvw+P39fu36+PzF/zuc7H99PHxuuehEdxvMG0k/W3p2eRgFlcCo3GDuK6VRtpY + I1MuFh3SuLlu11GNPIvpHwvdpIGDtrcjRdJvDREiqfImhZk+ekCYE4yUFvPlVVi2B/e9AJGDgIW2 + xoLMLGJhuJZHdzVoZG8UnEOpei51SvG6RUqXfpu0Q6wNiuwmcD3s9cvmx3bqhPca/eUU4TQD1855 + VtlpGuyw3g8jcogYSVI3oiXnUTpRcMiM9JmDuyTZ0dgj/lQjfDYpInMLDZQI3bOYxICZ4bq39T8+ + OFd6xgz6V1PJIQWvayaEB4eytkUsuUACJmHqYDSNkCdUwNcScYWwfbwiGjfIQAceCcNjPYygGfYz + vMyojRxB0hEWKAhJLm/7C+EcMAEXnloSzdMIgvvV3/X/AG22s3RTBgAA headers: content-encoding: [gzip] - content-length: ['495'] + content-length: ['498'] content-type: [application/json] status: {code: 200, message: OK} - request: body: null headers: {} method: GET - uri: https://api.balancedpayments.com:443/customers/CU3Yrhw41eTJjqJBFTTVCXTr/bank_accounts?limit=10&offset=0 + uri: https://api.balancedpayments.com:443/customers/CU5555ODX3LB3yvScKR27QPD/bank_accounts?limit=10&offset=0 response: body: string: !!binary | - H4sIAAAAAAAAA61U70/bMBD9zl8R5cM+jdZOXEoroakwhoCNShAQY5oix7mspmnSOQ6jqvK/z3YT - 8oNWYxL9EKl357t37z3des+y7IAmc58yluaJzOyx9UMFLWttviot0lzy5Jef5IsAhMrbroPxkBwO - sP2xKjI9EroAnb+ZXFnfJt7p1Dq5Pv187lm3V+fTq7q4nOXL1dLUsxmwuRpRV1SdJjFnYJ31rEsB - QVbnY57MNdQKpILJ8kymiw3Ak1v3u5j9IRi8i8ffF8dfPO/u5N4TLw06W/tPIHjEGZU8TVTbJI/j - crPiZUVGE58JCLlUFVLkUGcEUAmhT3XGdhAm+2i4j7CH8dh1xw7pOSM8HDkP9QKRWhfEUvDEvBlE - KKCjiLoRxo4DEXaDESGUIBpEQAgMQaUBH4xcAgfEQWiEXRYQRpBDGWBSN86X4T+wDIeHGA0aWGYC - Ig2i3zJC/3jiPjzeXR7fP8xpeDPLv04Hg7NndF3PWoCkWoSao0rZ2ivP5ocQapiFhqGArKsfl6uS - +opYpZISGpztYfw6nEm1++vwMlWJ2GdpuCVpbC9WzexW6UMIjPIRjbNaeh5q5nZSZToV6vtT72RX - hJmwHdPMiN+vrJv1dxm3Lc2nmC+4PMLoQxpFGcgjVGpiJ/CsW2r/bki0X8R9vyFmupqCUTljg0JF - qsBSwBNPc61wA4pMlQr6Xfks4uL9CFCUGhtqxzROQ/u49YyIGlbX7OuW93s8LPplbQm2nW/+ax2P - N/Zu3pvqrHWgNu9ZwyEdoFVVUTmgjXNzr94Iqir+v40Nma19+h2MO8kqbK3aXvEXbKzmtoYGAAA= + H4sIAAAAAAAAA61U22rbQBB9z1cIPfSpsXaltRQHQnEulJDUbmIHQksRq9WoWSxLZrUycYP+vbtr + KbokKSlEDwLNjGbOnHOYpwPLsiOarULKWF5msrCPrZ8qaFlP5q3SIi8lz36HWbmOQKi87bkYB+Ro + jO3PTZHpkdE16PxiOrO+TZcXc+vs9uL8cmndzS7ns7a4nhXK3cbUswdgKzWirWg6TVPOwPo6sq4E + REWbT3m20lAbkAomKwuZr/cAz+7G6pmf33vXp95uu2BXt25w8/38ucFg63ALgiecUcnzTLXNyjSt + N6ueV2Q0C5mAmEtVIUUJbUYAlRCHVGdsF2FyiIJDhJd4fEzI8TgYKa4mAfnRLpCodUFsBM/MP+ME + RXSSUC/B2HUhwV40IYQSRKMECIEAVBqwP/EI+MRFaII9FhFGkEsZYNI2LjfxP7EcjVzf95HfwfIg + INEgnJ4RnNPp2A/+4HkRre7kbnFFz65TfBPft7PWIKkWoeWoUbb1yqN5EEIds9A4FlAM9eNyV1Pf + EKtUUkKD+3oYvwwXUu3+MrzJVSINWR6/kjS2F7tu9lXpY4iM8glNi1Z6Hmvm3qTKdKrU+5feyW4I + M2E7pYUR32msWzhvGbcvzZeUr7k8wehTniQFyBNUa2Jn8Khbav/uSbSfxf24IWa6moJRPWOPQkWa + wEbAluelVrgDReZKBf1f/VvCxccRoCg1NtSO6ZyG/nEbGRE1rKHZn3reH/G4curaGmw/3/3qHY93 + 9u7em+asDaB271nHIQOgTVXVOKCPc3+v3gmqKf6/jQ2ZvX2cAcY3yapsrdpB9RchlguzhgYAAA== headers: content-encoding: [gzip] - content-length: ['626'] + content-length: ['625'] content-type: [application/json] status: {code: 200, message: OK} - request: body: '{"amount": 1000.00, "description": "alice"}' headers: {} method: POST - uri: https://api.balancedpayments.com:443/bank_accounts/BA3ZjVKBXZkadShuLO55Gx0R/credits + uri: https://api.balancedpayments.com:443/bank_accounts/BA567z1OsbkUtySKaCLl1QdX/credits response: body: {string: !!python/unicode "{\n \"credits\": [\n {\n \"status\": \"pending\",\n \"description\": \"alice\",\n \"links\": {\n \"customer\": - \"CU3Yrhw41eTJjqJBFTTVCXTr\",\n \"destination\": \"BA3ZjVKBXZkadShuLO55Gx0R\",\n - \ \"order\": null\n },\n \"updated_at\": \"2014-07-01T11:33:26.890394Z\",\n - \ \"created_at\": \"2014-07-01T11:33:26.464040Z\",\n \"transaction_number\": - \"CR317-809-4898\",\n \"failure_reason\": null,\n \"currency\": + \"CU5555ODX3LB3yvScKR27QPD\",\n \"destination\": \"BA567z1OsbkUtySKaCLl1QdX\",\n + \ \"order\": null\n },\n \"updated_at\": \"2014-07-01T15:45:00.125855Z\",\n + \ \"created_at\": \"2014-07-01T15:44:59.861937Z\",\n \"transaction_number\": + \"CR401-922-8833\",\n \"failure_reason\": null,\n \"currency\": \"USD\",\n \"amount\": 1000,\n \"failure_reason_code\": null,\n - \ \"meta\": {},\n \"href\": \"/credits/CR41Koc50vYjzRVQM3AEPqUB\",\n - \ \"appears_on_statement_as\": \"example.com\",\n \"id\": \"CR41Koc50vYjzRVQM3AEPqUB\"\n + \ \"meta\": {},\n \"href\": \"/credits/CR58nuI5mbLeeWVDYO4ewvQB\",\n + \ \"appears_on_statement_as\": \"example.com\",\n \"id\": \"CR58nuI5mbLeeWVDYO4ewvQB\"\n \ }\n ],\n \"links\": {\n \"credits.order\": \"/orders/{credits.order}\",\n \ \"credits.customer\": \"/customers/{credits.customer}\",\n \"credits.destination\": \"/resources/{credits.destination}\",\n \"credits.reversals\": \"/credits/{credits.id}/reversals\",\n diff --git a/tests/py/fixtures/TestPayday.yml b/tests/py/fixtures/TestPayday.yml new file mode 100644 index 0000000000..83db00b89d --- /dev/null +++ b/tests/py/fixtures/TestPayday.yml @@ -0,0 +1,286 @@ +interactions: +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd + response: + body: + string: !!binary | + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== + headers: + content-encoding: [gzip] + content-length: ['499'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/cards?limit=10&offset=0 + response: + body: + string: !!binary | + H4sIAAAAAAAAA6VVW2+bMBR+76+weNhTmwBOyEWqprSbVq1NWq1dO3WakIPtxiqxmW2yoCr/fbaB + AL1o08YDEud+vvOdw9MBAF6CJFbeFHw3HwA8ubcRp4w/WnEtsJa50mJNpJF6p1/h+TdcbBbXH0hx + cQWz2Z2crH5ir/LfHdaBKOMPRGaScW0dx8mI+oMQwmiI6HicQAKjhPrhaBCRBEUDihMKI4yTkAQU + Tow5SSYUUor9IQqjkbcPnGw2sSQqT21cnqfpXsPz9bIsc9t6AvM03mij4kwojdJ4jXSysrVx0ejJ + NmMSaSZ4vBZcW33g7zOsiUZdcCR5MLYOGsFpruxHbW6xY7qItfjlLNoKhLFpQsWhVZyILQhfQsiw + i3sK52cn6i7anKELqPKLW3xzu7yctBBBmjwIWVhroVcGgn3BusiIFSeSYKa7INb9dzBcIv4Yc7R2 + Xp+v5pdfPs0W4PRsdv0RnMwW54dg0Zv1ungqLQnRDZ4FUY3BUiLu+rhlCjXiPMOmahwjx47QDwZH + /ujID26C4XQAp4NhbzwMQhjct1KVkBn7NjkNwEbS7qFkMbHIviIObD4TGcwR4+Dald4ejKGGds2/ + Os+KOonAzmbih4Hf9k5EzrUs4srA5n+xGQniMSZLM44p0DInDX9L2DvzaPGxIMjuYOiHDSHNMjxr + 02Mq3hDJKCMW9k4CS/796nhl76BiIjBjAmV7wFYPsABcaOBY0hq4rb5i0xRQlKqm/pUk1KLSd7el + /xfEleQPJBhEcBLA+3I3dgbKHxYtr7OHXoqUY1G/vlQm9xt3qiztfcrWTB8H/jtBqSL6uJ6hx8m2 + e1a8pqnqDP57cJfVFFofFK/MbiTVQL1Mkg0TuT3ADQs8Lcy5sn4lUzzK5P83bGB0x/rZxS//Cz3M + VJZrs8fNOJ/cVHsM7/p7bVVQqWn/J1qjqPxq7a5alyqRdY1XInX/opo5rVQtfSeZW6A3fCqd7fBg + 9xv4QHhu7QYAAA== + headers: + content-encoding: [gzip] + content-length: ['751'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: '{"amount": 1576, "description": "janet"}' + headers: {} + method: POST + uri: https://api.balancedpayments.com:443/cards/CC3MHBsW6vHaL3suLVdTVbO9/debits + response: + body: {string: !!python/unicode "{\n \"debits\": [\n {\n \"status\": + \"succeeded\",\n \"description\": \"janet\",\n \"links\": {\n \"customer\": + \"CU3KXdyvNSDeyLP3pAWr9hqd\",\n \"source\": \"CC3MHBsW6vHaL3suLVdTVbO9\",\n + \ \"order\": null,\n \"dispute\": null\n },\n \"updated_at\": + \"2014-07-01T15:44:48.009128Z\",\n \"created_at\": \"2014-07-01T15:44:47.335350Z\",\n + \ \"transaction_number\": \"W589-042-5118\",\n \"failure_reason\": + null,\n \"currency\": \"USD\",\n \"amount\": 1576,\n \"failure_reason_code\": + null,\n \"meta\": {},\n \"href\": \"/debits/WD4UhNrdn6rW5mo9B8dy3Vad\",\n + \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD4UhNrdn6rW5mo9B8dy3Vad\"\n + \ }\n ],\n \"links\": {\n \"debits.customer\": \"/customers/{debits.customer}\",\n + \ \"debits.dispute\": \"/disputes/{debits.dispute}\",\n \"debits.source\": + \"/resources/{debits.source}\",\n \"debits.order\": \"/orders/{debits.order}\",\n + \ \"debits.refunds\": \"/debits/{debits.id}/refunds\",\n \"debits.events\": + \"/debits/{debits.id}/events\"\n }\n}"} + headers: + content-length: ['1002'] + content-type: [application/json] + status: {code: 201, message: CREATED} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ + response: + body: + string: !!binary | + H4sIAAAAAAAAA41UTY/TMBS876+IcqabpJu2orcVB4QWCQ4gRBGKXNsoVhM7+AOoqvx3ntMk69oB + 7yWH55mJ37zxu9wlSYqN0qKlUqX75BsUkuQyfOGIo5ZClZumeTXVGsZPFjqBAKaEkdgHQp1QpRlH + mgk+qowi/axmOoI0JRXSgEjXeVGu8t0qLz4Vm335sC+397tNmW/zQzpTsKQRynazLnavHQoRx6oV + XNd+M4zY3775/PBh/e7pq8AfD5v3j7u3p8OX7veTI9DVgvsNprWkPyw9mx3M4kpgNK4R15XSSBtr + ZMrFqkUa188ttlQjz2L6czAoDRy0vZ0pkn5riBBJlTcpzPTZA8KcYKR0vVwuwrK9uO8FiHQCDpoK + C7JwiIXhWp7d06CRo1FwD6WqpdQpxasGKV36bdIWsSYospvA9fCv7zY/tlMnvM/Rv58jnGbg2pBn + lV3mwY7n/Tgih4iRJFUtGjKM0omCQ2akzxzcNcmOxhHxU4XwYFJE5hYaKBF6ZDGJEbPAdV/rP3xw + nvSCGfSPppJDCl7WTAgPLmVti1hyhQRMwlRnNI2QZ1TA1xJxhbBdXhGNG2SgA0vC8FgPE2iB/Qs2 + M2oiV5B0ggUKQpLrbv9POEdMwIVVS6J5mkDwvvq7/i9xeE/EUwYAAA== + headers: + content-encoding: [gzip] + content-length: ['496'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ/bank_accounts?limit=10&offset=0 + response: + body: + string: !!binary | + H4sIAAAAAAAAA61UXW+bMBR9769APOxpDTYfIUSqpnTqsi1R232pW6YJObZpvBBIjWkTRfz32Q4E + SIPWh74gcc/1veeec3V3Z4ZhzlGyDBHGaZ6IzBwav2XQMHb6K2Ge5oIl92GSr+aUS9yENgSuPRjY + 5tsqSddI0Ioq/O5qOv1mfBh9Hd8Yl6PriXE9qjPLRqHYrnUyXlC8lPXrjKrMx3RFufEZbWsoZslS + UazISXo4z4RKVLXe/3Bu7E+TXym+nXnTkT9ezu7WT5PZocDRtOEj5SxiGAmWJrJAksdxOVFxGA2j + JMScEiZkhuA5rRFOkaAkRAoxbQDdc+CfA/gdekPXGbpBD/j9gefV/c1ITkr5mrNEvyEI9z3okoAQ + B0FMfIQD2yOe7wYUOGCAbYlHyPaxB/qIRnOAg7kN+xBGURD0g1qZfE3+w8UDvgeaXBacRoqE1VoA + 63LkfJkm2dX4nmd/H6LFz4Xr3D64pO61ogIpE2qNKlPrHdlsNrbjoIbvhHCaHZvHxLbUvVJVWiRd + pvbpMHwezoQc/Hl4nUogDnFKToB61/m2iZ70ndC5tj1CcVb7zoiSrVMnXamQ3z9qJrNSS4fNGGXa + eava28zq2tq2L+9itmLiAoI3aRRlVFyAUlszoRtVUi3vXkTz4OzrNdHdZRcIyh57FjJSBdacPrI0 + Vw43qIhUuqDelc8ixl9PACmp3kG1MY270L5oPW2ionW86bvW4vcYKawytyTbxpt/rcvxwtrNY5NV + 5rVbNI9ZY0OOiFZZRUcRfaxeSGp/2TrodE6sxWzNYx1x7HxamMq1s+IftGquiHsGAAA= + headers: + content-encoding: [gzip] + content-length: ['620'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: '{"amount": 1500.00, "description": "homer"}' + headers: {} + method: POST + uri: https://api.balancedpayments.com:443/bank_accounts/BA3QLnsEGgrsjqfhXh43Pq4d/credits + response: + body: {string: !!python/unicode "{\n \"credits\": [\n {\n \"status\": + \"succeeded\",\n \"description\": \"homer\",\n \"links\": {\n \"customer\": + \"CU3O2IKYocPZ5LA7GkZWpwKZ\",\n \"destination\": \"BA3QLnsEGgrsjqfhXh43Pq4d\",\n + \ \"order\": null\n },\n \"updated_at\": \"2014-07-01T15:44:49.736053Z\",\n + \ \"created_at\": \"2014-07-01T15:44:49.468347Z\",\n \"transaction_number\": + \"CR096-343-6203\",\n \"failure_reason\": null,\n \"currency\": + \"USD\",\n \"amount\": 1500,\n \"failure_reason_code\": null,\n + \ \"meta\": {},\n \"href\": \"/credits/CR4WGfyhoAK9GlZY845TaPch\",\n + \ \"appears_on_statement_as\": \"example.com\",\n \"id\": \"CR4WGfyhoAK9GlZY845TaPch\"\n + \ }\n ],\n \"links\": {\n \"credits.order\": \"/orders/{credits.order}\",\n + \ \"credits.customer\": \"/customers/{credits.customer}\",\n \"credits.destination\": + \"/resources/{credits.destination}\",\n \"credits.reversals\": \"/credits/{credits.id}/reversals\",\n + \ \"credits.events\": \"/credits/{credits.id}/events\"\n }\n}"} + headers: + content-length: ['955'] + content-type: [application/json] + status: {code: 201, message: CREATED} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd + response: + body: + string: !!binary | + H4sIAAAAAAAAA41Uy27bMBC85ysEnWvLipQ29i1oby2CAG3RokUh0CQLEZFIhY+ggqF/79KWZJpU + wlx02J0ZcmdHPFwlSYqN0qKlUqW75DcUkuRw/EKLo5ZClZumeTfVGsYfLXQCAUwJI7EPhDqhSjOO + NBN8VBlFhlnNdARpSiqkAZFeb/Jytfmw2uTf8ptdWezKcp0Xxfvb7a90pmBJX6UU622+uSlKh0LE + vmoF17U/DCP22I/fi88/Sf98//UT7b88FN3dD7mtn8j5zK4W3B8wrSX9a+nZ7GAWVwKjcY24rpRG + 2lgjUy5WLdK4Ph/XUo08i+mTheZp4KCdradI+qMhQiRV3qYw070HhD3BSun1cjkPy/bivhcg0glo + NBUWZKGJheFa9m43GGRvFNxDqWopdUrxqkFKl/6YtEWsCYrsInADnPXH5sdO6oT3HP31HOE0A9eO + eVbZYV7s2B/GFTlEjCSpatGQ4yqdKDhkRobMwZ2S7GjsEX+sED6aFJG5hAZKhO5ZTGLELHDdv/UF + H5xfesEM+k9TySEFbxsmhAeXsrZFLDlBAiZhqjOaRsgzKuBribhC2D5eEY0LZKADj4ThsRkm0AL7 + GV5m1ESuIOkECxSEJKe3/ZVwjpiAC08tieZpAsH/NVwN/wHQiK4AUwYAAA== + headers: + content-encoding: [gzip] + content-length: ['499'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ + response: + body: + string: !!binary | + H4sIAAAAAAAAA41UTY/TMBS876+IcqabpJu2orcVB4QWCQ4gRBGKXNsoVhM7+AOoqvx3ntMk69oB + 7yWH55mJ37zxu9wlSYqN0qKlUqX75BsUkuQyfOGIo5ZClZumeTXVGsZPFjqBAKaEkdgHQp1QpRlH + mgk+qowi/axmOoI0JRXSgEjXeVGu8t0qLz4Vm335sC+397tNmW/zQzpTsKQRynazLnavHQoRx6oV + XNd+M4zY3775/PBh/e7pq8AfD5v3j7u3p8OX7veTI9DVgvsNprWkPyw9mx3M4kpgNK4R15XSSBtr + ZMrFqkUa188ttlQjz2L6czAoDRy0vZ0pkn5riBBJlTcpzPTZA8KcYKR0vVwuwrK9uO8FiHQCDpoK + C7JwiIXhWp7d06CRo1FwD6WqpdQpxasGKV36bdIWsSYospvA9fCv7zY/tlMnvM/Rv58jnGbg2pBn + lV3mwY7n/Tgih4iRJFUtGjKM0omCQ2akzxzcNcmOxhHxU4XwYFJE5hYaKBF6ZDGJEbPAdV/rP3xw + nvSCGfSPppJDCl7WTAgPLmVti1hyhQRMwlRnNI2QZ1TA1xJxhbBdXhGNG2SgA0vC8FgPE2iB/Qs2 + M2oiV5B0ggUKQpLrbv9POEdMwIVVS6J5mkDwvvq7/i9xeE/EUwYAAA== + headers: + content-encoding: [gzip] + content-length: ['496'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ/credits?limit=10&offset=0 + response: + body: + string: !!binary | + H4sIAAAAAAAAA61UXW/TMBR936+o/MATXdLGbddKEyoDVaiTKGPTWBGKjHNDzBI7s52xqcp/x3bj + JCuqeICXKLkf55z7ld3JYICohIRphRaDr+ZzMNi5p3EoTXRl7UhVlAIkkKDX3pmAopKVmgluIzJR + gOy8OeP3NtNjWZpKaRdkoi9uoo/jD+s7QTfbyeVytrrf3pa/1tsWwMQbAs048QRvl9GnS67er35I + 9fMhzb5kONo84E6RSREycfi8yvNGZ90KrsqEaEhioq2CcTjCw3A2DEfXo8kC4wWen86iaTiJOhG2 + M39JwdOzCM96KVoSrgi1qmNeFd+beq/C+XQY4Wg4HYdR16aUsLySEBse5fpolbeKaSUlcPps9d58 + ftelkUJU3JYxmoRhG/4SLKYigUPEAjSxU+m6kklILX7QbEFwcYVvV+lzJpbr+Srf3p3hyTXZ0KzH + XpZApIpNhXZDoACuY+L2BJ5IUeZwSkXRxbPEuo7iukHV5vnNVoK8RGdGOVFuXIHfHhUc2x1fwZuc + FUyfj8JXIk0V6POwkYI4PFmwrseoq75Zzn+Bd7x2KM1I0J7fWLyhlPDIhDupnggtNMlt3n6SKGXy + fxRtGujGjF7eoj/3U38sKHBvKtg1K7D31L5r3mq0myiSu0G369ImsaQOupCmFJ/bv/3eKNtk7/+D + 1HBy92s6wtj4D+gOfh1GlxKVpNCrsRdSI9uqk/o3GBlRDw0FAAA= + headers: + content-encoding: [gzip] + content-length: ['551'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3O2IKYocPZ5LA7GkZWpwKZ/credits?limit=10&offset=0 + response: + body: + string: !!binary | + H4sIAAAAAAAAA61UXW/TMBR936+o/MATXdLGbddKEyoDVaiTKGPTWBGKjHNDzBI7s52xqcp/x3bj + JCuqeICXKLkf55z7ld3JYICohIRphRaDr+ZzMNi5p3EoTXRl7UhVlAIkkKDX3pmAopKVmgluIzJR + gOy8OeP3NtNjWZpKaRdkoi9uoo/jD+s7QTfbyeVytrrf3pa/1tsWwMQbAs048QRvl9GnS67er35I + 9fMhzb5kONo84E6RSREycfi8yvNGZ90KrsqEaEhioq2CcTjCw3A2DEfXo8kC4wWen86iaTiJOhG2 + M39JwdOzCM96KVoSrgi1qmNeFd+beq/C+XQY4Wg4HYdR16aUsLySEBse5fpolbeKaSUlcPps9d58 + ftelkUJU3JYxmoRhG/4SLKYigUPEAjSxU+m6kklILX7QbEFwcYVvV+lzJpbr+Srf3p3hyTXZ0KzH + XpZApIpNhXZDoACuY+L2BJ5IUeZwSkXRxbPEuo7iukHV5vnNVoK8RGdGOVFuXIHfHhUc2x1fwZuc + FUyfj8JXIk0V6POwkYI4PFmwrseoq75Zzn+Bd7x2KM1I0J7fWLyhlPDIhDupnggtNMlt3n6SKGXy + fxRtGujGjF7eoj/3U38sKHBvKtg1K7D31L5r3mq0myiSu0G369ImsaQOupCmFJ/bv/3eKNtk7/+D + 1HBy92s6wtj4D+gOfh1GlxKVpNCrsRdSI9uqk/o3GBlRDw0FAAA= + headers: + content-encoding: [gzip] + content-length: ['551'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/debits?limit=10&offset=0 + response: + body: + string: !!binary | + H4sIAAAAAAAAA+1VyW7bMBC95ysCH3ooKpkSRVkKEBReChiooxTZ3AWFwYh0o0RbScqIG/jfS1GU + JQtxm6I+5mKIM5w3M28ex09Hx8e9hArcOzl+kt/yFGMu5KnXDwsusoQy3h9fw4+fyXoVXE7oevYJ + 5sM58+9+kj6ht5Hg7+MoicSpBd5kyyWn4hT03lVYKX0ssdIijrXljtHlodBVWglmAQ1epZeW2pAz + uoqygu/WIDKBY2mCOmwZsQO0LDvelIC9OEofyoyaz4ojs2az0/xTx72pqdN2EvG8EFRF6W/er4O0 + oRvDs4KFVQij1aGJqc7dkIwRylQS9dVcV8fubTnDIiVlj7IoJYFtSRHZ9Gu3pld3Qlc0FXtjtHdL + YhUkM3xTSqq4lORygYWaZ48XYUgpoUQzJp2E8pBFuYiytLxxj1MqGu/uXJTW20PZJ/ItQJl9y+x4 + DM+mIz53V1M8g7yY3ZCrm9tzv327JrWRv0rajLR0qPa0dJS7yAkWlCyweoU2sBwDDAxgXVnoxHFO + HM8EwLds72vTWcjoH0MGJoQIItAKEQynHIclVYu0SG6r6c+R5xvAsQ1kWV6Dv8RRXDC6kGm4orbd + kSSRMZqG67Lc68tJE4aTrEjVA0UDtxKD7G8XbBFmpJTqDmK9kNR7UqRs14aW23ziXN8FjKQum6Mk + 80ceWcMb3NICznOKGV/I/krN0ESqb4GVckbD2Vv6iJM8pmaYJU3BESnde7FVMbqmV0FuBYlM5HjI + tf5BkI7p2y602hreI0jbBQZ0PMNCNjygIAHQfxEHFOTF0FmHV+Gv/IKcAQqDafAlQq3X8D+CfB77 + VZDPbUgITRtBC9gvFyS0TeQBCPy/b0jXAcZgAAzHc5pl31lq3X32gg0JXOvgG3Iy9YPx/Qc2igIE + HmP7Bxg+BAcS5PPYlSDl7/ejzW/H5EyAWwoAAA== + headers: + content-encoding: [gzip] + content-length: ['712'] + content-type: [application/json] + status: {code: 200, message: OK} +- request: + body: null + headers: {} + method: GET + uri: https://api.balancedpayments.com:443/customers/CU3KXdyvNSDeyLP3pAWr9hqd/debits?limit=10&offset=0 + response: + body: + string: !!binary | + H4sIAAAAAAAAA+1VyW7bMBC95ysCH3ooKpkSRVkKEBReChiooxTZ3AWFwYh0o0RbScqIG/jfS1GU + JQtxm6I+5mKIM5w3M28ex09Hx8e9hArcOzl+kt/yFGMu5KnXDwsusoQy3h9fw4+fyXoVXE7oevYJ + 5sM58+9+kj6ht5Hg7+MoicSpBd5kyyWn4hT03lVYKX0ssdIijrXljtHlodBVWglmAQ1epZeW2pAz + uoqygu/WIDKBY2mCOmwZsQO0LDvelIC9OEofyoyaz4ojs2az0/xTx72pqdN2EvG8EFRF6W/er4O0 + oRvDs4KFVQij1aGJqc7dkIwRylQS9dVcV8fubTnDIiVlj7IoJYFtSRHZ9Gu3pld3Qlc0FXtjtHdL + YhUkM3xTSqq4lORygYWaZ48XYUgpoUQzJp2E8pBFuYiytLxxj1MqGu/uXJTW20PZJ/ItQJl9y+x4 + DM+mIz53V1M8g7yY3ZCrm9tzv327JrWRv0rajLR0qPa0dJS7yAkWlCyweoU2sBwDDAxgXVnoxHFO + HM8EwLds72vTWcjoH0MGJoQIItAKEQynHIclVYu0SG6r6c+R5xvAsQ1kWV6Dv8RRXDC6kGm4orbd + kSSRMZqG67Lc68tJE4aTrEjVA0UDtxKD7G8XbBFmpJTqDmK9kNR7UqRs14aW23ziXN8FjKQum6Mk + 80ceWcMb3NICznOKGV/I/krN0ESqb4GVckbD2Vv6iJM8pmaYJU3BESnde7FVMbqmV0FuBYlM5HjI + tf5BkI7p2y602hreI0jbBQZ0PMNCNjygIAHQfxEHFOTF0FmHV+Gv/IKcAQqDafAlQq3X8D+CfB77 + VZDPbUgITRtBC9gvFyS0TeQBCPy/b0jXAcZgAAzHc5pl31lq3X32gg0JXOvgG3Iy9YPx/Qc2igIE + HmP7Bxg+BAcS5PPYlSDl7/ejzW/H5EyAWwoAAA== + headers: + content-encoding: [gzip] + content-length: ['712'] + content-type: [application/json] + status: {code: 200, message: OK} +version: 1 diff --git a/tests/py/fixtures/TestPaydayCharge.yml b/tests/py/fixtures/TestPaydayCharge.yml deleted file mode 100644 index 2bae9a87d8..0000000000 --- a/tests/py/fixtures/TestPaydayCharge.yml +++ /dev/null @@ -1,280 +0,0 @@ -interactions: -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr - response: - body: - string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA - headers: - content-encoding: [gzip] - content-length: ['495'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/cards?limit=10&offset=0 - response: - body: - string: !!binary | - H4sIAAAAAAAAA6VVyW7bMBC95ysIHXpKbIlyvAFB4ThBigRx9gJNUQg0F5uITDok5dgI/O8lKcmS - sqBFy4MAzcKZefNm+LoHQICRIjoYgp/2B4BX/7XilIsnJy4FzjLTRi6ostJg/ABvx3x2Pn6+OSE/ - bk7x/XwVn69VUPhv98uLGBczqpaKC+Mc+7jHwg6M4+4hYv0+jmncxSyEvU6XYtTtMIJZ3CUEQxqx - eGDNKR6wmDESHiLY7QW7i/FqlSiqs9TdK7I03WlEtpjmaa5rJ7Kn8kYrnSylNihNFsjguctNyEpP - 10uukOFSJAspjNNH4S7CghrUBEfRmbX10EjBMu1+SnOHHTebxMgXb1FXIEJsETqBTnEs1wC+h5AT - f+8Y3p1dn0yujx9CeXUxRVQPzPO4VhNGhs6k2jhraeYWgl3CZrOkTowVJdw0QSzrb2A4ReIpEWjh - vc6vL69uz0YTMP42ujsFx6PJxT6YtEatJp7aKEpNheeG6spgqpDwdXznGlXibEls1iRBnh0wjDoH - Ye8gjO6jaBjDIYxb/X4fdgaPtVA5ZNa+Tk4LsJXUa8hZTB2yH4gjFy+CMbhEXIA7n3q9MZYaxhf/ - YT8L6mBJvM0ghFFY98YyE0ZtksLAxX83GRiJhNCpbccQGJXRir857I1+1Pi4ocjNIAxhRUg7DG/K - DLhOVlRxxqmDvRHAkX83OkFeOyiYCGybQF4ecNkDIoGQBniW1Brusi/YNAQMpbrKf64oc6i0/W5p - /wVxFf0DCWC/04l7j/lsbC2UvxxaQWMOgxRpz6J2uals7E/2VJ7a15QvuDmKwi+SMU3NUdnDQNB1 - c60EVVHFGvz3y31Um2i5UII8upUUDQ2Wiq64zNwCrlgQGGnXlfPLmRIwrv6/YAujX9ZvNn7+LrQI - 18vM2Dmu2vnqu9riZNveaYuEck39nai1ovArtdtiXIpAzjWZy9S/RSVzaqFq+kYwP0Cf+BQ6V+He - 9jfXVB+z7QYAAA== - headers: - content-encoding: [gzip] - content-length: ['751'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: '{"amount": 1576, "description": "janet"}' - headers: {} - method: POST - uri: https://api.balancedpayments.com:443/cards/CC2SGPDNPBU0oOKbaes9tqC1/debits - response: - body: {string: !!python/unicode "{\n \"debits\": [\n {\n \"status\": - \"succeeded\",\n \"description\": \"janet\",\n \"links\": {\n \"customer\": - \"CU2RCigJCqQDdYQEcThv3Jxr\",\n \"source\": \"CC2SGPDNPBU0oOKbaes9tqC1\",\n - \ \"order\": null,\n \"dispute\": null\n },\n \"updated_at\": - \"2014-07-01T11:32:58.045082Z\",\n \"created_at\": \"2014-07-01T11:32:57.356510Z\",\n - \ \"transaction_number\": \"W081-983-3951\",\n \"failure_reason\": - null,\n \"currency\": \"USD\",\n \"amount\": 1576,\n \"failure_reason_code\": - null,\n \"meta\": {},\n \"href\": \"/debits/WD3v0UIBWb9TGirT5zELhtlj\",\n - \ \"appears_on_statement_as\": \"BAL*example.com\",\n \"id\": \"WD3v0UIBWb9TGirT5zELhtlj\"\n - \ }\n ],\n \"links\": {\n \"debits.customer\": \"/customers/{debits.customer}\",\n - \ \"debits.dispute\": \"/disputes/{debits.dispute}\",\n \"debits.source\": - \"/resources/{debits.source}\",\n \"debits.order\": \"/orders/{debits.order}\",\n - \ \"debits.refunds\": \"/debits/{debits.id}/refunds\",\n \"debits.events\": - \"/debits/{debits.id}/events\"\n }\n}"} - headers: - content-length: ['1002'] - content-type: [application/json] - status: {code: 201, message: CREATED} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv - response: - body: - string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIUoxY9S3opbeiaHJpUQg0yUREJFLhw6lh6N+7lCWZJtWw - Fx12Z4bc2RFPN0mSYqO0aKlU6S75BYUkOQ1faHHUUqhy0zSfplrD+KuFTiCAKWEk9oFQJ1RpxpFm - go8qo0g/q5mOIE1JhTQg0mKdb1br7WqdP+b57q7YFZvbsvy83RY/05mCJY1QtuXd5r50KETsq1Zw - XfvDMGKP/fJUPIn2WL4c6vr+B+ke3r5/K96/Hi5ndrXg/oBpLemzpWezg1lcCYzGNeK6UhppY41M - uVi1SOP6clxLNfIspm+DQWngoJ3tSJH0R0OESKq8TWGmjx4Q9gQrpcVyOQ/L9uK+FyDSCWg0FRZk - oYmF4Voe3W4wyN4ouIdS1VLqlOJVg5Te+GPSFrEmKLKrwPVw1m+bHzupE95L9G/nCKcZuDbkWWWn - ebFjvx9X5BAxkqSqRUOGVTpRcMiM9JmDOyfZ0dgj/lohPJgUkbmGBkqE7llMYsQscN2/9R8+OL/0 - ghn0j6aSQwr+b5gQHlzK2hax5AwJmISpzmgaIc+ogK8l4gph+3hFNK6QgQ48EobHZphAC+wDvMyo - iVxB0gkWKAhJzm/7B+EcMQEXnloSzdMEgv+rv+n/AqhHO/tTBgAA - headers: - content-encoding: [gzip] - content-length: ['495'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv/bank_accounts?limit=10&offset=0 - response: - body: - string: !!binary | - H4sIAAAAAAAAA61UXW+bMBR9769APOxpTbADJESqpmTqVm1do63rpnWakGObxApfNSYLivjvsx0I - kIapD31B4t7re8895+juLwzDXKJ44yOMkzwWmTk1fsugYez1V6Z5kgsWr/w4j5aUy7wJILBsOJlA - 821dpHvEKKIq//P69vbe+DD79nFhzGd3n427WVNZDfJFkepivKZ4I/s3FXWbmySi3PiEiiYVsnij - INbgJDycZ0IVql7vH+BDEhWT1Xa9du9JOnv6uoB/b7bHBifb+lvKWcAwEiyJZYM4D8Nqo/K4Gkax - jzklTMgKwXPaZDhFghIfqYwJLWBfWuNLC3wHYDqCU+gMHNe2vcljs0AgN6U85SzWbwjCrgNs4hEy - QgCTMcIedIgztj1qjawJhjIfIDjGjuUiGiwt7C0hcAEIAs9zvaZxnpL/YnEH0PUcx25hWXMaKBDD - jgGG8xn8sRrz+cr9wh+jBXd3xdP1L0yaWREVSInQcFSL2nhkt9vB0Qi1dCeE0+xUPCaKiveaVSmR - VJnC82HwPJwJufjzcJrIROjjhJxJaq/zop09qzuhSy17gMKs0Z0RRVsvT7pTKb9/1E5mzZYOmyHK - tPLD2rfZsM+1XV3ehSxi4gpYb5IgyKi4sipuzZjuVEtl3gOJ5lHZ1xuip8spwKpmHFDISB1IOd2y - JFcKt6CIRKqg3lXPAsZfjwBJqfagckzrLnQv2kCLqGCdOn3fMf6AkXJY1VZgu/n2X+dyvLB3+9hk - tXjdEe1j1nLICdC6quxpoo/VC0EdLlsPnN6NNZmdfYYnGHuflqZS7aL8B/8D0Fl7BgAA - headers: - content-encoding: [gzip] - content-length: ['621'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: '{"amount": 1500.00, "description": "homer"}' - headers: {} - method: POST - uri: https://api.balancedpayments.com:443/bank_accounts/BA2Vg7rBg6MrZmOr6xyqEYcd/credits - response: - body: {string: !!python/unicode "{\n \"credits\": [\n {\n \"status\": - \"succeeded\",\n \"description\": \"homer\",\n \"links\": {\n \"customer\": - \"CU2Uomy8gvhh6SdpAqQO2wHv\",\n \"destination\": \"BA2Vg7rBg6MrZmOr6xyqEYcd\",\n - \ \"order\": null\n },\n \"updated_at\": \"2014-07-01T11:32:59.459492Z\",\n - \ \"created_at\": \"2014-07-01T11:32:59.196481Z\",\n \"transaction_number\": - \"CR642-211-6199\",\n \"failure_reason\": null,\n \"currency\": - \"USD\",\n \"amount\": 1500,\n \"failure_reason_code\": null,\n - \ \"meta\": {},\n \"href\": \"/credits/CR3x5EJmWYUuxmxNIzyYmDkl\",\n - \ \"appears_on_statement_as\": \"example.com\",\n \"id\": \"CR3x5EJmWYUuxmxNIzyYmDkl\"\n - \ }\n ],\n \"links\": {\n \"credits.order\": \"/orders/{credits.order}\",\n - \ \"credits.customer\": \"/customers/{credits.customer}\",\n \"credits.destination\": - \"/resources/{credits.destination}\",\n \"credits.reversals\": \"/credits/{credits.id}/reversals\",\n - \ \"credits.events\": \"/credits/{credits.id}/events\"\n }\n}"} - headers: - content-length: ['955'] - content-type: [application/json] - status: {code: 201, message: CREATED} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr - response: - body: - string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIkp028NXtJbcU6aEtCmFNshURiXT4CGIY+vcubUmmSaXs - RYfdmSF3dsTjTZblxGojO6Z0vsl+YiHLjqcvtgR0DKvCtu2HsdZy8eygIwhhWlpFQiDWKdOGCzBc - ikFlEOknNbunYBitwSAir5blerH8tFiWT2W5WVWbqrpd35X398sf+UQhiiUoq2p993HlUajc1Z0U - pgmH4dQdu/1Wfd3yPw/bl8fP9PvjF/LUvK4e3tTlzH0jRThg3ij229GLycEirYRGkwaEqbUBY52R - uZCLDgxpLsd1zEBgMXtx0DKPHHSzHRiocDSgVDEdbIpwcwiAuCdcKavmy2VcdhcPvUCRvcRGWxNJ - Z5pEWmHUwe9Gg+ysxntoXc+lTmtRt6DNOhyTdcDbqMivAtfjWb9cftykXngv0b+dIpwX6Nopz7o4 - Tosd+v2wIo9IQNG6kS09rdKLgkfmtC883DnJnsYOxHMN5GRSQuYaGilRtuMpiQEzw/X/1nd88H7p - GTPYm2FKYAr+b5gYHl3K2Zaw5AyJmJTrvTUsQZ5QEd8oEBqIe7wSGlfISAcfCStSM4ygGfYrvszQ - Jq6g2AiLFKSi57f9H+EcMBEXn1qazNMIwv+rv+n/AoxtLhJTBgAA - headers: - content-encoding: [gzip] - content-length: ['495'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv - response: - body: - string: !!binary | - H4sIAAAAAAAAA41Uy27bMBC85ysEnevIUoxY9S3opbeiaHJpUQg0yUREJFLhw6lh6N+7lCWZJtWw - Fx12Z4bc2RFPN0mSYqO0aKlU6S75BYUkOQ1faHHUUqhy0zSfplrD+KuFTiCAKWEk9oFQJ1RpxpFm - go8qo0g/q5mOIE1JhTQg0mKdb1br7WqdP+b57q7YFZvbsvy83RY/05mCJY1QtuXd5r50KETsq1Zw - XfvDMGKP/fJUPIn2WL4c6vr+B+ke3r5/K96/Hi5ndrXg/oBpLemzpWezg1lcCYzGNeK6UhppY41M - uVi1SOP6clxLNfIspm+DQWngoJ3tSJH0R0OESKq8TWGmjx4Q9gQrpcVyOQ/L9uK+FyDSCWg0FRZk - oYmF4Voe3W4wyN4ouIdS1VLqlOJVg5Te+GPSFrEmKLKrwPVw1m+bHzupE95L9G/nCKcZuDbkWWWn - ebFjvx9X5BAxkqSqRUOGVTpRcMiM9JmDOyfZ0dgj/lohPJgUkbmGBkqE7llMYsQscN2/9R8+OL/0 - ghn0j6aSQwr+b5gQHlzK2hax5AwJmISpzmgaIc+ogK8l4gph+3hFNK6QgQ48EobHZphAC+wDvMyo - iVxB0gkWKAhJzm/7B+EcMQEXnloSzdMEgv+rv+n/AqhHO/tTBgAA - headers: - content-encoding: [gzip] - content-length: ['495'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv/credits?limit=10&offset=0 - response: - body: - string: !!binary | - H4sIAAAAAAAAA61UW2/TMBh936+I/MATbeKszZZKE9pNAiSY2CioQygyjttai53Ml5JS5b9ju3GS - FVU8wEuUfLdzznfJ7iQIABYkp0qCWfDNfAbBzj2NQyqktLUDqTEmJCc5eO2dOZFY0ErRktuIdcmI - 6L0F5U8209eyMFoqF2Sir+fxvGTb89VmvU4e8ury+dNd/PPtpitg4g2Aohx5gKvL+MvqTFytkg/i - kd2JpN4+3y5wz8iklCJ39bkuipZn0xHWVY4UyTOkLIM4gpNRdDaK4GcIZ6fxbJqOJ9N0ksaPvQrT - mb+kwDSZnMNBihKIS4Qt64xr9qPVe59M4lEM4SiBadoDLBEttCCZwZGuj5Z5xxhrIQjHW8t3/nDT - pyFWam5lwGkUdeEvi2W4zMlhRUYUslPpu7IWZGnrh+0WhNf3p/X09j37upjrmtUf3/3aLtjNUzFA - ryqChMyMQrshhBGuMuT2hNSIVQUZ45L18TS3rqN13aAa8/xulQBP0ZlBgaQbV+i3R4bHdscreFNQ - RtUFjF6Vy6Uk6iJqqQBOalus7zHo1bfL+S/lHa4dSjsSsMc3Fm+oBNnQ0p3UgIQqFSps3n6SYEnF - /xBtGujGDF7eoj/3sT8WELo3Ge7aFdh7Gt81bzXcTRQq3KC7demSaN6EfUgrxecOb38wyi7Z+/8A - NZjc/ZqOILb+A7iDX4fhJUstMBloHIQ0wLbqpPkNYgZkFQ0FAAA= - headers: - content-encoding: [gzip] - content-length: ['551'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2Uomy8gvhh6SdpAqQO2wHv/credits?limit=10&offset=0 - response: - body: - string: !!binary | - H4sIAAAAAAAAA61UW2/TMBh936+I/MATbeKszZZKE9pNAiSY2CioQygyjttai53Ml5JS5b9ju3GS - FVU8wEuUfLdzznfJ7iQIABYkp0qCWfDNfAbBzj2NQyqktLUDqTEmJCc5eO2dOZFY0ErRktuIdcmI - 6L0F5U8209eyMFoqF2Sir+fxvGTb89VmvU4e8ury+dNd/PPtpitg4g2Aohx5gKvL+MvqTFytkg/i - kd2JpN4+3y5wz8iklCJ39bkuipZn0xHWVY4UyTOkLIM4gpNRdDaK4GcIZ6fxbJqOJ9N0ksaPvQrT - mb+kwDSZnMNBihKIS4Qt64xr9qPVe59M4lEM4SiBadoDLBEttCCZwZGuj5Z5xxhrIQjHW8t3/nDT - pyFWam5lwGkUdeEvi2W4zMlhRUYUslPpu7IWZGnrh+0WhNf3p/X09j37upjrmtUf3/3aLtjNUzFA - ryqChMyMQrshhBGuMuT2hNSIVQUZ45L18TS3rqN13aAa8/xulQBP0ZlBgaQbV+i3R4bHdscreFNQ - RtUFjF6Vy6Uk6iJqqQBOalus7zHo1bfL+S/lHa4dSjsSsMc3Fm+oBNnQ0p3UgIQqFSps3n6SYEnF - /xBtGujGDF7eoj/3sT8WELo3Ge7aFdh7Gt81bzXcTRQq3KC7demSaN6EfUgrxecOb38wyi7Z+/8A - NZjc/ZqOILb+A7iDX4fhJUstMBloHIQ0wLbqpPkNYgZkFQ0FAAA= - headers: - content-encoding: [gzip] - content-length: ['551'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/debits?limit=10&offset=0 - response: - body: - string: !!binary | - H4sIAAAAAAAAA61UXW/aMBR9769AedjDNIhDmvIhVdMIVbWu2toVhLZpikx8Ge4SO7UdxIby32c7 - DgEk9tSXyPbNueeec6+9u+h0vBwU9sadnV7rXYal0jvPT0upeA5C+vG8/zWmv+7il8cp+fZ4k87W - m/BuK3wCS6rk+4zmVF0H6A1frSSoa+S9q3Mx2JpcrMwyd7IWsHqt7JZWJwuQS17T65PmoBCwobyU - xzUornBmcA62ouIVJGvFlUnoZZT9NozOz9qjXuPmifjdSbhqrHPnhMqiVGBRbi39BuQOTjGwAaZM - BRpiG7QHUFL5Luq0OxouCAiLsKsWYbenBLqHJSNnGZrwMYXkpUhrIQLqTUtT7ytvb2Jdl67oh52k - 2kttrlRY2X56skxTAALEOaaDBGQqaKEoZ+aPZ8xAtdHjvthZP2zKuSHfJzDsew1x3H+6fZh+fpjM - Ef/yaYlBjtRLHBz+3Zjajr8lbVtqAlaeGx0bLguCFZAE21vYR8FlFw26KJgFwTjsj6NhD11GaNj/ - 3ipLBfwXMuiF0VUUoAOIEphJnBqrElbmy7r7CzQMuqNh2A1HUSvFW2GalQISTSOttYeKtIlCAEv/ - mHLnT9O2LJzzktkLGg2u6mHQ+o6TJSknZiiOMjYPkr1P1pT9s+EGejENN2j+cbJYjma3VMyivzf3 - a5U9H5AXBWAhE63PzAzk+k4k2E7O5MP9W9jivMigl/K8xVBiwmdz22Iq/f15Uf0DV/ylBTkFAAA= - headers: - content-encoding: [gzip] - content-length: ['569'] - content-type: [application/json] - status: {code: 200, message: OK} -- request: - body: null - headers: {} - method: GET - uri: https://api.balancedpayments.com:443/customers/CU2RCigJCqQDdYQEcThv3Jxr/debits?limit=10&offset=0 - response: - body: - string: !!binary | - H4sIAAAAAAAAA61UXW/aMBR9769AedjDNIhDmvIhVdMIVbWu2toVhLZpikx8Ge4SO7UdxIby32c7 - DgEk9tSXyPbNueeec6+9u+h0vBwU9sadnV7rXYal0jvPT0upeA5C+vG8/zWmv+7il8cp+fZ4k87W - m/BuK3wCS6rk+4zmVF0H6A1frSSoa+S9q3Mx2JpcrMwyd7IWsHqt7JZWJwuQS17T65PmoBCwobyU - xzUornBmcA62ouIVJGvFlUnoZZT9NozOz9qjXuPmifjdSbhqrHPnhMqiVGBRbi39BuQOTjGwAaZM - BRpiG7QHUFL5Luq0OxouCAiLsKsWYbenBLqHJSNnGZrwMYXkpUhrIQLqTUtT7ytvb2Jdl67oh52k - 2kttrlRY2X56skxTAALEOaaDBGQqaKEoZ+aPZ8xAtdHjvthZP2zKuSHfJzDsew1x3H+6fZh+fpjM - Ef/yaYlBjtRLHBz+3Zjajr8lbVtqAlaeGx0bLguCFZAE21vYR8FlFw26KJgFwTjsj6NhD11GaNj/ - 3ipLBfwXMuiF0VUUoAOIEphJnBqrElbmy7r7CzQMuqNh2A1HUSvFW2GalQISTSOttYeKtIlCAEv/ - mHLnT9O2LJzzktkLGg2u6mHQ+o6TJSknZiiOMjYPkr1P1pT9s+EGejENN2j+cbJYjma3VMyivzf3 - a5U9H5AXBWAhE63PzAzk+k4k2E7O5MP9W9jivMigl/K8xVBiwmdz22Iq/f15Uf0DV/ylBTkFAAA= - headers: - content-encoding: [gzip] - content-length: ['569'] - content-type: [application/json] - status: {code: 200, message: OK} -version: 1 diff --git a/tests/py/test_billing_exchanges.py b/tests/py/test_billing_exchanges.py new file mode 100644 index 0000000000..91364cecf9 --- /dev/null +++ b/tests/py/test_billing_exchanges.py @@ -0,0 +1,230 @@ +from __future__ import absolute_import, division, print_function, unicode_literals + +from decimal import Decimal as D + +import balanced +import mock +import pytest + +from aspen.utils import typecheck +from gittip.billing.exchanges import ( + _prep_hit, + charge, + charge_on_balanced, + record_exchange, + skim_credit, +) +from gittip.exceptions import NegativeBalance, NoBalancedCustomerHref +from gittip.models.participant import Participant +from gittip.testing import Harness +from gittip.testing.balanced import BalancedHarness + + +class TestCharge(BalancedHarness): + + def test_charge_without_cc_details_raises_NoBalancedCustomerHref(self): + alice = self.make_participant('alice') + with self.assertRaises(NoBalancedCustomerHref): + charge(self.db, alice, D('1.00')) + + @mock.patch('gittip.billing.exchanges.charge_on_balanced') + def test_charge_failure_returns_error(self, cob): + cob.return_value = (D('10.00'), D('0.68'), 'FAILED') + actual = charge(self.db, self.janet, D('1.00')) + assert actual == 'FAILED' + + @mock.patch('gittip.billing.exchanges.charge_on_balanced') + def test_charge_success_returns_empty_string(self, charge_on_balanced): + charge_on_balanced.return_value = (D('10.00'), D('0.68'), "") + actual = charge(self.db, self.janet, D('1.00')) + assert actual == '' + + @mock.patch('gittip.billing.exchanges.charge_on_balanced') + def test_charge_success_updates_participant(self, cob): + cob.return_value = (D('10.00'), D('0.68'), "") + charge(self.db, self.janet, D('1.00')) + + janet = Participant.from_username('janet') + expected = {'balance': D('9.32'), 'last_bill_result': ''} + actual = {'balance': janet.balance, + 'last_bill_result': janet.last_bill_result} + assert actual == expected + + +class TestChargeOnBalanced(BalancedHarness): + + def test_charge_on_balanced(self): + actual = charge_on_balanced( 'janet' + , self.janet_href + , D('10.00') # $10.00 USD + ) + assert actual == (D('10.61'), D('0.61'), '') + + def test_charge_on_balanced_small_amount(self): + actual = charge_on_balanced( 'janet' + , self.janet_href + , D('0.06') # $0.06 USD + ) + assert actual == (D('10.00'), D('0.59'), '') + + def test_charge_on_balanced_failure(self): + customer_with_bad_card = self.make_balanced_customer() + card = balanced.Card( + number='4444444444444448', + expiration_year=2020, + expiration_month=12 + ).save() + card.associate_to_customer(customer_with_bad_card) + + actual = charge_on_balanced( 'whatever username' + , customer_with_bad_card + , D('10.00') + ) + assert actual == (D('10.61'), D('0.61'), '402 Client Error: PAYMENT REQUIRED') + + def test_charge_on_balanced_handles_MultipleFoundError(self): + customer_href = self.make_balanced_customer() + card = balanced.Card( + number='4242424242424242', + expiration_year=2020, + expiration_month=12 + ).save() + card.associate_to_customer(customer_href) + + card = balanced.Card( + number='4242424242424242', + expiration_year=2030, + expiration_month=12 + ).save() + card.associate_to_customer(customer_href) + + actual = charge_on_balanced( 'whatever username' + , customer_href + , D('10.00') + ) + assert actual == (D('10.61'), D('0.61'), 'MultipleResultsFound()') + + def test_charge_on_balanced_handles_NotFoundError(self): + customer_with_no_card = self.make_balanced_customer() + actual = charge_on_balanced( 'whatever username' + , customer_with_no_card + , D('10.00') + ) + assert actual == (D('10.61'), D('0.61'), 'NoResultFound()') + + +class TestFees(Harness): + + def prep(self, amount): + """Given a dollar amount as a string, return a 3-tuple. + + The return tuple is like the one returned from _prep_hit, but with the + second value, a log message, removed. + + """ + typecheck(amount, unicode) + out = list(_prep_hit(D(amount))) + out = [out[0]] + out[2:] + return tuple(out) + + def test_prep_hit_basically_works(self): + actual = _prep_hit(D('20.00')) + expected = (2091, + u'Charging %s 2091 cents ($20.00 + $0.91 fee = $20.91) on %s ' u'... ', + D('20.91'), D('0.91')) + assert actual == expected + + def test_prep_hit_full_in_rounded_case(self): + actual = _prep_hit(D('5.00')) + expected = (1000, + u'Charging %s 1000 cents ($9.41 [rounded up from $5.00] + ' u'$0.59 fee = $10.00) on %s ... ', + D('10.00'), D('0.59')) + assert actual == expected + + def test_prep_hit_at_ten_dollars(self): + actual = self.prep(u'10.00') + expected = (1061, D('10.61'), D('0.61')) + assert actual == expected + + def test_prep_hit_at_forty_cents(self): + actual = self.prep(u'0.40') + expected = (1000, D('10.00'), D('0.59')) + assert actual == expected + + def test_prep_hit_at_fifty_cents(self): + actual = self.prep(u'0.50') + expected = (1000, D('10.00'), D('0.59')) + assert actual == expected + + def test_prep_hit_at_sixty_cents(self): + actual = self.prep(u'0.60') + expected = (1000, D('10.00'), D('0.59')) + assert actual == expected + + def test_prep_hit_at_eighty_cents(self): + actual = self.prep(u'0.80') + expected = (1000, D('10.00'), D('0.59')) + assert actual == expected + + def test_prep_hit_at_nine_fifteen(self): + actual = self.prep(u'9.15') + expected = (1000, D('10.00'), D('0.59')) + assert actual == expected + + def test_prep_hit_at_nine_forty(self): + actual = self.prep(u'9.40') + expected = (1000, D('10.00'), D('0.59')) + assert actual == expected + + def test_prep_hit_at_nine_forty_one(self): + actual = self.prep(u'9.41') + expected = (1000, D('10.00'), D('0.59')) + assert actual == expected + + def test_prep_hit_at_nine_forty_two(self): + actual = self.prep(u'9.42') + expected = (1002, D('10.02'), D('0.60')) + assert actual == expected + + def test_skim_credit(self): + actual = skim_credit(D('10.00')) + assert actual == (D('10.00'), D('0.00')) + + +class TestRecordExchange(Harness): + + def test_record_exchange_updates_balance(self): + alice = self.make_participant('alice') + record_exchange( self.db + , 'bill' + , amount=D("0.59") + , fee=D("0.41") + , error="" + , participant=alice + ) + alice = Participant.from_username('alice') + assert alice.balance == D("0.59") + + def test_record_exchange_fails_if_negative_balance(self): + alice = self.make_participant('alice') + pytest.raises( NegativeBalance + , record_exchange + , self.db + , 'ach' + , amount=D("-10.00") + , fee=D("0.41") + , error="" + , participant=alice + ) + + def test_record_exchange_doesnt_update_balance_if_error(self): + alice = self.make_participant('alice') + record_exchange( self.db + , 'bill' + , amount=D("1.00") + , fee=D("0.41") + , error="SOME ERROR" + , participant=alice + ) + alice = Participant.from_username('alice') + assert alice.balance == D("0.00") diff --git a/tests/py/test_billing_payday.py b/tests/py/test_billing_payday.py index 58eda78556..054d780cf1 100644 --- a/tests/py/test_billing_payday.py +++ b/tests/py/test_billing_payday.py @@ -1,16 +1,13 @@ from __future__ import absolute_import, division, print_function, unicode_literals from decimal import Decimal as D -from datetime import datetime import balanced import mock -import pytest from psycopg2 import IntegrityError -from aspen.utils import typecheck, utcnow -from gittip import billing -from gittip.billing.payday import Payday, skim_credit, LOOP_PACHINKO +from aspen.utils import utcnow +from gittip.billing.payday import Payday from gittip.exceptions import NegativeBalance from gittip.models.participant import Participant from gittip.testing import Harness @@ -28,66 +25,9 @@ def fetch_payday(self): return self.db.one("SELECT * FROM paydays", back_as=dict) -class TestPaydayCharge(PaydayHarness): +class TestPayday(PaydayHarness): - def get_numbers(self): - """Return a list of 11 ints: - - nachs - nach_failing - nactive - ncc_failing - ncc_missing - ncharges - npachinko - nparticipants - ntippers - ntips - ntransfers - - """ - payday = self.fetch_payday() - keys = [key for key in sorted(payday) if key.startswith('n')] - return [payday[key] for key in keys] - - def test_charge_without_cc_details_returns_None(self): - self.payday.start() - actual = self.payday.charge(self.alice, D('1.00')) - assert actual is None - - def test_charge_without_cc_marked_as_failure(self): - self.payday.start() - self.payday.charge(self.alice, D('1.00')) - actual = self.get_numbers() - assert actual == [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0] - - @mock.patch('gittip.billing.payday.Payday.charge_on_balanced') - def test_charge_failure_returns_None(self, cob): - cob.return_value = (D('10.00'), D('0.68'), 'FAILED') - self.payday.start() - actual = self.payday.charge(self.janet, D('1.00')) - assert actual is None - - @mock.patch('gittip.billing.payday.Payday.charge_on_balanced') - def test_charge_success_returns_None(self, charge_on_balanced): - charge_on_balanced.return_value = (D('10.00'), D('0.68'), "") - self.payday.start() - actual = self.payday.charge(self.janet, D('1.00')) - assert actual is None - - @mock.patch('gittip.billing.payday.Payday.charge_on_balanced') - def test_charge_success_updates_participant(self, cob): - cob.return_value = (D('10.00'), D('0.68'), "") - self.payday.start() - self.payday.charge(self.janet, D('1.00')) - - janet = Participant.from_username('janet') - expected = {'balance': D('9.32'), 'last_bill_result': ''} - actual = {'balance': janet.balance, - 'last_bill_result': janet.last_bill_result} - assert actual == expected - - @mock.patch('gittip.billing.payday.Payday.charge_on_balanced') + @mock.patch('gittip.billing.exchanges.charge_on_balanced') def test_payday_moves_money(self, charge_on_balanced): charge_on_balanced.return_value = (D('10.00'), D('0.68'), "") self.janet.set_tip_to(self.homer, '6.00') # under $10! @@ -99,7 +39,7 @@ def test_payday_moves_money(self, charge_on_balanced): assert homer.balance == D('6.00') assert janet.balance == D('3.32') - @mock.patch('gittip.billing.payday.Payday.charge_on_balanced') + @mock.patch('gittip.billing.exchanges.charge_on_balanced') def test_payday_doesnt_move_money_from_a_suspicious_account(self, charge_on_balanced): charge_on_balanced.return_value = (D('10.00'), D('0.68'), "") self.db.run(""" @@ -116,7 +56,7 @@ def test_payday_doesnt_move_money_from_a_suspicious_account(self, charge_on_bala assert janet.balance == D('0.00') assert homer.balance == D('0.00') - @mock.patch('gittip.billing.payday.Payday.charge_on_balanced') + @mock.patch('gittip.billing.exchanges.charge_on_balanced') def test_payday_doesnt_move_money_to_a_suspicious_account(self, charge_on_balanced): charge_on_balanced.return_value = (D('10.00'), D('0.68'), "") self.db.run(""" @@ -147,78 +87,16 @@ def test_payday_moves_money_with_balanced(self): homer_customer = balanced.Customer.fetch(homer.balanced_customer_href) homer_credits = homer_customer.credits.all() - assert len(homer_credits) == 1 + assert len(homer_credits) >= 1 assert homer_credits[0].amount == 1500 assert homer_credits[0].description == 'homer' janet_debits = janet_customer.debits.all() - assert len(janet_debits) == 1 + assert len(janet_debits) >= 1 assert janet_debits[0].amount == 1576 # base amount + fee assert janet_debits[0].description == 'janet' -class TestPaydayChargeOnBalanced(PaydayHarness): - - def test_charge_on_balanced(self): - actual = self.payday.charge_on_balanced( 'janet' - , self.janet_href - , D('10.00') # $10.00 USD - ) - assert actual == (D('10.61'), D('0.61'), '') - - def test_charge_on_balanced_small_amount(self): - actual = self.payday.charge_on_balanced( 'janet' - , self.janet_href - , D('0.06') # $0.06 USD - ) - assert actual == (D('10.00'), D('0.59'), '') - - def test_charge_on_balanced_failure(self): - customer_with_bad_card = self.make_balanced_customer() - card = balanced.Card( - number='4444444444444448', - expiration_year=2020, - expiration_month=12 - ).save() - card.associate_to_customer(customer_with_bad_card) - - actual = self.payday.charge_on_balanced( 'whatever username' - , customer_with_bad_card - , D('10.00') - ) - assert actual == (D('10.61'), D('0.61'), '402 Client Error: PAYMENT REQUIRED') - - def test_charge_on_balanced_handles_MultipleFoundError(self): - customer_href = self.make_balanced_customer() - card = balanced.Card( - number='4242424242424242', - expiration_year=2020, - expiration_month=12 - ).save() - card.associate_to_customer(customer_href) - - card = balanced.Card( - number='4242424242424242', - expiration_year=2030, - expiration_month=12 - ).save() - card.associate_to_customer(customer_href) - - actual = self.payday.charge_on_balanced( 'whatever username' - , customer_href - , D('10.00') - ) - assert actual == (D('10.61'), D('0.61'), 'MultipleResultsFound()') - - def test_charge_on_balanced_handles_NotFoundError(self): - customer_with_no_card = self.make_balanced_customer() - actual = self.payday.charge_on_balanced( 'whatever username' - , customer_with_no_card - , D('10.00') - ) - assert actual == (D('10.61'), D('0.61'), 'NoResultFound()') - - class TestBillingCharges(PaydayHarness): def test_mark_missing_funding(self): @@ -236,87 +114,12 @@ def test_mark_charge_failed(self): before = self.fetch_payday() fail_count = before['ncc_failing'] - with self.db.get_cursor() as cursor: - self.payday.mark_charge_failed(cursor) + self.payday.mark_charge_failed() after = self.fetch_payday() assert after['ncc_failing'] == fail_count + 1 -class TestPrepHit(PaydayHarness): - - def prep(self, amount): - """Given a dollar amount as a string, return a 3-tuple. - - The return tuple is like the one returned from _prep_hit, but with the - second value, a log message, removed. - - """ - typecheck(amount, unicode) - out = list(self.payday._prep_hit(D(amount))) - out = [out[0]] + out[2:] - return tuple(out) - - def test_prep_hit_basically_works(self): - actual = self.payday._prep_hit(D('20.00')) - expected = (2091, - u'Charging %s 2091 cents ($20.00 + $0.91 fee = $20.91) on %s ' u'... ', - D('20.91'), D('0.91')) - assert actual == expected - - def test_prep_hit_full_in_rounded_case(self): - actual = self.payday._prep_hit(D('5.00')) - expected = (1000, - u'Charging %s 1000 cents ($9.41 [rounded up from $5.00] + ' u'$0.59 fee = $10.00) on %s ... ', - D('10.00'), D('0.59')) - assert actual == expected - - def test_prep_hit_at_ten_dollars(self): - actual = self.prep(u'10.00') - expected = (1061, D('10.61'), D('0.61')) - assert actual == expected - - def test_prep_hit_at_forty_cents(self): - actual = self.prep(u'0.40') - expected = (1000, D('10.00'), D('0.59')) - assert actual == expected - - def test_prep_hit_at_fifty_cents(self): - actual = self.prep(u'0.50') - expected = (1000, D('10.00'), D('0.59')) - assert actual == expected - - def test_prep_hit_at_sixty_cents(self): - actual = self.prep(u'0.60') - expected = (1000, D('10.00'), D('0.59')) - assert actual == expected - - def test_prep_hit_at_eighty_cents(self): - actual = self.prep(u'0.80') - expected = (1000, D('10.00'), D('0.59')) - assert actual == expected - - def test_prep_hit_at_nine_fifteen(self): - actual = self.prep(u'9.15') - expected = (1000, D('10.00'), D('0.59')) - assert actual == expected - - def test_prep_hit_at_nine_forty(self): - actual = self.prep(u'9.40') - expected = (1000, D('10.00'), D('0.59')) - assert actual == expected - - def test_prep_hit_at_nine_forty_one(self): - actual = self.prep(u'9.41') - expected = (1000, D('10.00'), D('0.59')) - assert actual == expected - - def test_prep_hit_at_nine_forty_two(self): - actual = self.prep(u'9.42') - expected = (1002, D('10.02'), D('0.60')) - assert actual == expected - - class TestBillingPayday(PaydayHarness): def test_move_pending_to_balance_for_teams_does_so(self): @@ -353,100 +156,6 @@ def test_update_receiving_amounts_includes_taking(self): assert Participant.from_username('A').receiving == 13 assert Participant.from_username('A').taking == 3 - @mock.patch('gittip.models.participant.Participant.get_tips_and_total') - def test_charge_and_or_transfer_no_tips(self, get_tips_and_total): - self.db.run(""" - UPDATE participants - SET balance=1 - WHERE username='janet' - """) - - amount = D('1.00') - - ts_start = self.payday.start() - - tips, total = [], amount - - initial_payday = self.fetch_payday() - self.payday.charge_and_or_transfer(ts_start, self.janet, tips, total) - resulting_payday = self.fetch_payday() - - assert initial_payday['ntippers'] == resulting_payday['ntippers'] - assert initial_payday['ntips'] == resulting_payday['ntips'] - assert initial_payday['nparticipants'] + 1 == resulting_payday['nparticipants'] - - @mock.patch('gittip.models.participant.Participant.get_tips_and_total') - @mock.patch('gittip.billing.payday.Payday.tip') - def test_charge_and_or_transfer(self, tip, get_tips_and_total): - self.db.run(""" - UPDATE participants - SET balance=1 - WHERE username='janet' - """) - - ts_start = self.payday.start() - now = datetime.utcnow() - amount = D('1.00') - like_a_tip = {'amount': amount, 'tippee': 'mjallday', 'ctime': now, - 'claimed_time': now} - - # success, success, claimed, failure - tips = [like_a_tip, like_a_tip, like_a_tip, like_a_tip] - total = amount - - ts_start = datetime.utcnow() - - return_values = [1, 1, 0, -1] - return_values.reverse() - - def tip_return_values(*_): - return return_values.pop() - - tip.side_effect = tip_return_values - - initial_payday = self.fetch_payday() - self.payday.charge_and_or_transfer(ts_start, self.janet, tips, total) - resulting_payday = self.fetch_payday() - - assert initial_payday['nparticipants'] + 1 == resulting_payday['nparticipants'] - - @mock.patch('gittip.models.participant.Participant.get_tips_and_total') - @mock.patch('gittip.billing.payday.Payday.charge') - def test_charge_and_or_transfer_short(self, charge, get_tips_and_total): - self.db.run(""" - UPDATE participants - SET balance=1 - WHERE username='janet' - """) - - now = datetime.utcnow() - amount = D('1.00') - like_a_tip = {'amount': amount, 'tippee': 'mjallday', 'ctime': now, - 'claimed_time': now} - - # success, success, claimed, failure - tips = [like_a_tip, like_a_tip, like_a_tip, like_a_tip] - get_tips_and_total.return_value = tips, amount - - ts_start = datetime.utcnow() - - # In real-life we wouldn't be able to catch an error as the charge - # method will swallow any errors and return false. We don't handle this - # return value within charge_and_or_transfer but instead continue on - # trying to use the remaining credit in the user's account to payout as - # many tips as possible. - # - # Here we're hacking the system and throwing the exception so execution - # stops since we're only testing this part of the method. That smells - # like we need to refactor. - - charge.side_effect = Exception() - with self.assertRaises(Exception): - billing.charge_and_or_transfer(ts_start, self.janet) - assert charge.called_with(self.janet.username, - self.janet_href, - amount) - @mock.patch('gittip.billing.payday.Payday.transfer') @mock.patch('gittip.billing.payday.log') def test_tip(self, log, transfer): @@ -461,9 +170,8 @@ def test_tip(self, log, transfer): , 'tippee': 'janet' , 'claimed_time': utcnow() } - ts_start = utcnow() - result = self.payday.tip(self.janet, tip, ts_start) + result = self.payday.tip(self.janet, tip) assert result == 1 result = transfer.called_with('janet', tip['tippee'], tip['amount']) assert result @@ -476,47 +184,37 @@ def test_tip(self, log, transfer): # XXX: We should have constants to compare the values to # invalid amount tip['amount'] = invalid_amount - result = self.payday.tip(self.janet, tip, ts_start) + result = self.payday.tip(self.janet, tip) assert result == 0 tip['amount'] = amount - # XXX: We should have constants to compare the values to - # not claimed - tip['claimed_time'] = None - result = self.payday.tip(self.janet, tip, ts_start) - assert result == 0 - - # XXX: We should have constants to compare the values to - # claimed after payday - tip['claimed_time'] = utcnow() - result = self.payday.tip(self.janet, tip, ts_start) - assert result == 0 - - ts_start = utcnow() - # XXX: We should have constants to compare the values to # transfer failed transfer.return_value = False - result = self.payday.tip(self.janet, tip, ts_start) + result = self.payday.tip(self.janet, tip) assert result == -1 @mock.patch('gittip.billing.payday.log') - def test_start_zero_out_and_get_participants(self, log): + def test_start_prepare_and_zero_out(self, log): self.clear_tables() self.make_participant('bob', balance=10, claimed_time=None, pending=1) self.make_participant('carl', balance=10, claimed_time='now', pending=1) ts_start = self.payday.start() + get_participants = lambda: self.db.all("SELECT * FROM pay_participants") + + self.payday.prepare(ts_start) self.payday.zero_out_pending(ts_start) - participants = self.payday.get_participants(ts_start) + + participants = get_participants() expected_logging_call_args = [ ('Starting a new payday.'), ('Payday started at {}.'.format(ts_start)), + ('Prepared the DB.'), ('Zeroed out the pending column.'), - ('Fetched participants.'), ] expected_logging_call_args.reverse() for args, _ in log.call_args_list: @@ -526,8 +224,9 @@ def test_start_zero_out_and_get_participants(self, log): # run a second time, we should see it pick up the existing payday second_ts_start = self.payday.start() + self.payday.prepare(second_ts_start) self.payday.zero_out_pending(second_ts_start) - second_participants = self.payday.get_participants(second_ts_start) + second_participants = get_participants() assert ts_start == second_ts_start participants = list(participants) @@ -540,8 +239,8 @@ def test_start_zero_out_and_get_participants(self, log): expected_logging_call_args = [ ('Picking up with an existing payday.'), ('Payday started at {}.'.format(second_ts_start)), - ('Zeroed out the pending column.'), - ('Fetched participants.')] + ('Prepared the DB.'), + ('Zeroed out the pending column.')] expected_logging_call_args.reverse() for args, _ in log.call_args_list: assert args[0] == expected_logging_call_args.pop() @@ -622,10 +321,6 @@ def test_debit_participant(self): with self.assertRaises(NegativeBalance): self.payday.debit_participant(cursor, subject.username, amount) - def test_skim_credit(self): - actual = skim_credit(D('10.00')) - assert actual == (D('10.00'), D('0.00')) - def test_credit_participant(self): amount = D('1.00') subject = self.make_participant('test_credit_participant', pending=0, @@ -680,36 +375,6 @@ def test_record_transfer_invalid_participant(self): , 'tip' ) - def test_record_credit_updates_balance(self): - alice = Participant.from_username('alice') - self.payday.record_credit( amount=D("-1.00") - , fee=D("0.41") - , error="" - , participant=alice - ) - alice = Participant.from_username('alice') - assert alice.balance == D("0.59") - - def test_record_credit_fails_if_negative_balance(self): - alice = Participant.from_username('alice') - pytest.raises( NegativeBalance - , self.payday.record_credit - , amount=D("10.00") - , fee=D("0.41") - , error="" - , participant=alice - ) - - def test_record_credit_doesnt_update_balance_if_error(self): - alice = Participant.from_username('alice') - self.payday.record_credit( amount=D("-1.00") - , fee=D("0.41") - , error="SOME ERROR" - , participant=alice - ) - alice = Participant.from_username('alice') - assert alice.balance == D("0.00") - class TestPachinko(Harness): @@ -717,17 +382,6 @@ def setUp(self): Harness.setUp(self) self.payday = Payday(self.db) - def test_get_participants_gets_participants(self): - a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20) - a_team.add_member(self.make_participant('alice', claimed_time='now')) - a_team.add_member(self.make_participant('bob', claimed_time='now')) - - ts_start = self.payday.start() - - actual = [p.username for p in self.payday.get_participants(ts_start)] - expected = ['a_team', 'alice', 'bob'] - assert actual == expected - def test_pachinko_pachinkos(self): a_team = self.make_participant('a_team', claimed_time='now', number='plural', balance=20, \ pending=0) @@ -736,8 +390,8 @@ def test_pachinko_pachinkos(self): ts_start = self.payday.start() - participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO) - self.payday.pachinko(ts_start, participants) + self.payday.prepare(ts_start) + self.payday.pachinko() assert Participant.from_username('alice').pending == D('0.01') assert Participant.from_username('bob').pending == D('0.01') @@ -751,8 +405,8 @@ def test_pachinko_sees_current_take(self): ts_start = self.payday.start() - participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO) - self.payday.pachinko(ts_start, participants) + self.payday.prepare(ts_start) + self.payday.pachinko() assert Participant.from_username('alice').pending == D('1.00') @@ -766,8 +420,8 @@ def test_pachinko_ignores_take_set_after_payday_starts(self): ts_start = self.payday.start() a_team.set_take_for(alice, D('1.00'), alice) - participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO) - self.payday.pachinko(ts_start, participants) + self.payday.prepare(ts_start) + self.payday.pachinko() assert Participant.from_username('alice').pending == D('0.33') @@ -782,7 +436,7 @@ def test_pachinko_ignores_take_thats_already_been_processed(self): a_team.set_take_for(alice, D('1.00'), alice) for i in range(4): - participants = self.payday.genparticipants(ts_start, LOOP_PACHINKO) - self.payday.pachinko(ts_start, participants) + self.payday.prepare(ts_start) + self.payday.pachinko() assert Participant.from_username('alice').pending == D('0.33') diff --git a/tests/py/test_close.py b/tests/py/test_close.py index 0091c4c51c..45352c44b7 100644 --- a/tests/py/test_close.py +++ b/tests/py/test_close.py @@ -6,6 +6,7 @@ import balanced import pytest from gittip.billing.payday import Payday +from gittip.exceptions import NoBalancedCustomerHref, NotWhitelisted from gittip.models.community import Community from gittip.models.participant import Participant from gittip.testing import Harness @@ -85,19 +86,19 @@ def test_wbtba_withdraws_balance_to_bank_account(self): def test_wbtba_raises_NoBalancedCustomerHref_if_no_balanced_customer_href(self): alice = self.make_participant('alice', balance=D('10.00'), is_suspicious=False) with self.db.get_cursor() as cursor: - with pytest.raises(alice.NoBalancedCustomerHref): + with pytest.raises(NoBalancedCustomerHref): alice.withdraw_balance_to_bank_account(cursor) def test_wbtba_raises_NotWhitelisted_if_not_whitelisted(self): alice = self.make_participant('alice', balance=D('10.00')) with self.db.get_cursor() as cursor: - with pytest.raises(alice.NotWhitelisted): + with pytest.raises(NotWhitelisted): alice.withdraw_balance_to_bank_account(cursor) def test_wbtba_raises_NotWhitelisted_if_blacklisted(self): alice = self.make_participant('alice', balance=D('10.00'), is_suspicious=True) with self.db.get_cursor() as cursor: - with pytest.raises(alice.NotWhitelisted): + with pytest.raises(NotWhitelisted): alice.withdraw_balance_to_bank_account(cursor) @@ -331,12 +332,12 @@ def test_cpi_clears_teams(self): bob = self.make_participant('bob', claimed_time='now') team.add_member(bob) - assert len(team.get_takes()) == 2 # sanity check + assert len(team.get_current_takes()) == 2 # sanity check with self.db.get_cursor() as cursor: alice.clear_personal_information(cursor) - assert len(team.get_takes()) == 1 + assert len(team.get_current_takes()) == 1 # uic = update_is_closed diff --git a/tests/py/test_teams.py b/tests/py/test_teams.py index 4b97b08e12..39c275db40 100644 --- a/tests/py/test_teams.py +++ b/tests/py/test_teams.py @@ -88,6 +88,6 @@ def test_remove_all_members(self): bob = self.make_participant('bob', claimed_time='now') self.team.add_member(bob) - assert len(self.team.get_takes()) == 2 # sanity check + assert len(self.team.get_current_takes()) == 2 # sanity check self.team.remove_all_members() - assert len(self.team.get_takes()) == 0 + assert len(self.team.get_current_takes()) == 0 diff --git a/www/%username/tips.json.spt b/www/%username/tips.json.spt index 9e1935b748..789949f727 100644 --- a/www/%username/tips.json.spt +++ b/www/%username/tips.json.spt @@ -29,7 +29,7 @@ if POST: out.append(one) if qs.get('also_prune', 'false').lower() in ('true', '1', 'yes'): - old_tips, __ignored = participant.get_tips_and_total() + old_tips = participant.get_current_tips() for tip in old_tips: if tip['tippee'] not in seen: participant.set_tip_to(tip['tippee'], '0.00')