9

私のサイトで Omnipay PayPal_Express チェックアウト スクリプトを使用しましたが、注文の支払いを行うと、注文が PayPal サンドボックス アカウントに表示されないことを除いて、すべて正常に機能します。

PayPal_Pro に同じスクリプトを使用すると表示されます。

私のコードは次のとおりです。

use Omnipay\Omnipay;

// PayPal Express:

if(isset($_POST['paypalexpress'])) {

$gateway = GatewayFactory::create('PayPal_Express');
$gateway->setUsername('{myusername}');
$gateway->setPassword('{mypassword}');
$gateway->setSignature('{mysignauture}');
$gateway->setTestMode(true);

$response = $gateway->purchase(
array(
    'cancelUrl'=>'http://www.mysite.com/?cancelled',
    'returnUrl'=>'http://www.mysite.com/?success',
    'amount' =>  "12.99",
    'currency' => 'GBP',
    'Description' => 'Test Purchase for 12.99'
    )

 )->send();

$response->redirect();
}

サンドボックスに 2 つのテスト アカウントを作成しました。1 つは上記の API 用で、もう 1 つは支払いに使用します。テストカードの詳細とログインで支払いを試みましたが、注文の詳細がアカウントに表示されません。

誰でも助けることができますか?

4

1 に答える 1

12

Paypal が returnUrl に戻ったときに、completePurchase() 部分が欠落しているようです。私のコードは、変数 $order に注文の詳細があることを前提としていますが、次のようになります。

if(isset($_GET['success'])) {
    $response = $gateway->completePurchase(array(
        'transactionId' => $order->transaction,
        'transactionReference' => $order->reference,
        'amount' => $order->total,
        'currency' => $order->currency,
    ))->send();

    if ( ! $response->isSuccessful())
    {
        throw new Exception($response->getMessage());
    }
}

返品時に注文の詳細を取得する際にサポートが必要な場合はお知らせください。リダイレクトする前にセッションに保存するか、データベースに保存できます。まだ行っていない場合は、サンプル コードをご覧ください: https://github.com/omnipay/example/blob/master/index.php

于 2014-03-05T10:38:39.990 に答える