def initiate_transfer(db, t_id): amount, status = db.one( """ SELECT t.amount, t.status FROM transfers t WHERE t.id = %s AND t.status = 'pre' """, (t_id, )) assert status == 'pre', (t_id, status) tipper_wallet = db.one( """ SELECT w.remote_id, w.remote_owner_id FROM transfers t JOIN wallets w ON w.remote_id = t.wallet_from WHERE t.id = %s """, (t_id, )) tippee_wallet = db.one( """ SELECT w.remote_id, w.remote_owner_id FROM transfers t JOIN wallets w ON w.remote_id = t.wallet_to WHERE t.id = %s """, (t_id, )) tr = Transfer() tr.AuthorId = tipper_wallet.remote_owner_id tr.CreditedUserId = tippee_wallet.remote_owner_id tr.CreditedWalletId = tippee_wallet.remote_id tr.DebitedFunds = amount.int() tr.DebitedWalletId = tipper_wallet.remote_id tr.Fees = Money(0, amount.currency) tr.Tag = str(t_id) execute_transfer(db, t_id, tr) return tr
def transfer(db, tipper, tippee, amount, context, **kw): tipper_wallet = NS(remote_id=kw.get('tipper_wallet_id'), remote_owner_id=kw.get('tipper_mango_id')) if not all(tipper_wallet.__dict__.values()): tipper_wallet = Participant.from_id(tipper).get_current_wallet( amount.currency) tippee_wallet = NS(remote_id=kw.get('tippee_wallet_id'), remote_owner_id=kw.get('tippee_mango_id')) if not all(tippee_wallet.__dict__.values()): tippee_wallet = Participant.from_id(tippee).get_current_wallet( amount.currency, create=True) wallet_from = tipper_wallet.remote_id wallet_to = tippee_wallet.remote_id t_id = prepare_transfer( db, tipper, tippee, amount, context, wallet_from, wallet_to, team=kw.get('team'), invoice=kw.get('invoice'), bundles=kw.get('bundles'), unit_amount=kw.get('unit_amount'), ) tr = Transfer() tr.AuthorId = tipper_wallet.remote_owner_id tr.CreditedUserId = tippee_wallet.remote_owner_id tr.CreditedWalletId = wallet_to tr.DebitedFunds = amount.int() tr.DebitedWalletId = wallet_from tr.Fees = Money(0, amount.currency) tr.Tag = str(t_id) return execute_transfer(db, t_id, tr), t_id
def transfer(db, tipper, tippee, amount, context, **kw): get = lambda id, col: db.one( "SELECT {0} FROM participants WHERE id = %s".format(col), (id, )) wallet_from = kw.get('tipper_wallet_id') or get(tipper, 'mangopay_wallet_id') wallet_to = kw.get('tippee_wallet_id') or get(tippee, 'mangopay_wallet_id') if not wallet_to: wallet_to = create_wallet(db, Participant.from_id(tippee)) t_id = prepare_transfer( db, tipper, tippee, amount, context, wallet_from, wallet_to, team=kw.get('team'), invoice=kw.get('invoice'), bundles=kw.get('bundles'), ) tr = Transfer() tr.AuthorId = kw.get('tipper_mango_id') or get(tipper, 'mangopay_user_id') tr.CreditedUserId = kw.get('tippee_mango_id') or get( tippee, 'mangopay_user_id') tr.CreditedWalletId = wallet_to tr.DebitedFunds = Money(int(amount * 100), 'EUR') tr.DebitedWalletId = wallet_from tr.Fees = Money(0, 'EUR') tr.Tag = str(t_id) tr.save() return record_transfer_result(db, t_id, tr), t_id
def initiate_transfer(db, t_id): amount, status = db.one(""" SELECT t.amount, t.status FROM transfers t WHERE t.id = %s AND t.status = 'pre' """, (t_id,)) assert status == 'pre', (t_id, status) tipper_wallet = db.one(""" SELECT w.remote_id, w.remote_owner_id FROM transfers t JOIN wallets w ON w.remote_id = t.wallet_from WHERE t.id = %s """, (t_id,)) tippee_wallet = db.one(""" SELECT w.remote_id, w.remote_owner_id FROM transfers t JOIN wallets w ON w.remote_id = t.wallet_to WHERE t.id = %s """, (t_id,)) tr = Transfer() tr.AuthorId = tipper_wallet.remote_owner_id tr.CreditedUserId = tippee_wallet.remote_owner_id tr.CreditedWalletId = tippee_wallet.remote_id tr.DebitedFunds = Money_to_cents(amount) tr.DebitedWalletId = tipper_wallet.remote_id tr.Fees = Money(0, amount.currency) tr.Tag = str(t_id) execute_transfer(db, t_id, tr) return tr
def transfer(db, tipper, tippee, amount, context, **kw): t_id = db.one(""" INSERT INTO transfers (tipper, tippee, amount, context, team, invoice, status) VALUES (%s, %s, %s, %s, %s, %s, 'pre') RETURNING id """, (tipper, tippee, amount, context, kw.get('team'), kw.get('invoice'))) get = lambda id, col: db.one("SELECT {0} FROM participants WHERE id = %s".format(col), (id,)) tr = Transfer() tr.AuthorId = kw.get('tipper_mango_id') or get(tipper, 'mangopay_user_id') tr.CreditedUserId = kw.get('tippee_mango_id') or get(tippee, 'mangopay_user_id') tr.CreditedWalletId = kw.get('tippee_wallet_id') or get(tippee, 'mangopay_wallet_id') if not tr.CreditedWalletId: tr.CreditedWalletId = create_wallet(db, Participant.from_id(tippee)) tr.DebitedFunds = Money(int(amount * 100), 'EUR') tr.DebitedWalletId = kw.get('tipper_wallet_id') or get(tipper, 'mangopay_wallet_id') tr.Fees = Money(0, 'EUR') tr.Tag = str(t_id) tr.save() return record_transfer_result(db, t_id, tr)
def transfer(db, tipper, tippee, amount, context, **kw): tipper_wallet = NS(remote_id=kw.get('tipper_wallet_id'), remote_owner_id=kw.get('tipper_mango_id')) if not all(tipper_wallet.__dict__.values()): tipper_wallet = Participant.from_id(tipper).get_current_wallet(amount.currency) tippee_wallet = NS(remote_id=kw.get('tippee_wallet_id'), remote_owner_id=kw.get('tippee_mango_id')) if not all(tippee_wallet.__dict__.values()): tippee_wallet = Participant.from_id(tippee).get_current_wallet(amount.currency, create=True) wallet_from = tipper_wallet.remote_id wallet_to = tippee_wallet.remote_id t_id = prepare_transfer( db, tipper, tippee, amount, context, wallet_from, wallet_to, team=kw.get('team'), invoice=kw.get('invoice'), bundles=kw.get('bundles'), ) tr = Transfer() tr.AuthorId = tipper_wallet.remote_owner_id tr.CreditedUserId = tippee_wallet.remote_owner_id tr.CreditedWalletId = wallet_to tr.DebitedFunds = amount.int() tr.DebitedWalletId = wallet_from tr.Fees = Money(0, amount.currency) tr.Tag = str(t_id) return execute_transfer(db, t_id, tr), t_id