# coding=utf-8
r"""
This code was generated by
\ / _ _ _| _ _
| (_)\/(_)(_|\/| |(/_ v1.0.0
/ /
"""
from twilio.base import deserialize
from twilio.base import serialize
from twilio.base import values
from twilio.base.instance_context import InstanceContext
from twilio.base.instance_resource import InstanceResource
from twilio.base.list_resource import ListResource
from twilio.base.page import Page
[docs]class PaymentList(ListResource):
""" PLEASE NOTE that this class contains preview products that are subject
to change. Use them with caution. If you currently do not have developer
preview access, please contact help@twilio.com. """
def __init__(self, version, account_sid, call_sid):
"""
Initialize the PaymentList
:param Version version: Version that contains the resource
:param account_sid: The SID of the Account that created the Payments resource.
:param call_sid: The SID of the Call the resource is associated with.
:returns: twilio.rest.api.v2010.account.call.payment.PaymentList
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentList
"""
super(PaymentList, self).__init__(version)
# Path Solution
self._solution = {'account_sid': account_sid, 'call_sid': call_sid, }
self._uri = '/Accounts/{account_sid}/Calls/{call_sid}/Payments.json'.format(**self._solution)
[docs] def create(self, idempotency_key, status_callback,
bank_account_type=values.unset, charge_amount=values.unset,
currency=values.unset, description=values.unset, input=values.unset,
min_postal_code_length=values.unset, parameter=values.unset,
payment_connector=values.unset, payment_method=values.unset,
postal_code=values.unset, security_code=values.unset,
timeout=values.unset, token_type=values.unset,
valid_card_types=values.unset):
"""
Create the PaymentInstance
:param unicode idempotency_key: A unique token that will be used to ensure that multiple API calls with the same information do not result in multiple transactions.
:param unicode status_callback: Provide an absolute or relative URL to receive status updates regarding your Pay session..
:param PaymentInstance.BankAccountType bank_account_type: Type of bank account if payment source is ACH.
:param unicode charge_amount: A positive decimal value less than 1,000,000 to charge against the credit card or bank account.
:param unicode currency: The currency of the `charge_amount`.
:param unicode description: The description can be used to provide more details regarding the transaction.
:param unicode input: A list of inputs that should be accepted. Currently only `dtmf` is supported.
:param unicode min_postal_code_length: A positive integer that is used to validate the length of the `PostalCode` inputted by the user.
:param dict parameter: A single-level JSON object used to pass custom parameters to payment processors. (Required for ACH payments)
:param unicode payment_connector: This is the unique name corresponding to the Pay Connector installed in the Twilio Add-ons.
:param PaymentInstance.PaymentMethod payment_method: Type of payment being captured.
:param bool postal_code: Indicates whether the credit card PostalCode (zip code) is a required piece of payment information that must be provided by the caller.
:param bool security_code: Indicates whether the credit card security code is a required piece of payment information that must be provided by the caller.
:param unicode timeout: The number of seconds that <Pay> should wait for the caller to press a digit between each subsequent digit, after the first one, before moving on to validate the digits captured.
:param PaymentInstance.TokenType token_type: Indicates whether the payment method should be tokenized as a `one-time` or `reusable` token.
:param unicode valid_card_types: Credit card types separated by space that Pay should accept.
:returns: The created PaymentInstance
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentInstance
"""
data = values.of({
'IdempotencyKey': idempotency_key,
'StatusCallback': status_callback,
'BankAccountType': bank_account_type,
'ChargeAmount': charge_amount,
'Currency': currency,
'Description': description,
'Input': input,
'MinPostalCodeLength': min_postal_code_length,
'Parameter': serialize.object(parameter),
'PaymentConnector': payment_connector,
'PaymentMethod': payment_method,
'PostalCode': postal_code,
'SecurityCode': security_code,
'Timeout': timeout,
'TokenType': token_type,
'ValidCardTypes': valid_card_types,
})
payload = self._version.create(method='POST', uri=self._uri, data=data, )
return PaymentInstance(
self._version,
payload,
account_sid=self._solution['account_sid'],
call_sid=self._solution['call_sid'],
)
[docs] def get(self, sid):
"""
Constructs a PaymentContext
:param sid: The SID of Payments session
:returns: twilio.rest.api.v2010.account.call.payment.PaymentContext
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentContext
"""
return PaymentContext(
self._version,
account_sid=self._solution['account_sid'],
call_sid=self._solution['call_sid'],
sid=sid,
)
def __call__(self, sid):
"""
Constructs a PaymentContext
:param sid: The SID of Payments session
:returns: twilio.rest.api.v2010.account.call.payment.PaymentContext
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentContext
"""
return PaymentContext(
self._version,
account_sid=self._solution['account_sid'],
call_sid=self._solution['call_sid'],
sid=sid,
)
def __repr__(self):
"""
Provide a friendly representation
:returns: Machine friendly representation
:rtype: str
"""
return '<Twilio.Api.V2010.PaymentList>'
[docs]class PaymentPage(Page):
""" PLEASE NOTE that this class contains preview products that are subject
to change. Use them with caution. If you currently do not have developer
preview access, please contact help@twilio.com. """
def __init__(self, version, response, solution):
"""
Initialize the PaymentPage
:param Version version: Version that contains the resource
:param Response response: Response from the API
:param account_sid: The SID of the Account that created the Payments resource.
:param call_sid: The SID of the Call the resource is associated with.
:returns: twilio.rest.api.v2010.account.call.payment.PaymentPage
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentPage
"""
super(PaymentPage, self).__init__(version, response)
# Path Solution
self._solution = solution
[docs] def get_instance(self, payload):
"""
Build an instance of PaymentInstance
:param dict payload: Payload response from the API
:returns: twilio.rest.api.v2010.account.call.payment.PaymentInstance
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentInstance
"""
return PaymentInstance(
self._version,
payload,
account_sid=self._solution['account_sid'],
call_sid=self._solution['call_sid'],
)
def __repr__(self):
"""
Provide a friendly representation
:returns: Machine friendly representation
:rtype: str
"""
return '<Twilio.Api.V2010.PaymentPage>'
[docs]class PaymentContext(InstanceContext):
""" PLEASE NOTE that this class contains preview products that are subject
to change. Use them with caution. If you currently do not have developer
preview access, please contact help@twilio.com. """
def __init__(self, version, account_sid, call_sid, sid):
"""
Initialize the PaymentContext
:param Version version: Version that contains the resource
:param account_sid: The SID of the Account that will update the resource
:param call_sid: The SID of the call that will create the resource.
:param sid: The SID of Payments session
:returns: twilio.rest.api.v2010.account.call.payment.PaymentContext
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentContext
"""
super(PaymentContext, self).__init__(version)
# Path Solution
self._solution = {'account_sid': account_sid, 'call_sid': call_sid, 'sid': sid, }
self._uri = '/Accounts/{account_sid}/Calls/{call_sid}/Payments/{sid}.json'.format(**self._solution)
[docs] def update(self, idempotency_key, status_callback, capture=values.unset,
status=values.unset):
"""
Update the PaymentInstance
:param unicode idempotency_key: A unique token that will be used to ensure that multiple API calls with the same information do not result in multiple transactions.
:param unicode status_callback: Provide an absolute or relative URL to receive status updates regarding your Pay session.
:param PaymentInstance.Capture capture: The piece of payment information that you wish the caller to enter.
:param PaymentInstance.Status status: Indicates whether the current payment session should be cancelled or completed.
:returns: The updated PaymentInstance
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentInstance
"""
data = values.of({
'IdempotencyKey': idempotency_key,
'StatusCallback': status_callback,
'Capture': capture,
'Status': status,
})
payload = self._version.update(method='POST', uri=self._uri, data=data, )
return PaymentInstance(
self._version,
payload,
account_sid=self._solution['account_sid'],
call_sid=self._solution['call_sid'],
sid=self._solution['sid'],
)
def __repr__(self):
"""
Provide a friendly representation
:returns: Machine friendly representation
:rtype: str
"""
context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items())
return '<Twilio.Api.V2010.PaymentContext {}>'.format(context)
[docs]class PaymentInstance(InstanceResource):
""" PLEASE NOTE that this class contains preview products that are subject
to change. Use them with caution. If you currently do not have developer
preview access, please contact help@twilio.com. """
[docs] class PaymentMethod(object):
CREDIT_CARD = "credit-card"
ACH_DEBIT = "ach-debit"
[docs] class BankAccountType(object):
CONSUMER_CHECKING = "consumer-checking"
CONSUMER_SAVINGS = "consumer-savings"
COMMERCIAL_CHECKING = "commercial-checking"
[docs] class TokenType(object):
ONE_TIME = "one-time"
REUSABLE = "reusable"
[docs] class Capture(object):
PAYMENT_CARD_NUMBER = "payment-card-number"
EXPIRATION_DATE = "expiration-date"
SECURITY_CODE = "security-code"
POSTAL_CODE = "postal-code"
BANK_ROUTING_NUMBER = "bank-routing-number"
BANK_ACCOUNT_NUMBER = "bank-account-number"
[docs] class Status(object):
COMPLETE = "complete"
CANCEL = "cancel"
def __init__(self, version, payload, account_sid, call_sid, sid=None):
"""
Initialize the PaymentInstance
:returns: twilio.rest.api.v2010.account.call.payment.PaymentInstance
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentInstance
"""
super(PaymentInstance, self).__init__(version)
# Marshaled Properties
self._properties = {
'account_sid': payload.get('account_sid'),
'call_sid': payload.get('call_sid'),
'sid': payload.get('sid'),
'date_created': deserialize.rfc2822_datetime(payload.get('date_created')),
'date_updated': deserialize.rfc2822_datetime(payload.get('date_updated')),
'uri': payload.get('uri'),
}
# Context
self._context = None
self._solution = {
'account_sid': account_sid,
'call_sid': call_sid,
'sid': sid or self._properties['sid'],
}
@property
def _proxy(self):
"""
Generate an instance context for the instance, the context is capable of
performing various actions. All instance actions are proxied to the context
:returns: PaymentContext for this PaymentInstance
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentContext
"""
if self._context is None:
self._context = PaymentContext(
self._version,
account_sid=self._solution['account_sid'],
call_sid=self._solution['call_sid'],
sid=self._solution['sid'],
)
return self._context
@property
def account_sid(self):
"""
:returns: The SID of the Account that created the Payments resource.
:rtype: unicode
"""
return self._properties['account_sid']
@property
def call_sid(self):
"""
:returns: The SID of the Call the resource is associated with.
:rtype: unicode
"""
return self._properties['call_sid']
@property
def sid(self):
"""
:returns: The SID of the Payments resource.
:rtype: unicode
"""
return self._properties['sid']
@property
def date_created(self):
"""
:returns: The RFC 2822 date and time in GMT that the resource was created
:rtype: datetime
"""
return self._properties['date_created']
@property
def date_updated(self):
"""
:returns: The RFC 2822 date and time in GMT that the resource was last updated
:rtype: datetime
"""
return self._properties['date_updated']
@property
def uri(self):
"""
:returns: The URI of the resource, relative to `https://api.twilio.com`
:rtype: unicode
"""
return self._properties['uri']
[docs] def update(self, idempotency_key, status_callback, capture=values.unset,
status=values.unset):
"""
Update the PaymentInstance
:param unicode idempotency_key: A unique token that will be used to ensure that multiple API calls with the same information do not result in multiple transactions.
:param unicode status_callback: Provide an absolute or relative URL to receive status updates regarding your Pay session.
:param PaymentInstance.Capture capture: The piece of payment information that you wish the caller to enter.
:param PaymentInstance.Status status: Indicates whether the current payment session should be cancelled or completed.
:returns: The updated PaymentInstance
:rtype: twilio.rest.api.v2010.account.call.payment.PaymentInstance
"""
return self._proxy.update(idempotency_key, status_callback, capture=capture, status=status, )
def __repr__(self):
"""
Provide a friendly representation
:returns: Machine friendly representation
:rtype: str
"""
context = ' '.join('{}={}'.format(k, v) for k, v in self._solution.items())
return '<Twilio.Api.V2010.PaymentInstance {}>'.format(context)