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) generic_product = client.upsert( method='product', params={'seller': payment_account.seller_uri, 'secret': secret, 'external_id': addon.pk}, lookup_by=['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, set_price=addon.premium.price.price, account_uri=payment_account.uri, product_uri=uri)
def _create_bango(cls, product_uri, addon, payment_account, secret): # Create the Bango product via Solitude. res = client.upsert( method='product_bango', params={'seller_bango': payment_account.uri, 'seller_product': product_uri, 'name': addon.name, 'categoryId': 1, 'secret': secret}, lookup_by=['seller_product']) product_uri = res['resource_uri'] bango_number = res['bango_id'] cls._push_bango_premium( bango_number, product_uri, float(addon.premium.price.price)) return product_uri