首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当提交Stripe表单时“不能向没有活动卡的客户收费”

当提交Stripe表单时“不能向没有活动卡的客户收费”
EN

Stack Overflow用户
提问于 2015-03-22 17:41:46
回答 1查看 2K关注 0票数 1

我试图让Stripe与一个Symfony2项目一起工作。当我提交我的表格时,我得到了错误。

不能向没有活动卡的客户收费

我不知道怎么解决它..。:)我的控制器

代码语言:javascript
运行
复制
<?php

namespace L3O1\ProjetBundle\Controller;

use L3O1\ProjetBundle\Entity\Payment;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\GetResponseUserEvent;
use FOS\UserBundle\Model\UserInterface;

class PaymentController extends Controller {

    public function chargeAction(Request $request, $id) {
        $token  = $request->request->get('stripeToken');
        $email  = $request->request->get('stripeEmail');
        $amount = $request->request->get('amount');

        $em = $this->getDoctrine()->getManager();
        $projet = $em->getRepository('L3O1ProjetBundle:Projet')->find($id);

        $projet->setSommeDepart($projet->getSommeDepart()+$amount);
        $em->persist($projet);

        if($this->getUser() != null) {
            $payment = new Payment();
            $payment->setUserId($this->getId());
            $payment->setProjetId($projet->getId());
            $payment->setAmount($amount);
            $payment->setDate(new \Datetime());
            $em->persist($payment);
        }

        $em->flush();

        \Stripe\Stripe::setApiKey('mykey');

        $customer = \Stripe\Customer::create(array(
            'email' => $email,
            'source' => $token
        ));

        $charge = \Stripe\Charge::create(array(
            //amount in cent
            'amount'   => $amount*100,
            'currency' => 'eur',
            'customer' => $customer->id,
        ));

        return $this->render('L3O1ProjetBundle:Payments:charge.html.twig');
    }
}

我的表格

代码语言:javascript
运行
复制
{# Stripe payment #}
            <script src="https://checkout.stripe.com/checkout.js"></script>
            <form id="chargeForm" methode="POST" action="{{ path('l3o1_projet_charge', { 'id': app.request.get('id') }) }}">
                <input type="number" name="amount" id="custom-donation" placeholder="Enter an amount" min="1.00" step "10.00"/>
                <input type="hidden" name="stripeToken" id="stripeToken" value="">
                <input type="hidden" name ="stripeEmail" id="stripeEmail" value="">
                <button id="customButton" class="btn btn-lg"> Back this project </button>

                <script>
                    var handler = StripeCheckout.configure({
                        key:'mykey',
                        //image
                        token: function(token, args) {
                            document.getElementById("stripeToken").value = token.id;
                            document.getElementById("stripeEmail").value = token.email;
                            document.getElementById("chargeForm").submit();
                        }
                    })

                    document.getElementById('customButton').addEventListener('click', function(e) {
                        handler.open({
                            name:        '{{ projet.titre }}',
                            description: '{{ projet.shortdesc }}',
                            amount:      document.getElementById('custom-donation').value*100,
                            currency:    'eur',
                        });
                        e.preventDefault();
                    });
                    </script>

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-22 21:12:29

好吧,所以我累了。我的错误很简单,我写了“methode=”POST而不是“method=”POST“.我的控制器无法获得URL中的内容,因为它找不到任何POST表单方法。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29197663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档