def mobile_checkout(self, product_name, phone_number, amount, metadata={}, callback=None): if not validate_amount(amount): raise ValueError('Invalid amount') if not validate_phone(phone_number): raise ValueError('Invalid amount') amount = amount.split(' ') url = self._make_url('/mobile/checkout/request') headers = dict(self._headers) headers['Content-Type'] = 'application/json' data = json.dumps({ 'username': self._username, 'productName': product_name, 'phoneNumber': phone_number, 'currencyCode': amount[0], 'amount': amount[1], 'metadata': metadata }) return self._make_request(url, 'POST', headers=headers, params=None, data=data, callback=callback)
def create_checkout_token(self, phone_number, callback=None): if not validate_phone(phone_number): raise ValueError('Invalid phone number') url = self._make_url('/checkout/token/create') headers = dict(self._headers) data = {'phoneNumber': phone_number} return self._make_request(url, 'POST', headers, data=data, params=None, callback=callback)
def fetch_queued_calls(self, phone_number, callback=None): if not validate_phone(phone_number): raise ValueError('Invalid phone number') url = self._make_url('/queueStatus') data = { 'username': self._username, 'phoneNumbers': phone_number, } return self._make_request(url, 'POST', headers=self._headers, params=None, data=data, callback=callback)
def media_upload(self, phone_number, url, callback=None): if not validate_phone(phone_number): raise ValueError('Invalid phone number') call_url = self._make_url('/mediaUpload') data = { 'username': self._username, 'phoneNumber': phone_number, 'url': url, } return self._make_request(call_url, 'POST', headers=self._headers, params=None, data=data, callback=callback)
def call(self, source, destination, callback=None): if not validate_phone(destination): raise ValueError('Invalid destination phone number') url = self._make_url('/call') data = { 'username': self._username, 'from': source, 'to': destination, } return self._make_request(url, 'POST', headers=self._headers, params=None, data=data, callback=callback)
def mobile_b2c(self, product_name, consumers, callback=None): try: reasons = PaymentService.REASON.values() schema = Schema([{ 'name': And(str, len), 'phoneNumber': And(str, lambda s: validate_phone(s)), 'currencyCode': And(str, lambda s: len(s) == 3), 'amount': And(lambda f: float(f) > 0), Optional('providerChannel'): And(str, len), Optional('reason'): And(str, lambda s: s in reasons), Optional('metadata'): And(dict) }]) consumers = schema.validate(consumers) except SchemaError as err: raise ValueError('Invalid consumers: ' + err.message) url = self._make_url('/mobile/b2c/request') headers = dict(self._headers) headers['Content-Type'] = 'application/json' data = json.dumps({ 'username': self._username, 'productName': product_name, 'recipients': consumers }) return self._make_request(url, 'POST', headers=headers, params=None, data=data, callback=callback)
def send(self, phone_number=None, amount=None, recipients=None, callback=None): if phone_number is not None and amount is not None: recipients = [ { 'phoneNumber': str(phone_number), 'amount': str(amount) }, ] try: schema = Schema([{ 'phoneNumber': And(str, lambda s: validate_phone(s)), 'amount': And(str, lambda s: validate_amount(s)) }]) recipients = schema.validate(recipients) except SchemaError as err: raise ValueError('Invalid recipients: ' + err.message) url = self._make_url('/send') data = { 'username': self._username, 'recipients': json.dumps(recipients) } return self._make_request(url, 'POST', headers=self._headers, params=None, data=data, callback=callback)