예제 #1
0
 def create(cls, user):
     sel = SolitudeSeller.create(user)
     prod = client.post_product(data={
         'seller': sel.resource_uri, 'secret': generate_key(48),
         'external_id': str(uuid.uuid4()), 'public_id': str(uuid.uuid4())
     })
     log.info('User %s created an in-app payments dev key product=%s '
              'with %s' % (user, prod['resource_pk'], sel))
     return cls.objects.create(solitude_seller=sel,
                               seller_product_pk=prod['resource_pk'])
예제 #2
0
파일: models.py 프로젝트: fwenzel/zamboni
 def create(cls, user):
     sel = SolitudeSeller.create(user)
     prod = client.post_product(
         data={
             "seller": sel.resource_uri,
             "secret": generate_key(48),
             "external_id": str(uuid.uuid4()),
             "public_id": str(uuid.uuid4()),
         }
     )
     log.info("User %s created an in-app payments dev key product=%s " "with %s" % (user, prod["resource_pk"], sel))
     return cls.objects.create(solitude_seller=sel, seller_product_pk=prod["resource_pk"])
예제 #3
0
파일: models.py 프로젝트: fwenzel/zamboni
    def create(cls, provider, addon, payment_account):
        """Parameters:

        - provider:
            The provider that the product is to be created for. (currently only
            `bango`)
        - addon:
            The app that the product is being created for.
        - payment_account:
            The PaymentAccount object to tie the app to.

        """
        secret = generate_key(48)
        external_id = webpay.make_ext_id(addon.pk)
        data = {"seller": cls.uri_to_pk(payment_account.seller_uri), "external_id": external_id}
        # TODO: convert to curling and clean out a bunch of this code.
        res = client.get_product(filters=data)
        if res["meta"]["total_count"] > 1:
            # This probably means that Solitude
            # ignored one of our filter parameters.
            log.info("AddonPaymentAccount product result: %s" % res)
            raise ValueError("Multiple products returned for %s" % data)
        elif res["meta"]["total_count"] == 1:
            generic_product = res["objects"][0]
        else:
            generic_product = client.post_product(
                data={
                    "seller": payment_account.seller_uri,
                    "secret": secret,
                    "external_id": external_id,
                    "public_id": str(uuid.uuid4()),
                }
            )
        product_uri = generic_product["resource_uri"]

        if provider == "bango":
            uri = cls._create_bango(product_uri, addon, payment_account, secret)
        else:
            uri = ""

        return cls.objects.create(
            addon=addon,
            provider=provider,
            payment_account=payment_account,
            set_price=addon.addonpremium.price.price,
            account_uri=payment_account.uri,
            product_uri=uri,
        )
예제 #4
0
파일: models.py 프로젝트: atsay/zamboni
    def create(cls, provider, addon, payment_account):
        """Parameters:

        - provider:
            The provider that the product is to be created for. (currently only
            `bango`)
        - addon:
            The app that the product is being created for.
        - payment_account:
            The PaymentAccount object to tie the app to.

        """
        secret = generate_key(48)
        external_id = webpay.make_ext_id(addon.pk)
        data = {'seller_uri': payment_account.seller_uri,
                'external_id': external_id}
        res = client.get_product(filters=data)
        if res['meta']['total_count'] > 1:
            # This probably means that Solitude
            # ignored one of our filter parameters.
            log.info('AddonPaymentAccount product result: %s' % res)
            raise ValueError('Multiple products returned for %s' % data)
        elif res['meta']['total_count'] == 1:
            generic_product = res['objects'][0]
        else:
            generic_product = client.post_product(data={
                'seller': payment_account.seller_uri, 'secret': secret,
                'external_id': external_id
            })
        product_uri = generic_product['resource_uri']

        if provider == 'bango':
            uri = cls._create_bango(
                product_uri, addon, payment_account, secret)
        else:
            uri = ''

        return cls.objects.create(addon=addon, provider=provider,
                                  payment_account=payment_account,
                                  set_price=addon.addonpremium.price.price,
                                  account_uri=payment_account.uri,
                                  product_uri=uri)