Maison  >  Article  >  cadre php  >  Comment utiliser Laravel pour implémenter l'interface de paiement Alipay

Comment utiliser Laravel pour implémenter l'interface de paiement Alipay

PHPz
PHPzoriginal
2023-11-04 16:13:471253parcourir

Comment utiliser Laravel pour implémenter linterface de paiement Alipay

Comment utiliser Laravel pour implémenter l'interface de paiement Alipay

Avec le développement du e-commerce, la diversité des moyens de paiement est devenue un critère de sélection important. En tant que plus grande plateforme de paiement tiers de Chine, Alipay joue un rôle important dans le domaine du commerce électronique. Lors du développement de sites Web de commerce électronique, nous devons souvent intégrer l'interface de paiement Alipay pour offrir aux utilisateurs des méthodes de paiement pratiques. Cet article expliquera comment utiliser le framework Laravel pour implémenter l'interface de paiement Alipay et donnera des exemples de code spécifiques.

Tout d'abord, nous devons installer le package d'extension laravel-omnipay dans le projet Laravel. L'extension prend en charge plusieurs passerelles de paiement, dont Alipay. Utilisez la commande suivante pour installer le package d'extension :

composer require omnipay/omnipay

Une fois l'installation terminée, nous devons configurer les informations relatives à Alipay dans le fichier config/services.php du projet. Des exemples spécifiques sont les suivants :

'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'),
    ],
],

Dans la configuration ci-dessus, nous devons définir des paramètres tels que app_id, private_key, public_key, return_url et notify_url. Parmi eux, app_id est l'ID de l'application Alipay, private_key et public_key sont respectivement la clé privée et la clé publique de l'application. return_url est l'adresse de rappel une fois le paiement de l'utilisateur réussi, et notify_url est l'adresse de notification asynchrone Alipay.

Ensuite, nous devons configurer les valeurs des paramètres ci-dessus dans le fichier .env. Un exemple est le suivant :

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

Dans la configuration ci-dessus, nous devons le remplacer par le véritable identifiant de l'application Alipay, la clé privée, la clé publique et l'URL de rappel.

Ensuite, nous pouvons utiliser l'interface de paiement Alipay dans le contrôleur du projet Laravel. Un exemple est le suivant :

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 '支付失败';
        }
    }
}

Dans le code ci-dessus, nous créons d'abord une instance de passerelle Alipay et définissons les paramètres pertinents. Ensuite, nous créons un tableau de commandes et utilisons la méthode d'achat pour envoyer la demande de paiement. Si la demande de paiement réussit et que l'adresse de saut est renvoyée, nous pouvons utiliser la méthode de redirection pour rediriger l'utilisateur vers la page de paiement Alipay. Si la demande de paiement échoue, vous pouvez utiliser la méthode getMessage pour obtenir le message d'erreur. Dans les méthodes de notification asynchrone et de rappel synchrone, nous avons également créé une instance de passerelle Alipay et utilisé la méthode completePurchase pour vérifier le résultat du paiement.

Enfin, nous devons définir l'itinéraire de paiement dans l'itinéraire. Un exemple est le suivant :

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

Grâce aux étapes ci-dessus, nous pouvons facilement mettre en œuvre l'intégration de l'interface de paiement Alipay à l'aide du framework Laravel. J'espère que cet article vous aidera !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn