支付宝快速结账的 Omnipay 错误,您的最后一个操作无法完成

Posted

技术标签:

【中文标题】支付宝快速结账的 Omnipay 错误,您的最后一个操作无法完成【英文标题】:Omnipay error for paypal express checkout, your last action could not be completed 【发布时间】:2014-07-08 13:08:09 【问题描述】:

我正在使用 OmniPay 通过 laravel 进行贝宝快递付款。有一次奏效了。但现在它只是闯入贝宝页面并出现以下错误:

抱歉,您的最后一个操作无法完成如果您正在制作 购买或汇款,我们建议您检查您的 30 岁后用于确认交易的 PayPal 帐户和您的电子邮件 分钟。

如果您从其他网站来到此页面,请返回该页面 网站(不要使用浏览器的后退按钮)并重新启动您的活动。

如果您来自 PayPal 的网站,请单击 左上角返回我们的主页并重新启动您的 活动。您可能需要重新登录。

派送错误,请查看日志文件了解更多信息

public function paypal() 
        $gateway = Omnipay::create('PayPal_Express');
        $gateway->setUsername('XXXXX');
        $gateway->setPassword('XXXXX');
        $gateway->setSignature('XXXXX');
        $gateway->setTestMode(true);

        $bookX=new BookingEx();
        $bookX=unserialize(\Session::get('booking_data'));

        $args = array('amount' => $bookX->total,
            'returnUrl' => 'http://localhost:8000/booking/paypal-return',
            'cancelUrl' => 'http://localhost:8000/booking/paypal-cancel',
            'description' => 'Your booking $ limousinesydneyaustralia.com',
            'currency'=>'USD');

        $response = $gateway->purchase($args)->send();

        if ($response->isRedirect()) 
            $response->redirect();
         else 
            //display error
        
    

有什么想法吗?

更新: 这是我调用购买方法后得到的:

    > Omnipay\PayPal\Message\ExpressAuthorizeResponse Object (
    > [liveCheckoutEndpoint:protected] => https://www.paypal.com/webscr
    > [testCheckoutEndpoint:protected] =>
    > https://www.sandbox.paypal.com/webscr [request:protected] =>
    > Omnipay\PayPal\Message\ExpressAuthorizeRequest Object (
    > [liveEndpoint:protected] => https://api-3t.paypal.com/nvp
    > [testEndpoint:protected] => https://api-3t.sandbox.paypal.com/nvp
    > [parameters:protected] =>
    > Symfony\Component\HttpFoundation\ParameterBag Object (
    > [parameters:protected] => Array ( [username] =>
    > tesll.xyx_api1.gmail.com [password] => 3440459909 [signature] =>
    > AftOquNmMEiTzuUdbQfXGh6QneRPAzxoLwkQKC0nlNPES4ot7707vkoJ [testMode] =>
    > 1 [solutionType] => Sole [landingPage] => Billing [brandName] =>
    > [headerImageUrl] => [amount] => 16.37 [returnUrl] =>
    > http://localhost:8000/booking/paypal-return [cancelUrl] =>
    > http://localhost:8000/booking/paypal-cancel [description] => Your
    > booking $ limousinesydneyaustralia.com [currency] => USD ) )
    > [httpClient:protected] => Guzzle\Http\Client Object (
    > [defaultHeaders:protected] => Guzzle\Common\Collection Object (
    > [data:protected] => Array ( ) ) [userAgent:protected] => Guzzle/3.9.1
    > curl/7.30.0 php/5.5.9 [config:Guzzle\Http\Client:private] =>
    > Guzzle\Common\Collection Object ( [data:protected] => Array (
    > [curl.options] => Array ( [78] => 60 [10065] =>
    > C:\xampp\htdocs\sangam\vendor\guzzle\http\Guzzle\Http/Resources/cacert.pem
    > [64] => 1 [81] => 2 ) ) ) [baseUrl:Guzzle\Http\Client:private] =>
    > [curlMulti:Guzzle\Http\Client:private] =>
    > Guzzle\Http\Curl\CurlMultiProxy Object ( [handles:protected] => Array
    > ( [0] => Guzzle\Http\Curl\CurlMulti Object ( [multiHandle:protected]
    > => Resource id #198 [requests:protected] => Array ( ) [handles:protected] => SplObjectStorage Object (
    > [storage:SplObjectStorage:private] => Array ( ) )
    > [resourceHash:protected] => Array ( ) [exceptions:protected] => Array
    > ( ) [successful:protected] => Array ( ) [multiErrors:protected] =>
    > Array ( [1] => Array ( [0] => CURLM_BAD_HANDLE [1] => The passed-in
    > handle is not a valid CURLM handle. ) [2] => Array ( [0] =>
    > CURLM_BAD_EASY_HANDLE [1] => An easy handle was not good/valid. It
    > could mean that it isn't an easy handle at all, or possibly that the
    > handle already is in used by this or another multi handle. ) [3] =>
    > Array ( [0] => CURLM_OUT_OF_MEMORY [1] => You are doomed. ) [4] =>
    > Array ( [0] => CURLM_INTERNAL_ERROR [1] => This can only be returned
    > if libcurl bugs. Please report it to us! ) ) [selectTimeout:protected]
    > => 1 [eventDispatcher:protected] => Symfony\Component\EventDispatcher\EventDispatcher Object (
    > [listeners:Symfony\Component\EventDispatcher\EventDispatcher:private]
    > => Array ( ) [sorted:Symfony\Component\EventDispatcher\EventDispatcher:private] =>
    > Array ( ) ) ) ) [groups:protected] => Array ( ) [queued:protected] =>
    > Array ( ) [maxHandles:protected] => 3 [selectTimeout:protected] => 1
    > [eventDispatcher:protected] =>
    > Symfony\Component\EventDispatcher\EventDispatcher Object (
    > [listeners:Symfony\Component\EventDispatcher\EventDispatcher:private]
    > => Array ( ) [sorted:Symfony\Component\EventDispatcher\EventDispatcher:private] =>
    > Array ( ) ) ) [uriTemplate:Guzzle\Http\Client:private] =>
    > Guzzle\Parser\UriTemplate\UriTemplate Object (
    > [template:Guzzle\Parser\UriTemplate\UriTemplate:private] =>
    > [variables:Guzzle\Parser\UriTemplate\UriTemplate:private] =>
    > [regex:Guzzle\Parser\UriTemplate\UriTemplate:private] =>
    > /\([^\]+)\/ ) [requestFactory:protected] =>
    > Guzzle\Http\Message\RequestFactory Object ( [methods:protected] =>
    > Array ( [getInstance] => 0 [__construct] => 1 [fromMessage] => 2
    > [fromParts] => 3 [create] => 4 [cloneRequestWithMethod] => 5
    > [applyOptions] => 6 [visit_headers] => 7 [visit_body] => 8
    > [visit_allow_redirects] => 9 [visit_auth] => 10 [visit_query] => 11
    > [visit_cookies] => 12 [visit_events] => 13 [visit_plugins] => 14
    > [visit_exceptions] => 15 [visit_save_to] => 16 [visit_params] => 17
    > [visit_timeout] => 18 [visit_connect_timeout] => 19 [visit_debug] =>
    > 20 [visit_verify] => 21 [visit_proxy] => 22 [visit_cert] => 23
    > [visit_ssl_key] => 24 ) [requestClass:protected] =>
    > Guzzle\Http\Message\Request [entityEnclosingRequestClass:protected] =>
    > Guzzle\Http\Message\EntityEnclosingRequest )
    > [eventDispatcher:protected] =>
    > Symfony\Component\EventDispatcher\EventDispatcher Object (
    > [listeners:Symfony\Component\EventDispatcher\EventDispatcher:private]
    > => Array ( [request.sent] => Array ( [100] => Array ( [0] => Array ( [0] => Guzzle\Http\RedirectPlugin Object (
    > [defaultMaxRedirects:protected] => 5 ) [1] => onRequestSent ) ) )
    > [request.clone] => Array ( [0] => Array ( [0] => Array ( [0] =>
    > Guzzle\Http\RedirectPlugin Object ( [defaultMaxRedirects:protected] =>
    > 5 ) [1] => cleanupRequest ) ) ) [request.before_send] => Array ( [0]
    > => Array ( [0] => Array ( [0] => Guzzle\Http\RedirectPlugin Object ( [defaultMaxRedirects:protected] => 5 ) [1] => cleanupRequest ) ) ) )
    > [sorted:Symfony\Component\EventDispatcher\EventDispatcher:private] =>
    > Array ( ) ) ) [httpRequest:protected] =>
    > Symfony\Component\HttpFoundation\Request Object ( [attributes] =>
    > Symfony\Component\HttpFoundation\ParameterBag Object (
    > [parameters:protected] => Array ( ) ) [request] =>
    > Symfony\Component\HttpFoundation\ParameterBag Object (
    > [parameters:protected] => Array ( ) ) [query] =>
    > Symfony\Component\HttpFoundation\ParameterBag Object (
    > [parameters:protected] => Array ( ) ) [server] =>
    > Symfony\Component\HttpFoundation\ServerBag Object (
    > [parameters:protected] => Array ( [DOCUMENT_ROOT] =>
    > C:\xampp\htdocs\sangam\public [REMOTE_ADDR] => 127.0.0.1 [REMOTE_PORT]
    > => 64532 [SERVER_SOFTWARE] => PHP 5.5.9 Development Server [SERVER_PROTOCOL] => HTTP/1.1 [SERVER_NAME] => localhost [SERVER_PORT]
    > => 8000 [REQUEST_URI] => /booking/pay-with-paypal [REQUEST_METHOD] => GET [SCRIPT_NAME] => /index.php [SCRIPT_FILENAME] =>
    > C:\xampp\htdocs\sangam\public\index.php [PATH_INFO] =>
    > /booking/pay-with-paypal [PHP_SELF] =>
    > /index.php/booking/pay-with-paypal [HTTP_HOST] => localhost:8000
    > [HTTP_CONNECTION] => keep-alive [HTTP_CACHE_CONTROL] => max-age=0
    > [HTTP_ACCEPT] =>
    > text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    > [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.1; WOW64)
    > AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137
    > Safari/537.36 [HTTP_REFERER] => http://localhost:8000/booking/
    > [HTTP_ACCEPT_ENCODING] => gzip,deflate,sdch [HTTP_ACCEPT_LANGUAGE] =>
    > en-US,en;q=0.8,hi;q=0.6 [HTTP_COOKIE] =>
    > laravel_session=eyJpdiI6Im1NcEJwMkduMTRRdGRKVXZaR1IrOUxlSmxnVmhFZjE3Umc5MWxwRUpIVDg9IiwidmFsdWUiOiJjekp6Tjk2ZU1pZUpvTzR1MjV6eldLTGJuaXhiWW1tYzV1Z1NveFJVK25oNlRyMjgyNmNEdzZmeUNqS3lwZTAwcmVERk1rdHFyUE1nQnc1MVRkb2F6dz09IiwibWFjIjoiNGM4N2UyOTVhOThkMjRhMTAyZTI2ZDhlNTY5M2MyMjk4OGFhYzM5MGE4ZDY1ODE4MTcyYzlkNzNkMjIzZTY0ZSJ9
    > [REQUEST_TIME_FLOAT] => 1400582955.8832 [REQUEST_TIME] => 1400582955 )
    > ) [files] => Symfony\Component\HttpFoundation\FileBag Object (
    > [parameters:protected] => Array ( ) ) [cookies] =>
    > Symfony\Component\HttpFoundation\ParameterBag Object (
    > [parameters:protected] => Array ( [laravel_session] =>
    > eyJpdiI6Im1NcEJwMkduMTRRdGRKVXZaR1IrOUxlSmxnVmhFZjE3Umc5MWxwRUpIVDg9IiwidmFsdWUiOiJjekp6Tjk2ZU1pZUpvTzR1MjV6eldLTGJuaXhiWW1tYzV1Z1NveFJVK25oNlRyMjgyNmNEdzZmeUNqS3lwZTAwcmVERk1rdHFyUE1nQnc1MVRkb2F6dz09IiwibWFjIjoiNGM4N2UyOTVhOThkMjRhMTAyZTI2ZDhlNTY5M2MyMjk4OGFhYzM5MGE4ZDY1ODE4MTcyYzlkNzNkMjIzZTY0ZSJ9
    > ) ) [headers] => Symfony\Component\HttpFoundation\HeaderBag Object (
    > [headers:protected] => Array ( [host] => Array ( [0] => localhost:8000
    > ) [connection] => Array ( [0] => keep-alive ) [cache-control] => Array
    > ( [0] => max-age=0 ) [accept] => Array ( [0] =>
    > text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    > ) [user-agent] => Array ( [0] => Mozilla/5.0 (Windows NT 6.1; WOW64)
    > AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.137
    > Safari/537.36 ) [referer] => Array ( [0] =>
    > http://localhost:8000/booking/ ) [accept-encoding] => Array ( [0] =>
    > gzip,deflate,sdch ) [accept-language] => Array ( [0] =>
    > en-US,en;q=0.8,hi;q=0.6 ) [cookie] => Array ( [0] =>
    > laravel_session=eyJpdiI6Im1NcEJwMkduMTRRdGRKVXZaR1IrOUxlSmxnVmhFZjE3Umc5MWxwRUpIVDg9IiwidmFsdWUiOiJjekp6Tjk2ZU1pZUpvTzR1MjV6eldLTGJuaXhiWW1tYzV1Z1NveFJVK25oNlRyMjgyNmNEdzZmeUNqS3lwZTAwcmVERk1rdHFyUE1nQnc1MVRkb2F6dz09IiwibWFjIjoiNGM4N2UyOTVhOThkMjRhMTAyZTI2ZDhlNTY5M2MyMjk4OGFhYzM5MGE4ZDY1ODE4MTcyYzlkNzNkMjIzZTY0ZSJ9
    > ) ) [cacheControl:protected] => Array ( [max-age] => 0 ) )
    > [content:protected] => [languages:protected] => [charsets:protected]
    > => [encodings:protected] => [acceptableContentTypes:protected] => [pathInfo:protected] => [requestUri:protected] => [baseUrl:protected]
    > => [basePath:protected] => [method:protected] => [format:protected] => [session:protected] => [locale:protected] => [defaultLocale:protected]
    > => en ) [response:protected] => Omnipay\PayPal\Message\ExpressAuthorizeResponse Object *RECURSION* )
    > [data:protected] => Array ( [TOKEN] => EC-4SW489106W090020K
    > [TIMESTAMP] => 2014-05-20T10:49:17Z [CORRELATIONID] => 9ecd1fa3cfd95
    > [ACK] => Success [VERSION] => 85.0 [BUILD] => 11024577 ) )

更新#2 刚才我在上面谈到的错误消息的底部收到了以下附加错误消息。我希望这将有助于更好地理解错误。

MayflyNG::MayflyException: IOException: no response from 10.72.108.213:11068 Backtrace: MayflyNG::Client::rpc(MayflyNG::RequestMsg&, MayflyNG::ResponseMsg&, bool, CalTransaction&) MayflyNG::Client::internal_get( MayflyNG::RequestMsg&, MayflyNG::ResponseMsg&, Buffer*, MayflyNG::Context*, bool, CalTransaction&) MayflyNG::Client::handle_request(MayflyNG::Client::RequestMode::RequestType, MayflyNG::RequestMsg&, MayflyNG:: ResponseMsg&, Buffer*, MayflyNG::Context*, CalTransaction&) MayflyNG::Client::get(Buffer const&, Buffer&, MayflyNG::Context*, int) MayflyNG::Client::get(String const&, Buffer&, MayflyNG:: Context*, int) Merchant::Checkout::CheckoutSessionPBMayfly::load_session_from_mayfly(unsigned long long, boost::shared_ptr) Merchant::Checkout::CheckoutSessionPBMayfly::do_load(Merchant::Checkout::CheckoutSessionToken const&, ForUpdate, boost:: shared_ptr) Merchant::Checkout::UnifiedCheckoutSessionPB::load(Merchant::Checkout::CheckoutSessionToken const&, ForUpdate) Merchant::Checkout::Che ckoutSessionBLIImpl::get_session_data(Merchant::Checkout::CheckoutSessionToken const&, bool) Merchant::Checkout::CheckoutSessionBLIImpl::get_session_data(String const&, bool) Merchant::PimpWalletBLIImpl::get_wallet(String const&, boost::shared_ptr&, String) Merchant::Payment::ExpressCheckoutALIImpl::get_wallet(String const&, boost::shared_ptr&, String) Rapids::Flows::OneX::StateOneXEC_Start::execute(Rapids::CGIVars const&) Rapids::DecoratedState::execute(Rapids ::CGIVars const&) Riprap::RiprapRapidsGenericFlow::handle_execute(Riprap::WebAppContextOrnate const&, Rapids::TransitionRegistry const&, Rapids::State*, String const&, String const&, unsigned long long) Riprap::RiprapRapidsGenericFlow::process_states(Riprap ::WebAppContextOrnate const&, Riprap::RiprapRapidsGenericFlow::ProcessStates, Riprap::DispatchInterceptorRegistry const&, Rapids::TransitionEdge const*) Riprap::RiprapRapidsGenericFlow::flow_call(Riprap::WebAppContextOrnate const&, Riprap::WebAppReturn const&, String const&, Ri prap::DispatchInterceptorRegistry const&) Riprap::call_rapids(Riprap::WebAppContext const&, Riprap::RapidsFlowFactory const&, Riprap::DispatchAction const&, Riprap::WebAppReturn const&, String const&, Riprap::DispatchInterceptorRegistry const&) Riprap::dispatch_loop(Riprap ::EPRegistry const&, Riprap::WebAppContext const&, Riprap::DispatchAction&, Riprap::WebAppReturn&, String const&, Riprap::DispatchInterceptorRegistry const&) Riprap::dispatch_wrapper(OutputStream&, Riprap::EPRegistry const&, Riprap::WebAppContext const&, Riprap ::WebAppReturn const&, String const&, bool const&, Riprap::DispatchInterceptorRegistry const&) Riprap::entry_point(HTTPInterface&, Riprap::CGIVars&, OutputStream&, String const&, String const&) main

【问题讨论】:

所以您是说应用程序现在重定向到带有错误消息的 Paypal 页面,而不是付款的“登录”页面?运行购买功能后 $response 实际包含什么? @har2vey,我已经更新了我的问题以包含回复。 [ACK] 的内容是“成功”,这意味着通常它会重定向到 Paypal,在那里用户将看到登录屏幕或信用卡支付选项,那么你的 $ response->redirect() 做什么? 每次我进入贝宝页面时都会显示错误消息“抱歉——您的最后一个操作无法完成。 尝试清除cookie或使用隐私浏览模式,PayPal开发环境似乎时不时卡住。同样正如下面提到的 Ralph,您可以尝试使用 localtunnel 在真实域上托管您的网站,我不确定 PayPal 将如何处理非标准端口 8000。 【参考方案1】:

尝试将返回/取消 URLS 从 localhost 更改为实际服务器。因为 Paypal 将无法向这些人返回任何东西。

【讨论】:

我在 apache 上托管了我的解决方案。现在,我的基本域为 localhost,paypal 无需任何评论即可工作。 :) 早些时候,我使用 php 的内置服务器为我生成 localhost:8000。谢谢@Ralph!

以上是关于支付宝快速结账的 Omnipay 错误,您的最后一个操作无法完成的主要内容,如果未能解决你的问题,请参考以下文章

通过 OmniPay PHP 进行 PayPal 汇款

支付宝在支付过程中提示:调试错误,怎么办?

企业支付宝开通电脑网站支付功能提示:系统综合评估签约条件不满足,谢谢您的支持!

将贝宝移动快速结账与 iOS 集成

支付宝钱包怎么进行扫码付款

第二次作业:支付宝手机软件分析