PayPal -Response没有成功:Express Checkout PayerID缺少-Symfony 2.5



我的应用程序Symfony 2.5有问题。我想集成PayPal Express结帐,但获取信息:

PayPal-Response was not successful: Debug-Token: 27b2ab3a5b382 10419: Express Checkout PayerID is missing. (Express Checkout PayerID is missing.)10406: Transaction refused because of an invalid argument. See a`enter code here`dditional error messages for details. (The PayerID value is invalid.)

我正在使用贝宝沙箱帐户。我创建了应用程序,然后转到帐户详细信息/API凭据,然后复制到app/config.yml用户名,密码和签名。交易数据保存到订单和付款表中。控制器"/orders/8/付款/创建"还会遇到一个错误"用户必须授权交易"。但是在重新加载页面后,我在上方闪烁。

config.yml

jms_payment_core: 
    encryption: 
        secret: def00000093fb9f5f5b2c8657099xxxxxxxxxxxxxxxxxxxxec66409b58b5ee91e0be53f836bb05ea6c91aeaxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
jms_payment_paypal:
    username: poczta-facilitator_api1.xxxxx.pl
    password: KVGAQBAxxxxxxxxxxxxxx
    signature: Aaose356mD-hOFG7cGBTPyxxxxxxxxxxxxxxxxxx
    return_url: https://xxxxxxx
    cancel_url: https://xxxxxxx
    debug: true

orderscontroller.php

<?php
namespace AdevoAdminBundleController;
use JMSPaymentCoreBundleFormChoosePaymentMethodType;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use SymfonyBundleFrameworkBundleControllerController;
use JMSPaymentCoreBundlePluginControllerResult;
use SensioBundleFrameworkExtraBundleConfigurationTemplate;
use SymfonyComponentHttpFoundationRequest;
use AdevoAdminBundleEntityOrder;
/**
 * @Route("/orders")
 */
class OrdersController extends Controller {
    /**
     * @Route(
     * "/new/{amount}"
     * )
     */
    public function newAction($amount) {
        $em = $this->getDoctrine()->getManager();
        $order = new Order($amount);
        $em->persist($order);
        $em->flush();
        return $this->redirect($this->generateUrl('app_orders_show', [
                            'id' => $order->getId(),
        ]));
    }
    /**
     * @Route("/{id}/show",
     * name="app_orders_show"
     * )
     * @Template
     */
    public function showAction(Request $request, Order $order) {
        $form = $this->createForm('jms_choose_payment_method', null, [
            'amount' => $order->getAmount(),
            'currency' => 'EUR',
            'default_method' => 'payment_paypal', // Optional
//            'predefined_data' => array(
//                'paypal_express_checkout' => array(
//                    'return_url' => $this->router->generate('payment_complete', array(
//                        'orderNumber' => $order->getOrderNumber(),
//                    ), true),
//                    'cancel_url' => $this->router->generate('payment_cancel', array(
//                        'orderNumber' => $order->getOrderNumber(),
//                    ), true)
//                ),
//            ),
        ]);
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            $ppc = $this->get('payment.plugin_controller');
            $ppc->createPaymentInstruction($instruction = $form->getData());
            $order->setPaymentInstruction($instruction);
            $em = $this->getDoctrine()->getManager();
            $em->persist($order);
            $em->flush($order);
            return $this->redirect($this->generateUrl('app_orders_paymentcreate', [
                                'id' => $order->getId(),
            ]));
        }
        return [
            'order' => $order,
            'form' => $form->createView(),
        ];
    }
    private function createPayment($order) {
        $instruction = $order->getPaymentInstruction();
        $pendingTransaction = $instruction->getPendingTransaction();
        if ($pendingTransaction !== null) {
            return $pendingTransaction->getPayment();
        }
        $ppc = $this->get('payment.plugin_controller');
        $amount = $instruction->getAmount() - $instruction->getDepositedAmount();
        return $ppc->createPayment($instruction->getId(), $amount);
    }
    /**
     * @Route("/{id}/payment/create",
     * name="app_orders_paymentcreate"
     * )
     * 
     */
    public function paymentCreateAction(Order $order) {
        $payment = $this->createPayment($order);
        $ppc = $this->get('payment.plugin_controller');
        $result = $ppc->approveAndDeposit($payment->getId(), $payment->getTargetAmount());
        if ($result->getStatus() === Result::STATUS_SUCCESS) {
            return $this->redirect($this->generateUrl('app_orders_paymentcomplete', [
                                'id' => $order->getId(),
            ]));
        }
        throw $result->getPluginException();
        //return new Response('Payment not complete');
        // In a real-world application you wouldn't throw the exception. You would,
        // for example, redirect to the showAction with a flash message informing
        // the user that the payment was not successful.
    }
    /**
     * @Route("/{id}/payment/complete",
     * name="app_orders_paymentcomplete"
     * )
     * 
     */
    public function paymentCompleteAction(Order $order) {
        return new Response('Payment complete');
    }
}

order.php->实体

<?php
namespace AdevoAdminBundleEntity;
use DoctrineORMMapping as ORM;
use JMSPaymentCoreBundleEntityPaymentInstruction;
/**
 * @ORMTable(name="orders")
 * @ORMEntity
 */
class Order
{
    /**
     * @ORMColumn(name="id", type="integer")
     * @ORMId
     * @ORMGeneratedValue(strategy="AUTO")
     */
    private $id;
    /** @ORMOneToOne(targetEntity="JMSPaymentCoreBundleEntityPaymentInstruction") */
    private $paymentInstruction;
    /** @ORMColumn(type="decimal", precision=10, scale=5) */
    private $amount;
    public function __construct($amount)
    {
        $this->amount = $amount;
    }
    public function getId()
    {
        return $this->id;
    }
    public function getAmount()
    {
        return $this->amount;
    }
    public function getPaymentInstruction()
    {
        return $this->paymentInstruction;
    }
    public function setPaymentInstruction(PaymentInstruction $instruction)
    {
        $this->paymentInstruction = $instruction;
    }
}

Logs   - 1 error
INFO - Matched route "app_orders_paymentcreate" (parameters: "_controller": "AdevoAdminBundleControllerOrdersController::paymentCreateAction", "id": "12", "_route": "app_orders_paymentcreate") 
DEBUG - Read SecurityContext from the session 
DEBUG - Reloading user from user provider. 
DEBUG - SELECT t0.id AS id_1, t0.google_id AS google_id_2, t0.username AS username_3, t0.name AS name_4, t0.surname AS surname_5, t0.description AS description_6, t0.email AS email_7, t0.password AS password_8, t0.account_non_expired AS account_non_expired_9, t0.account_non_locked AS account_non_locked_10, t0.credentials_non_expired AS credentials_non_expired_11, t0.enabled AS enabled_12, t0.roles AS roles_13, t0.action_token AS action_token_14, t0.register_date AS register_date_15, t0.avatar AS avatar_16, t0.updateDate AS updateDate_17 FROM users t0 WHERE t0.id = ? 
DEBUG - Username "tomek" was reloaded from user provider. 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerErrorsLoggerListener::injectLogger". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerErrorsLoggerListener::injectLogger". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerErrorsLoggerListener::injectLogger". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerDebugHandlersListener::configure". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerProfilerListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyBundleFrameworkBundleEventListenerSessionListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerFragmentListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerRouterListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerLocaleListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentSecurityHttpFirewall::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyBundleAsseticBundleEventListenerRequestListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "KnpBundlePaginatorBundleSubscriberSlidingPaginationSubscriber::onKernelRequest". 
DEBUG - SELECT t0.id AS id_1, t0.amount AS amount_2, t0.paymentInstruction_id AS paymentInstruction_id_3 FROM orders t0 WHERE t0.id = ? 
DEBUG - Notified event "kernel.controller" to listener "SymfonyBundleFrameworkBundleDataCollectorRouterDataCollector::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "SymfonyComponentHttpKernelDataCollectorRequestDataCollector::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "SensioBundleFrameworkExtraBundleEventListenerControllerListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "SensioBundleFrameworkExtraBundleEventListenerParamConverterListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "SensioBundleFrameworkExtraBundleEventListenerTemplateListener::onKernelController". 
DEBUG - SELECT t0.amount AS amount_1, t0.approved_amount AS approved_amount_2, t0.approving_amount AS approving_amount_3, t0.created_at AS created_at_4, t0.credited_amount AS credited_amount_5, t0.crediting_amount AS crediting_amount_6, t0.currency AS currency_7, t0.deposited_amount AS deposited_amount_8, t0.depositing_amount AS depositing_amount_9, t0.extended_data AS extended_data_10, t0.payment_system_name AS payment_system_name_11, t0.reversing_approved_amount AS reversing_approved_amount_12, t0.reversing_credited_amount AS reversing_credited_amount_13, t0.reversing_deposited_amount AS reversing_deposited_amount_14, t0.state AS state_15, t0.updated_at AS updated_at_16, t0.id AS id_17 FROM payment_instructions t0 WHERE t0.id = ? 
DEBUG - SELECT t0.approved_amount AS approved_amount_1, t0.approving_amount AS approving_amount_2, t0.credited_amount AS credited_amount_3, t0.crediting_amount AS crediting_amount_4, t0.deposited_amount AS deposited_amount_5, t0.depositing_amount AS depositing_amount_6, t0.expiration_date AS expiration_date_7, t0.reversing_approved_amount AS reversing_approved_amount_8, t0.reversing_credited_amount AS reversing_credited_amount_9, t0.reversing_deposited_amount AS reversing_deposited_amount_10, t0.state AS state_11, t0.target_amount AS target_amount_12, t0.attention_required AS attention_required_13, t0.expired AS expired_14, t0.created_at AS created_at_15, t0.updated_at AS updated_at_16, t0.id AS id_17, t0.payment_instruction_id AS payment_instruction_id_18 FROM payments t0 WHERE t0.payment_instruction_id = ? 
DEBUG - SELECT t0.attention_required AS attention_required_1, t0.created_at AS created_at_2, t0.credited_amount AS credited_amount_3, t0.crediting_amount AS crediting_amount_4, t0.reversing_amount AS reversing_amount_5, t0.state AS state_6, t0.target_amount AS target_amount_7, t0.updated_at AS updated_at_8, t0.id AS id_9, t0.payment_instruction_id AS payment_instruction_id_10, t0.payment_id AS payment_id_11 FROM credits t0 WHERE t0.payment_instruction_id = ? 
DEBUG - SELECT t0.amount AS amount_1, t0.approved_amount AS approved_amount_2, t0.approving_amount AS approving_amount_3, t0.created_at AS created_at_4, t0.credited_amount AS credited_amount_5, t0.crediting_amount AS crediting_amount_6, t0.currency AS currency_7, t0.deposited_amount AS deposited_amount_8, t0.depositing_amount AS depositing_amount_9, t0.extended_data AS extended_data_10, t0.payment_system_name AS payment_system_name_11, t0.reversing_approved_amount AS reversing_approved_amount_12, t0.reversing_credited_amount AS reversing_credited_amount_13, t0.reversing_deposited_amount AS reversing_deposited_amount_14, t0.state AS state_15, t0.updated_at AS updated_at_16, t0.id AS id_17 FROM payment_instructions t0 WHERE t0.id = ? LIMIT 1 
DEBUG - "START TRANSACTION" 
DEBUG - INSERT INTO payments (approved_amount, approving_amount, credited_amount, crediting_amount, deposited_amount, depositing_amount, expiration_date, reversing_approved_amount, reversing_credited_amount, reversing_deposited_amount, state, target_amount, attention_required, expired, created_at, updated_at, payment_instruction_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
DEBUG - "COMMIT" 
DEBUG - "START TRANSACTION" 
DEBUG - SELECT t0.approved_amount AS approved_amount_1, t0.approving_amount AS approving_amount_2, t0.credited_amount AS credited_amount_3, t0.crediting_amount AS crediting_amount_4, t0.deposited_amount AS deposited_amount_5, t0.depositing_amount AS depositing_amount_6, t0.expiration_date AS expiration_date_7, t0.reversing_approved_amount AS reversing_approved_amount_8, t0.reversing_credited_amount AS reversing_credited_amount_9, t0.reversing_deposited_amount AS reversing_deposited_amount_10, t0.state AS state_11, t0.target_amount AS target_amount_12, t0.attention_required AS attention_required_13, t0.expired AS expired_14, t0.created_at AS created_at_15, t0.updated_at AS updated_at_16, t0.id AS id_17, t0.payment_instruction_id AS payment_instruction_id_18 FROM payments t0 WHERE t0.id = ? FOR UPDATE 
DEBUG - SELECT t0.extended_data AS extended_data_1, t0.processed_amount AS processed_amount_2, t0.reason_code AS reason_code_3, t0.reference_number AS reference_number_4, t0.requested_amount AS requested_amount_5, t0.response_code AS response_code_6, t0.state AS state_7, t0.created_at AS created_at_8, t0.updated_at AS updated_at_9, t0.tracking_id AS tracking_id_10, t0.transaction_type AS transaction_type_11, t0.id AS id_12, t0.credit_id AS credit_id_13, t0.payment_id AS payment_id_14 FROM financial_transactions t0 WHERE t0.payment_id = ? 
DEBUG - INSERT INTO financial_transactions (extended_data, processed_amount, reason_code, reference_number, requested_amount, response_code, state, created_at, updated_at, tracking_id, transaction_type, credit_id, payment_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) 
DEBUG - UPDATE payment_instructions SET approving_amount = ?, depositing_amount = ?, extended_data = ?, updated_at = ? WHERE id = ? 
DEBUG - UPDATE payments SET approving_amount = ?, depositing_amount = ?, state = ?, updated_at = ? WHERE id = ? 
DEBUG - "COMMIT" 
CRITICAL - Uncaught PHP Exception JMSPaymentCoreBundlePluginExceptionActionRequiredException: "User must authorize the transaction." at /home/users/adevo/public_html/babayaga.adevo.pl/vendor/jms/payment-paypal-bundle/JMS/Payment/PaypalBundle/Plugin/ExpressCheckoutPlugin.php line 303 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerErrorsLoggerListener::injectLogger". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerErrorsLoggerListener::injectLogger". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerErrorsLoggerListener::injectLogger". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerDebugHandlersListener::configure". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerProfilerListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyBundleFrameworkBundleEventListenerSessionListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerFragmentListener::onKernelRequest".
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerRouterListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentHttpKernelEventListenerLocaleListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyComponentSecurityHttpFirewall::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "SymfonyBundleAsseticBundleEventListenerRequestListener::onKernelRequest". 
DEBUG - Notified event "kernel.request" to listener "KnpBundlePaginatorBundleSubscriberSlidingPaginationSubscriber::onKernelRequest". 
DEBUG - Notified event "kernel.controller" to listener "SymfonyBundleFrameworkBundleDataCollectorRouterDataCollector::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "SymfonyComponentHttpKernelDataCollectorRequestDataCollector::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "SensioBundleFrameworkExtraBundleEventListenerControllerListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "SensioBundleFrameworkExtraBundleEventListenerParamConverterListener::onKernelController". 
DEBUG - Notified event "kernel.controller" to listener "SensioBundleFrameworkExtraBundleEventListenerTemplateListener::onKernelController". 
WARNING - Defining the initRuntime() method in the "form" extension is deprecated since version 1.23. Use the `needs_environment` option to get the Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig_Extension_InitRuntimeInterface if needed (not recommended). 
WARNING - Defining the initRuntime() method in the "adevo_news_extension" extension is deprecated since version 1.23. Use the `needs_environment` option to get the Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig_Extension_InitRuntimeInterface if needed (not recommended). 
WARNING - Defining the initRuntime() method in the "adevo_admin_extension" extension is deprecated since version 1.23. Use the `needs_environment` option to get the Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig_Extension_InitRuntimeInterface if needed (not recommended). 
在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

添加代码来处理异地付款

http://jmspaymentcorebundle.readthedocs.io/en/stable/guides/guides/acepting_payments.html#performing-the-payment-the-payment-offsite

相关内容

  • 没有找到相关文章

最新更新