1

Laravel-4 アプリから PayPal Express の支払いを受け入れる必要があるため、Omnipay が最適なソリューションかどうかを判断しようとしています。問題は、GetExpressCheckoutDetails が実装されていないように見えるため、購入者の連絡先の詳細にアクセスできないことです。この問題に関する次の議論を見てきました。

オムニペイペイパルエクスプレスが住所を返さない.

ci-merchant ライブラリ codeigniter でより多くの応答データを受け取る

しかし、どちらも決定的な解決策を示していません。Omnipay を使用する場合、PayPal の Classic API もインストールする必要がありますか (その場合、わざわざ Omnipay を使用する必要はありません)、または Omnipay に GetExpressCheckoutDetails を実装できますか?

これについて何か助けてくれてありがとう。

4

3 に答える 3

0

けいをもとに。回答 アプリケーションに次の追加を提案します。

  1. 新しいパスを作成app/omnipay/paypal/Message/
  2. 新しいファイルを作成app/omnipay/paypal/ExtendedExpressGateway.php

    namespace App\Omnipay\PayPal;
    
    use Omnipay\PayPal\ExpressGateway;
    
    /**
     * PayPal Express extended Class
     */
    class ExtendedExpressGateway extends ExpressGateway
    {
        public function getName()
        {
            return 'PayPal Express extended';
        }
    
        public function fetchExpressCheckoutDetail(array $parameters = array())
        {
            return $this->createRequest('\\App\\Omnipay\\PayPal\\Message\\FetchExpressCheckoutRequest', $parameters);
        }
    }
    
  3. 新しいファイルを作成app/omnipay/paypal/Message/FetchExpressCheckoutRequest.php

    namespace App\Omnipay\PayPal\Message;
    
    use Omnipay\PayPal\Message\AbstractRequest;
    
    class FetchExpressCheckoutRequest extends AbstractRequest
    {
        public function getData()
        {
            $data = $this->getBaseData('GetExpressCheckoutDetails');
    
            $this->validate('transactionReference');
    
            $data['TOKEN'] = $this->getTransactionReference();
            $url = $this->getEndpoint() . "?USER={$data['USER']}&PWD={$data['PWD']}&SIGNATURE={$data['SIGNATURE']}&METHOD=GetExpressCheckoutDetails&VERSION={$data['VERSION']}&TOKEN={$data['TOKEN']}";
            parse_str(file_get_contents($url), $output);
            $data = array_merge($data, $output);
    
            return $data;
        }
    }
    
  4. psr-4 autoloadcomposer.jsonに追加

    "autoload": {
        "classmap": [
            ...
        ],
        "psr-4": {
            "App\\Omnipay\\PayPal\\": "app/omnipay/paypal/"
        }
    },
    
  5. 走る:

    php artisan dump-autoload
    
  6. これで、次のようにapp/config/packages/ignited/laravel-omnipay/config.php記述できます。

    'driver' => '\\App\\Omnipay\\PayPal\\ExtendedExpressGateway',
    

これでアップデートすれば問題なし

于 2014-09-22T13:29:56.073 に答える