Omnipay - Laravel - 完成 Paypal Pyment

Posted

技术标签:

【中文标题】Omnipay - Laravel - 完成 Paypal Pyment【英文标题】:Omnipay - Laravel - Finalize Paypal Pyment 【发布时间】:2014-12-22 00:44:31 【问题描述】:

我有以下成功支付方式:

    public function getSuccessPayment() 
    $gatewayFactory = new \Omnipay\Common\GatewayFactory;
    $gateway = $gatewayFactory->create('PayPal_Express');
    #Test API Sandbox
    $gateway->setUsername('xxxxxxx.de');
    $gateway->setPassword('xxxxxxxxx');
    $gateway->setSignature('xxxxx.xxxxx.xxxxx.xxxxxxx');
    $gateway->setTestMode(true);

    # FINALIZZZE PAYPAL PAYMENT
    $response = $gateway->completePurchase($this->getApiInfos())->send();
    $data = $response->getData();

    # IF SUCCESSFULLLLLLL
    if($data['ACK'] == 'Success'):
        $order = Order::where('paypalToken',$data['TOKEN'])->first();
        # Set Status
        $order->orderSuccess = 4;
        $order->orderPaid = 1;
        # Set PP ID
        $order->paypalTransactionId = $data['PAYMENTINFO_0_TRANSACTIONID'];
        $order->save();

        # Destroy Cart
        Cart::destroy();

        # Send Confirm Mail
        $this->sendConfirmOrderMail($order->id, Auth::user()->id);

        return View::make('pages.checkout.success', compact(['order','data']));
    endif;
  

$this->getApiInfos() 有凭证和信息,要到 PP,方法如下:

    public function getApiInfos($order = NULL) 
  return array(
    'amount'=> Cart::total(),
    'cancelUrl' => \URL::route('paypal_cancel_order'),
    'returnUrl' => \URL::route('paypal_return'),
    'description' => 'Your Payment at xxxxxx - Order #',
    'currency' => 'EUR'
  );
  

看描述。在重定向到 Paypal 之后以及在我被重定向回我的页面之后,如何将 orderID 放入描述中? 我失去了我的会话和订单(我猜!),我该怎么做呢?

另外,您知道如何通过 Omnipay 向 PayPal 发送运费、税金和标题图片吗?

【问题讨论】:

我对 Omnipay 并不完全熟悉,但它应该在某个地方构建实际的 API 请求。在其中,您可以为 INVOICE、SHIPPINGAMT、TAXAMT 等设置参数。实际上,由于限制和不兼容,我看到很多人抱怨 Omnipay 与 PayPal。根据您对集成的深入程度,我建议您查看我的php class library for PayPal。它专为 PayPal 设计,功能齐全,使用非常简单。 如何将它集成到 Laravel 中? 我发给你的那个链接是一个 Packagist 包,所以你可以像通过 Composer 的任何其他包一样将它包含在你的 Laravel 项目中。只需将以下内容添加到您的要求行:“angelleye/paypal-php-library”:“2.0.*”。这是video install guide。 我实际上一直在从事这个PayPal Glass 项目,它使用我在 Laravel 中的库来复制 PayPal.com 界面。我有更多的事情要做,但你可以view its current state on GitHub 看看它是如何集成到 Laravel 中的。 【参考方案1】:

要获取您发送到 Paypal 的交易参考,您可以这样做

$response->getTransactionReference();

对于你问题的后半部分: PayPal Express 网关具有以下图片设置功能:

$gateway->setHeaderImageUrl()
$gateway->setLogoImageUrl()

所有的请求都有以下功能

$request->setTaxAmount()
$request->setShippingAmount()
$request->setHandlingAmount()
$request->setShippingDiscount()
$request->setInsuranceAmount()

【讨论】:

太棒了。正是我需要的! setLogoImageUrl() 找不到,最新版本怎么办?

以上是关于Omnipay - Laravel - 完成 Paypal Pyment的主要内容,如果未能解决你的问题,请参考以下文章

使用 Omnipay 将 PayPal REST API 集成到 Laravel - 需要 card 参数

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

Omnipay - 使用 Paypal Express 结帐 Laravel

使用 laravel 5.1 安装 Omnipay/payu

使用 Laravel Omnipay(mollie 网关)进行支付

Laravel 5.3 - Omnipay Paypal Express 不返回成功消息