There is no `request.post_vars`, and thus no
`request.post_vars.stripeToken`, when the controller the form was submitted
to executes.
I cannot see any such hidden field in the DOM, but there not being one
would explain why it isn't getting back to me.
Further poking around, I found a section (not displayed) of class
stripeErrorMessage, the contents of which says
Sorry, there was a problem loading Checkout.
If this persists, please try a different browser.
But I'm thinking that is there to be displayed IF there is a problem, as
the form comes up fine and responds to the credit card number appropriately
(except for giving me back the token).
On Thursday, March 23, 2017 at 6:08:59 PM UTC-4, Anthony wrote:
>
> On Thursday, March 23, 2017 at 10:20:29 AM UTC-4, Scott Hunter wrote:
>>
>> That's what I would have thought, but if I have the following in my view:
>>
>> <form action="{{=URL(c='pay',f='charge',args=request.args)}}" method=
>> "POST">
>> <script
>> src="https://checkout.stripe.com/checkout.js" class="stripe-button"
>> data-email="{{=auth.user.email}}"
>> data-key="{{=pk}}"
>> data-amount="{{=amount}}"
>> data-name="UKI TMS"
>> data-description="{{=description}}"
>> data-image="
>> https://stripe.com/img/documentation/checkout/marketplace.png"
>> data-panel-label="{{=label}}"
>> data-locale="auto">
>> </script>
>> </form>
>>
>> and the following in my `pay` controller:
>>
>> def charge():
>> return DIV("%r"%request,_class="well")
>>
>>
>>
>> the displayed value of `request._post_vars` is None. Same thing if I
>> don't specify `args` in the action URL, or leave the action URL empty (and
>> display `request.env` from the appropriate controller).
>>
>
> That's not the way to check for posted variables. request._post_vars is
> populated lazily the first time request.post_vars (or request.vars) is
> accessed. You should simply check directly for
> request.post_vars.stripeToken (which is the only field that will be posted
> to the controller).
>
>
>> Poking around the DOM, I see that there is *another* form inside of mine,
>> and this is the form which contains the "submit" button (along with all of
>> the input fields).
>>
>
> Notice in your code you are loading a Stripe Javascript script. Once
> loaded, that script generates the form you are seeing in the DOM. That form
> is what the user fills out, and it is submitted directly to Stripe, not to
> your web2py server. Stripe then returns the "stripeToken" to the browser,
> adds it to a hidden field within your form, and submits that form to the
> web2py controller.
>
> Anthony
>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.