def post(self, request, format=None): try: currency = Currency.objects.get(code=request.data['currency']) receiver_user = User.objects.get(phone_no=request.data['mobile_number']) sender_wallet_obj = UserWallet.objects.get(user=request.user, currency=currency, status='A') sender_wallet = Wallet.get(sender_wallet_obj.mangopay_wallet_id) receiver_wallet_obj = UserWallet.objects.get(user=receiver_user, currency=currency, status='A') receiver_wallet = Wallet.get(receiver_wallet_obj.mangopay_wallet_id) author_user = NaturalUser.get(request.user.mangopay_user_id) transfer = Transfer(author=author_user, #sender debited_funds=Money(amount=request.data['amount'], currency=currency.code), fees=Money(amount=currency.fee, currency=currency.code), debited_wallet=sender_wallet, credited_wallet=receiver_wallet) transfer.save() logger.info("Money transfered successfully from {} user to {} user."\ .format(request.user.phone_no, receiver_user.phone_no)) return Response({ 'success': True, 'message': 'Money transfered successfully.', 'data':{ 'transaction_id':transfer.get_pk() } }) except Exception as e: logger.exception("{}, error occured while transfering money.".format(e)) return Response({ 'success': False, 'message': 'Error occured while transfering money.', 'data':{} })
def post(self, request, format=None): try: currency = Currency.objects.get(code=request.data['currency']) user_wallet = UserWallet.objects.get(user=request.user, currency=currency, status='A') wallet = Wallet.get(user_wallet.mangopay_wallet_id) logger.info( "Successfully returned balance of {} user for {} currency.". format(request.user.phone_no, currency.code)) return Response({ 'success': True, 'message': 'Successfully returned balance.', 'data': { "balance": str(wallet.balance.amount) } }) except Exception as e: logger.error( "{}, error occured while returning balance.".format(e)) return Response({ 'success': False, 'message': 'Error occured while returning balance.', 'data': {} })
def post(self, request, format=None): try: cash_request = CashRequest.objects.get(user_confirmation_code=request.data['confirmation_code']) teller = Teller.objects.get(user=request.user) if cash_request.teller == teller: teller_wallet_obj = UserWallet.objects.get(user=request.user, currency=cash_request.currency, status='A') teller_wallet = Wallet.get(teller_wallet_obj.mangopay_wallet_id) user_wallet_obj = UserWallet.objects.get(user=cash_request.user, currency=cash_request.currency, status='A') user_wallet = Wallet.get(user_wallet_obj.mangopay_wallet_id) if cash_request.request_type == 'A': transaction_amount = cash_request.amount - teller.fee author_user = NaturalUser.get(request.user.mangopay_user_id) transfer = Transfer(author=author_user, #sender debited_funds=Money(amount=transaction_amount, currency=cash_request.currency.code), fees=Money(amount=cash_request.currency.fee, currency=cash_request.currency.code), debited_wallet=teller_wallet, credited_wallet=user_wallet) else: transaction_amount = cash_request.amount + teller.fee + cash_request.currency.fee author_user = NaturalUser.get(cash_request.user.mangopay_user_id) transfer = Transfer(author=author_user, #sender debited_funds=Money(amount=transaction_amount, currency=cash_request.currency.code), fees=Money(amount=cash_request.currency.fee, currency=cash_request.currency.code), debited_wallet=user_wallet, credited_wallet=teller_wallet) transfer.save() cash_request.transaction_reference_number = transfer.get_pk() cash_request.save() logger.info("Cash_transaction completed successfully between {} user and {} teller for {} cashrequest."\ .format(request.user.phone_no, teller.user.phone_no, cash_request.id)) return Response({ 'success': True, 'message': 'Cash transaction successfully completed.', 'data':{ 'transaction_id':transfer.get_pk() } }) except Exception as e: logger.exception("{}, error occured while cash transaction.".format(e)) return Response({ 'success': False, 'message': 'Error occured while cash transaction.', 'data':{} })
def check_wallet_balance(w, state={}): remote_wallet = Wallet.get(w.remote_id) remote_balance = remote_wallet.balance / 100 try: assert remote_balance == w.balance, ( "balances don't match for user #%s (liberapay id %s), wallet #%s contains %s, we expected %s" % (w.remote_owner_id, w.owner, w.remote_id, remote_balance, w.balance) ) except AssertionError as e: from liberapay.website import website website.tell_sentry(e, state, allow_reraise=False)
def post(self, request, format=None): try: try: currency = Currency.objects.get(code=request.data['currency']) card_detail = UserCardDetails.objects.get(user=request.user, currency=currency, is_completed=True) except UserCardDetails.DoesNotExist: return Response({ 'success': True, 'message': 'Please complete card registration first for selected currency.', 'data': {} }) card_registration = CardRegistration.get( card_detail.mangopay_card_registration_id) user_wallet = UserWallet.objects.get(user=request.user, currency=currency, status='A') wallet = Wallet.get(user_wallet.mangopay_wallet_id) mangopay_user = NaturalUser.get(request.user.mangopay_user_id) direct_payin = DirectPayIn( author=mangopay_user, debited_funds=Money(amount=request.data['amount'], currency=currency.code), fees=Money(amount=currency.fee, currency=currency.code), credited_wallet_id=wallet.get_pk(), card_id=card_registration.CardId, secure_mode="DEFAULT", secure_mode_return_url="/") #take url from client direct_payin.save() logger.info("{} {} credited by {} user.".format( request.data['amount'], currency.code, request.user.phone_no)) return Response({ 'success': True, 'message': 'Money successfully credited.', 'data': { 'transaction_id': direct_payin.get_pk() } }) except Exception as e: logger.error( "{}, error occured while adding money by card.".format(e)) return Response({ 'success': False, 'message': 'Error occured while adding money by card.', 'data': {} })
def get_balance(self): wallet = Wallet.get(self.cuenta.wid) if self.balance != wallet.Balance.Amount / 100: self.balance = wallet.Balance.Amount / 100 self.save() return self.balance, self.currency
def update_wallet(self): if not self.cuenta.wid: wallet = Wallet.get(self.cuenta.wid) wallet.update(self.cuenta.wid, Description=self.cuenta.description) wallet.save()