【问题标题】:Omnipay with PayPal express checkout使用 PayPal 快速结账的 Omnipay
【发布时间】:2017-05-26 02:09:14
【问题描述】:

我想将 PayPal Express Checkout 与 Omnipay 集成,但文档完全未完成。如何运行“setExpressCheckout”、“doExpressCheckout”和“getExpressCheckout”等方法?另外,如何将所有 PayPal 呼叫重定向到 IPN 侦听器? Omnipay 提供所有这些方法还是仅提供其中一部分?有没有人有机会将这个库与 Express Checkout 一起使用?

问候!

【问题讨论】:

  • 我完全同意 - Omnipay 看起来很有用,但我不知道从哪里开始使用 PayPal Express。

标签: php paypal omnipay


【解决方案1】:

这不是一个答案,但首先让我建议您从 PayPal Express 切换到 PayPal REST,因为后者有更好的文档记录和更新的界面。

实际答案:Omnipay 不是这样工作的。它不直接公开底层网关方法,并且像“setExpressCheckout”、“doExpressCheckout”和“getExpressCheckout”这样的方法是 PayPal 方法而不是 Omnipay 方法。取而代之的是与网关无关的方法,例如purchase() 和refund() 等。

因此,对于 omnipay-paypal REST 网关文档的示例(作为类标头中的 docblocks),您可以执行以下操作:

// Create a gateway for the PayPal RestGateway
// (routes to GatewayFactory::create)
$gateway = Omnipay::create('PayPal_Rest');

// Initialise the gateway
$gateway->initialize(array(
    'clientId' => 'MyPayPalClientId',
    'secret'   => 'MyPayPalSecret',
    'testMode' => true, // Or false when you are ready for live transactions
));

这只是初始化网关。除了您使用 PayPal_Express 作为网关名称以及 initialize() 的参数不同之外,该过程与 PayPal express 相同。

然后进行购买,例如如果允许,请提供卡号:

// Create a credit card object
// DO NOT USE THESE CARD VALUES -- substitute your own
// see the documentation in the class header.
$card = new CreditCard(array(
            'firstName' => 'Example',
            'lastName' => 'User',
            'number' => '4111111111111111',
            'expiryMonth'           => '01',
            'expiryYear'            => '2020',
            'cvv'                   => '123',
            'billingAddress1'       => '1 Scrubby Creek Road',
            'billingCountry'        => 'AU',
            'billingCity'           => 'Scrubby Creek',
            'billingPostcode'       => '4999',
            'billingState'          => 'QLD',
));

// Do a purchase transaction on the gateway
try {
    $transaction = $gateway->purchase(array(
        'amount'        => '10.00',
        'currency'      => 'AUD',
        'description'   => 'This is a test purchase transaction.',
        'card'          => $card,
    ));
    $response = $transaction->send();
    $data = $response->getData();
    echo "Gateway purchase response data == " . print_r($data, true) . "\n";

    if ($response->isSuccessful()) {
        echo "Purchase transaction was successful!\n";
    }
} catch (\Exception $e) {
    echo "Exception caught while attempting authorize.\n";
    echo "Exception type == " . get_class($e) . "\n";
    echo "Message == " . $e->getMessage() . "\n";
}

进行重定向付款(例如 PayPal 帐户付款)有些不同,但它记录在类 docblocks 中。见 src/Messages/RestPurchaseRequest.php

【讨论】:

  • 感谢您的发帖。 IPN 监听器怎么样? REST 不再需要它了吗?此外,您上面的示例看起来像信用卡/借记卡付款,但我需要为想要通过信用卡/借记卡购物车或仅通过 PayPal 帐户付款的用户创建快速结帐。我认为这与您所指的有所不同。
  • 可以创建 IPN 侦听器,但不能像某些系统那样基于每个事务进行设置。您应该仍然可以使用上面的代码进行非卡支付,只需省略 card 参数。通读omnipay类标头中的文档,因为它提供了详细的示例,说明如何执行此操作、如何处理返回到您的应用程序,以及您需要调用 completePurchase() 以确认交易成功的位置.
猜你喜欢
  • 2018-04-15
  • 2015-09-26
  • 2014-04-15
  • 2013-05-17
  • 2015-12-29
  • 2011-12-03
  • 2013-05-06
  • 2014-10-07
  • 2012-03-08
相关资源
最近更新 更多