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'])
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"])
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, )
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)