ホームページ  >  記事  >  PHPフレームワーク  >  Laravelを使用してAlipay支払いインターフェースを実装する方法

Laravelを使用してAlipay支払いインターフェースを実装する方法

PHPz
PHPzオリジナル
2023-11-04 16:13:471251ブラウズ

Laravelを使用してAlipay支払いインターフェースを実装する方法

Laravel を使用して Alipay 支払いインターフェイスを実装する方法

電子商取引の発展に伴い、支払い方法の多様性が重要な選択基準になりました。中国最大のサードパーティ決済プラットフォームとして、Alipay は電子商取引分野で重要な役割を果たしています。電子商取引 Web サイトを開発する場合、多くの場合、ユーザーに便利な支払い方法を提供するために、Alipay 支払いインターフェイスを統合する必要があります。この記事では、Laravel フレームワークを使用して Alipay 決済インターフェイスを実装する方法と、具体的なコード例を紹介します。

まず、laravel-omnipay 拡張パッケージを Laravel プロジェクトにインストールする必要があります。この拡張機能は、Alipay を含む複数の支払いゲートウェイのサポートを提供します。次のコマンドを使用して、拡張機能パッケージをインストールします。

composer require omnipay/omnipay

インストールが完了したら、プロジェクトの config/services.php ファイルで Alipay 関連の情報を構成する必要があります。具体的な例は次のとおりです。

'alipay' => [
    'driver' => 'Alipay_AopPage',
    'options' => [
        'app_id' => env('ALIPAY_APP_ID'),
        'private_key' => env('ALIPAY_PRIVATE_KEY'),
        'public_key' => env('ALIPAY_PUBLIC_KEY'),
        'return_url' => env('ALIPAY_RETURN_URL'),
        'notify_url' => env('ALIPAY_NOTIFY_URL'),
    ],
],

上記の構成では、app_id、private_key、public_key、return_url、notify_url などのパラメーターを設定する必要があります。このうち、app_id は Alipay アプリケーションの ID、private_key と public_key はそれぞれアプリケーションの秘密鍵と公開鍵です。 return_url はユーザーの支払いが成功した後のコールバック アドレス、notify_url は Alipay の非同期通知アドレスです。

次に、.env ファイルで上記のパラメータの値を設定する必要があります。例は次のとおりです。

ALIPAY_APP_ID=xxxxxxxxxxxxxx
ALIPAY_PRIVATE_KEY=xxxxxxxxxxxxxx
ALIPAY_PUBLIC_KEY=xxxxxxxxxxxxxx
ALIPAY_RETURN_URL=https://example.com/alipay/return
ALIPAY_NOTIFY_URL=https://example.com/alipay/notify

上記の構成では、実際の Alipay アプリケーション ID、秘密キー、公開キー、およびコールバック URL に置き換える必要があります。

次に、Laravel プロジェクトのコントローラーで Alipay 支払いインターフェイスを使用できます。例は次のとおりです。

use OmnipayOmnipay;

class PaymentController extends Controller
{
    public function pay(Request $request)
    {
        $gateway = Omnipay::create('Alipay');

        $gateway->setAppId(config('services.alipay.options.app_id'));
        $gateway->setPrivateKey(config('services.alipay.options.private_key'));
        $gateway->setPublicKey(config('services.alipay.options.public_key'));
        $gateway->setReturnUrl(config('services.alipay.options.return_url'));
        $gateway->setNotifyUrl(config('services.alipay.options.notify_url'));

        $order = [
            'out_trade_no' => '2018123456789',
            'total_amount' => '0.01',
            'subject' => 'Test Order',
            'body' => 'This is a test order',
        ];

        $response = $gateway->purchase($order)->send();

        if ($response->isRedirect()) {
            $response->redirect();
        } else {
            dd($response->getMessage());
        }
    }

    public function notify(Request $request)
    {
        $gateway = Omnipay::create('Alipay');

        $gateway->setAppId(config('services.alipay.options.app_id'));
        $gateway->setPrivateKey(config('services.alipay.options.private_key'));
        $gateway->setPublicKey(config('services.alipay.options.public_key'));
        $gateway->setReturnUrl(config('services.alipay.options.return_url'));
        $gateway->setNotifyUrl(config('services.alipay.options.notify_url'));
        
        $response = $gateway->completePurchase()->send();

        if ($response->isPaid()) {
            // 更新订单状态
        }

        return $response->getAcknowledgeResponse();
    }

    public function return(Request $request)
    {
        $gateway = Omnipay::create('Alipay');

        $gateway->setAppId(config('services.alipay.options.app_id'));
        $gateway->setPrivateKey(config('services.alipay.options.private_key'));
        $gateway->setPublicKey(config('services.alipay.options.public_key'));
        $gateway->setReturnUrl(config('services.alipay.options.return_url'));
        $gateway->setNotifyUrl(config('services.alipay.options.notify_url'));
        
        $response = $gateway->completePurchase()->send();

        if ($response->isPaid()) {
            // 更新订单状态
            return redirect()->route('orders.show', $order);
        } else {
            return '支付失败';
        }
    }
}

上記のコードでは、最初に Alipay ゲートウェイ インスタンスを作成し、関連するパラメーターを設定します。次に、注文配列を作成し、購入メソッドを使用して支払いリクエストを送信します。支払いリクエストが成功し、ジャンプ アドレスが返された場合は、リダイレクト メソッドを使用してユーザーを Alipay 支払いページにリダイレクトできます。支払いリクエストが失敗した場合は、getMessage メソッドを使用してエラー メッセージを取得できます。非同期通知メソッドと同期コールバック メソッドでは、Alipay ゲートウェイ インスタンスも作成し、completePurchase メソッドを使用して支払い結果を確認します。

最後に、ルーティングで支払いルートを定義する必要があります。例は次のとおりです:

Route::get('/payment/pay', 'PaymentController@pay');
Route::post('/payment/notify', 'PaymentController@notify');
Route::get('/payment/return', 'PaymentController@return');

上記の手順を通じて、Laravel フレームワークを使用して、Alipay 支払いインターフェイスを簡単に統合できます。この記事がお役に立てば幸いです!

以上がLaravelを使用してAlipay支払いインターフェースを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。