支付宝快速结账的 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 错误,您的最后一个操作无法完成的主要内容,如果未能解决你的问题,请参考以下文章