Пример #1
0
 def delete(self, request, **kwargs):
     Customer = apps.get_model('bank', 'Customer')
     dw = DwollaAPI()
     pa = PlaidApi()
     try:
         transfer_response = dw.transfer_from_balance_to_check_acc(
             request.user)
     except Exception as e:
         print(e, flush=True)
     customer_url = dw.get_api_url() + "customers/" \
         + Customer.objects.filter(user=request.user).first().dwolla_id
     request_body = {"status": "deactivated"}
     try:
         deactivated_customer = dw.app_token.post(customer_url,
                                                  request_body)
     except Exception as e:
         deactivated_customer = dw.app_token.get(customer_url)
     user_items = Item.objects.active().filter(user=request.user)
     for item in user_items:
         Item.objects.delete_item(id=item.id)
     closing_user = User.objects.get(id=request.user.id)
     closing_user.is_closed_account = True
     closing_user.save()
     return_data = {
         'is_closed': closing_user.is_closed_account,
         'dwolla_customer_status': deactivated_customer.body['status']
     }
     return Response(return_data, status=200)
Пример #2
0
    def create_account_funding_source(self, account, access_token, user):
        from finance.services.dwolla_api import DwollaAPI

        searching_customer = user
        searching_type = 'checking'

        if user.is_parent:
            searching_customer = user.childs.first()
            searching_type = 'savings'

        if account['subtype'] == searching_type:
            dw = DwollaAPI()
            pa = PlaidApi()
            processor_token = pa.create_dwolla_processor_token(
                access_token, account['account_id'])

            try:
                fs = dw.create_dwolla_funding_source(user, processor_token)
            except Exception as e:
                raise e

            Customer = apps.get_model('bank', 'Customer')
            customer = Customer.objects.get(user=searching_customer)

            customer_url = '{}customers/{}'.format(dw.get_api_url(),
                                                   customer.dwolla_id)
            funding_sources = dw.app_token.get('%s/funding-sources' %
                                               customer_url)
            dwolla_balance_id = None

            for i in funding_sources.body['_embedded']['funding-sources']:
                if 'type' in i and i['type'] == 'balance':
                    dwolla_balance_id = i['id']

            return {
                "funding_source": fs,
                "dwolla_balance_id": dwolla_balance_id
            }

        return None