Ejemplo n.º 1
0
    def post(self, vanity_url=None):
        provider = db.get_provider_from_vanity_url(vanity_url)

        # set your secret key: remember to change this to your live secret key in production
        # see your keys here https://manage.stripe.com/account
        if util.is_dev_server(self.request):
            stripe.api_key = _STRIPE_TEST_KEY_SECRET
        else:
            stripe.api_key = _STRIPE_PROD_KEY_SECRET

        # get the credit card details submitted by the form
        token = self.request.POST['stripeToken']
        plan = self.request.POST['plan']

        try:
            customer = stripe.Customer.create(card=token,
                                              plan=plan,
                                              email=provider.email)

            # save the customer ID in your database so you can use it later
            provider_account = ProviderAccount()
            provider_account.provider = provider.key
            provider_account.stripe_customer_id = customer.id
            provider_account.stripe_plan_id = plan
            provider_account.put()

            provider.booking_enabled = True
            provider.upgrade_enabled = False

            provider.put()

            self.redirect("/provider/upgrade/success/" + provider.vanity_url)
        except CardError:
            self.render_template("provider/upgrade_failed.html",
                                 provider=provider)