示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
    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)