0

Symfony2.3 プロジェクトに、paypal 統合用のこれらのバンドルをインストールしました。

"jms/payment-core-bundle": "1.0.*@dev" "jms/payment-paypal-bundle": "dev-master"

このリンクhttp://jmsyst.com/bundles/JMSPaymentPaypalBundleに従って構成を行いました。エンティティとデータベースを取得しましたが、フォームとビューを取得できませんでした。

私の質問は、これらのバンドルで支払いページを取得するにはどうすればよいですか? そのためのフォームはありますか?もしそうなら、どうすれば入手できますか?

4

1 に答える 1

1

次のようなフォームをレンダリングするには、支払いアクションが必要です。

 * @Route("/{id}", name="paiement")
     * @Template()
     */
    public function paymentAction($id=0) // this is a personnal ID i pass to the controler to identify the previous shopping cart
    {
        $form = $this->getFormFactory()->create('jms_choose_payment_method', null, array(
            'amount'   => $order->getPrice(),
            'currency' => 'EUR',
            'default_method' => 'payment_paypal', // Optional
            'predefined_data' => array()
        ));

        if ('POST' === $this->request->getMethod()) {
            $form->bindRequest($this->request);
            $order = new Order();
            $this->em->persist( $order);
            $this->em->flush( $order);

            $form = $this->getFormFactory()->create('jms_choose_payment_method', null, array(
                'amount'   => $order->getPrice(),
                'currency' => 'EUR',
                'default_method' => 'payment_paypal', // Optional
                'predefined_data' => array(
                    'paypal_express_checkout' => array(
                        'return_url' => $this->router->generate('payment_complete', array(
                            'id' =>$order->getId()
                        ), true),
                        'cancel_url' => $this->router->generate('payment_cancel', array(
                            'id' => $order->getId()
                        ), true)
                    ),
                ),
            ));

            $form->bindRequest($this->request);

    // Once the Form is validate, you update the order with payment instruction
            if ($form->isValid()) {
                $instruction = $form->getData();
                $this->ppc->createPaymentInstruction($instruction);
                $order->setPaymentInstruction($instruction);
                $this->em->persist($order);
                $this->em->flush($order);
                // now, let's redirect to payment_complete with the order id
                return new RedirectResponse($this->router->generate('payment_complete', array('id' => $order->getId() )));
            }
        }
        return $this->render('YourBundle:Paiement:paymentChooseTemplate.html.twig',array('form' => $form->createView() , 'id' => $id));
    }

このコードの重要な部分は、ペイパルの選択を示すフォームの作成です。このフォームをレンダリングして支払いページに埋め込み、支払いアクションでその有効性をチェックして、コードを続行できます。

現在のウェブサイトでは、デフォルトのフォームを使用せずにこれを別の方法で行っています。

詳細情報を入手できるリンクを提供します。

http://symfony2.ylly.fr/how-to-set-up-jmspayment-bundle-and-add-the-paypal-plugin-sebastien/

http://jmsyst.com/bundles/JMSPaymentCoreBundle/master/usage

公式の JMS Web サイトがこれに関するドキュメントを公開しているのは悲しいことですが、それでも仕組みを理解しやすいので、気にしなかったのだと思います。

于 2015-04-10T09:32:15.620 に答える