Source code for djpaystack.api.payment_requests

from typing import Dict, Any, Optional, List
from .base import BaseAPI


[docs] class PaymentRequestAPI(BaseAPI): """Payment Requests API"""
[docs] def create(self, customer: str, amount: int, due_date: Optional[str] = None, description: Optional[str] = None, line_items: Optional[List] = None, tax: Optional[List] = None, currency: Optional[str] = None, send_notification: Optional[bool] = None, draft: Optional[bool] = None, has_invoice: Optional[bool] = None, invoice_number: Optional[int] = None, split_code: Optional[str] = None) -> Dict[str, Any]: """Create payment request""" data = self._build_query_params( customer=customer, amount=amount, due_date=due_date, description=description, line_items=line_items, tax=tax, currency=currency, send_notification=send_notification, draft=draft, has_invoice=has_invoice, invoice_number=invoice_number, split_code=split_code ) return self._post('paymentrequest', data=data)
[docs] def list(self, per_page: int = 50, page: Optional[int] = None, customer: Optional[int] = None, status: Optional[str] = None, currency: Optional[str] = None, include_archive: Optional[bool] = None, from_date: Optional[str] = None, to_date: Optional[str] = None) -> Dict[str, Any]: """List payment requests""" params = self._build_query_params( customer=customer, status=status, currency=currency, include_archive=include_archive, from_date=from_date, to_date=to_date ) return self._paginate('paymentrequest', params=params, per_page=per_page, page=page)
[docs] def fetch(self, id_or_code: str) -> Dict[str, Any]: """Fetch payment request""" return self._get(f'paymentrequest/{id_or_code}')
[docs] def verify(self, code: str) -> Dict[str, Any]: """Verify payment request""" return self._get(f'paymentrequest/verify/{code}')
[docs] def send_notification(self, code: str) -> Dict[str, Any]: """Send notification for payment request""" return self._post(f'paymentrequest/notify/{code}', data={})
[docs] def total(self) -> Dict[str, Any]: """Get payment request totals""" return self._get('paymentrequest/totals')
[docs] def finalize(self, code: str) -> Dict[str, Any]: """Finalize payment request""" return self._post(f'paymentrequest/finalize/{code}', data={})
[docs] def update(self, id_or_code: str, customer: Optional[str] = None, amount: Optional[int] = None, currency: Optional[str] = None, due_date: Optional[str] = None, description: Optional[str] = None, line_items: Optional[List] = None, tax: Optional[List] = None, send_notification: Optional[bool] = None, draft: Optional[bool] = None) -> Dict[str, Any]: """Update payment request""" data = self._build_query_params( customer=customer, amount=amount, currency=currency, due_date=due_date, description=description, line_items=line_items, tax=tax, send_notification=send_notification, draft=draft ) return self._put(f'paymentrequest/{id_or_code}', data=data)
[docs] def archive(self, code: str) -> Dict[str, Any]: """Archive payment request""" return self._post(f'paymentrequest/archive/{code}', data={})