Home PHP Framework Laravel How to use Laravel to implement Alipay payment interface

How to use Laravel to implement Alipay payment interface

Nov 04, 2023 pm 04:13 PM
laravel interface Pay with Ali-Pay

How to use Laravel to implement Alipay payment interface

How to use Laravel to implement Alipay payment interface

With the development of e-commerce, the diversity of payment methods has become an important selection criterion. As China's largest third-party payment platform, Alipay plays an important role in the e-commerce field. When developing e-commerce websites, we often need to integrate the Alipay payment interface to provide users with convenient payment methods. This article will introduce how to use the Laravel framework to implement the Alipay payment interface and give specific code examples.

First, we need to install the laravel-omnipay extension package in the Laravel project. The extension provides support for multiple payment gateways, including Alipay. Use the following command to install the extension package:

composer require omnipay/omnipay

After the installation is completed, we need to configure Alipay related information in the project's config/services.php file. Specific examples are as follows:

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

In the above configuration, we need to set parameters such as app_id, private_key, public_key, return_url and notify_url. Among them, app_id is the ID of the Alipay application, private_key and public_key are the private key and public key of the application respectively. return_url is the callback address after the user's payment is successful, and notify_url is the Alipay asynchronous notification address.

Next, we need to configure the values ​​of the above parameters in the .env file. An example is as follows:

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

In the above configuration, we need to replace it with the real Alipay application ID, private key, public key and callback URL.

Next, we can use the Alipay payment interface in the controller in the Laravel project. An example is as follows:

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

In the above code, we first create an Alipay gateway instance and set the relevant parameters. Then, we create an order array and use the purchase method to send the payment request. If the payment request is successful and the jump address is returned, we can use the redirect method to redirect the user to the Alipay payment page. If the payment request fails, you can use the getMessage method to obtain the error message. In the asynchronous notification and synchronous callback methods, we also create an Alipay gateway instance and use the completePurchase method to verify the payment result.

Finally, we need to define the payment route in the routing. An example is as follows:

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

Through the above steps, we can use the Laravel framework to easily integrate the Alipay payment interface. Hope this article helps you!

The above is the detailed content of How to use Laravel to implement Alipay payment interface. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1509
276
What is Configuration Caching in Laravel? What is Configuration Caching in Laravel? Jul 27, 2025 am 03:54 AM

Laravel's configuration cache improves performance by merging all configuration files into a single cache file. Enabling configuration cache in a production environment can reduce I/O operations and file parsing on each request, thereby speeding up configuration loading; 1. It should be enabled when the application is deployed, the configuration is stable and no frequent changes are required; 2. After enabling, modify the configuration, you need to re-run phpartisanconfig:cache to take effect; 3. Avoid using dynamic logic or closures that depend on runtime conditions in the configuration file; 4. When troubleshooting problems, you should first clear the cache, check the .env variables and re-cache.

How to mock objects in Laravel tests? How to mock objects in Laravel tests? Jul 27, 2025 am 03:13 AM

UseMockeryforcustomdependenciesbysettingexpectationswithshouldReceive().2.UseLaravel’sfake()methodforfacadeslikeMail,Queue,andHttptopreventrealinteractions.3.Replacecontainer-boundserviceswith$this->mock()forcleanersyntax.4.UseHttp::fake()withURLp

How to implement a referral system in Laravel? How to implement a referral system in Laravel? Aug 02, 2025 am 06:55 AM

Create referrals table to record recommendation relationships, including referrals, referrals, recommendation codes and usage time; 2. Define belongsToMany and hasMany relationships in the User model to manage recommendation data; 3. Generate a unique recommendation code when registering (can be implemented through model events); 4. Capture the recommendation code by querying parameters during registration, establish a recommendation relationship after verification and prevent self-recommendation; 5. Trigger the reward mechanism when recommended users complete the specified behavior (subscription order); 6. Generate shareable recommendation links, and use Laravel signature URLs to enhance security; 7. Display recommendation statistics on the dashboard, such as the total number of recommendations and converted numbers; it is necessary to ensure database constraints, sessions or cookies are persisted,

How to run a Laravel project? How to run a Laravel project? Jul 28, 2025 am 04:28 AM

CheckPHP>=8.1,Composer,andwebserver;2.Cloneorcreateprojectandruncomposerinstall;3.Copy.env.exampleto.envandrunphpartisankey:generate;4.Setdatabasecredentialsin.envandrunphpartisanmigrate--seed;5.Startserverwithphpartisanserve;6.Optionallyrunnpmins

How to seed a database in Laravel? How to seed a database in Laravel? Jul 28, 2025 am 04:23 AM

Create a seeder file: Use phpartisanmake:seederUserSeeder to generate the seeder class, and insert data through the model factory or database query in the run method; 2. Call other seeder in DatabaseSeeder: register UserSeeder, PostSeeder, etc. in order through $this->call() to ensure the dependency is correct; 3. Run seeder: execute phpartisandb:seed to run all registered seeders, or use phpartisanmigrate:fresh--seed to reset and refill the data; 4

How to build a REST API with Laravel? How to build a REST API with Laravel? Jul 30, 2025 am 03:41 AM

Create a new Laravel project and start the service; 2. Generate the model, migration and controller and run the migration; 3. Define the RESTful route in routes/api.php; 4. Implement the addition, deletion, modification and query method in PostController and return the JSON response; 5. Use Postman or curl to test the API function; 6. Optionally add API authentication through Sanctum; finally obtain a clear structure, complete and extensible LaravelRESTAPI, suitable for practical applications.

How to implement feature flags in a Laravel app? How to implement feature flags in a Laravel app? Jul 30, 2025 am 01:45 AM

Chooseafeatureflagstrategysuchasconfig-based,database-driven,orthird-partytoolslikeFlagsmith.2.Setupadatabase-drivensystembycreatingamigrationforafeature_flagstablewithname,enabled,andrulesfields,thenrunthemigration.3.CreateaFeatureFlagmodelwithfilla

What are Repository Contracts in Laravel? What are Repository Contracts in Laravel? Aug 03, 2025 am 12:10 AM

The Repository pattern is a design pattern used to decouple business logic from data access logic. 1. It defines data access methods through interfaces (Contract); 2. The specific operations are implemented by the Repository class; 3. The controller uses the interface through dependency injection, and does not directly contact the data source; 4. Advantages include neat code, strong testability, easy maintenance and team collaboration; 5. Applicable to medium and large projects, small projects can use the model directly.

See all articles