示例#1
0
    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':{}
            })
示例#2
0
 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': {}
         })
示例#3
0
 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':{}
         })
示例#4
0
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)
示例#5
0
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)
示例#6
0
    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': {}
            })
示例#7
0
文件: models.py 项目: ojr9/g39
 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
示例#8
0
文件: models.py 项目: ojr9/g39
 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()