waltersilvacruz/laravel-meli

Mercado Livre Rest API 的 Laravel 封装

v1.1.8 2023-06-21 20:34 UTC

This package is auto-updated.

Last update: 2024-09-21 23:19:41 UTC


README

将您的 Laravel 应用程序与 MercadoLibre 的 API 集成。

基于 vcoud/mercadolibre(感谢您,先生!)。

用于 MercadoLibre API 的 PHP 客户端封装。

此包旨在与 Laravel 一起工作,因此它是用 Laravel 编写的。

安装

  1. 使用 composer 安装
$ composer require waltersilvacruz/laravel-meli
  1. 运行迁移命令以创建 meli_app_tokens
$ php artisan migrate --package=waltersilvacruz/laravel-meli

此包使用 Laravel 的 自动注册功能

配置

重要:在开始之前,请检查以下内容

  • 您必须有一个 MercadoLibre 账户
  • 您必须在 ML 的 DevSite 中创建一个应用
  • 应用必须启用 offline_access 范围(否则将不会生成 刷新令牌
  • 您必须具备 APP 代码和客户端密钥,以便将其设置到您的 Laravel 应用程序中。
  1. 将适当的值添加到您的 .env

    MELI_APP_ID=<YOUR-ML-APP-ID>
    MELI_CLIENT_SECRET=<YOUR-ML-CLIENT-SECRET>
    MELI_REDIRECT_ROUTE=<ROUTE-NAME>     # The user will be redirected to this route after connect/disconnect

    示例

    MELI_APP_ID=4181152627684157
    MELI_CLIENT_SECRET=kbJ1YVaWpqmFYhj1PsnKSOcVKEvWxp1a
    MELI_REDIRECT_ROUTE=home
  2. 发布配置和视图 [可选]

    配置文件

    可以通过运行以下命令将名为 meli.php 的配置文件发布到 config/

    php artisan vendor:publish --tag=meli-config

    发布视图

    可以通过使用以下方法发布视图文件

    php artisan vendor:publish --tag=meli-views

    blade 的模板将发布到 resources/views/vendor/meli 文件夹,因此您可以根据应用程序的外观和感觉自定义模板。

  3. 清除您的路由和配置缓存

    php artisan config:clear && php artisan route:clear
    

用法

首先,通过 OAuth 将您的 Laravel 应用程序连接到 MercadoLibre

您可以通过在浏览器中打开此链接连接到 ML: <your-app-site>/meli/connect/<state>。在这里,<state> 参数是必需的!

此封装使用 <state> 作为每个身份验证令牌的唯一标识符,允许您的网站连接到多个 ML 账户。

示例

https://my-awesome-site.com/meli/connect/store-demo-1

使用方法从 ML 获取数据

连接后,您可以使用以下方法之一对 ML 的 API 进行查询

MeliAppService::get(string $path, array $params = [], bool $assoc = false): stdClass
MeliAppService::post(string $path, array $body = []): stdClass
MeliAppService::put(string $path, array $body = [], array $params = []): stdClass
MeliAppService::delete(string $path, array $params = []): stdClass
MeliAppService::options(string $path, array $params = []): stdClass

示例代码

<?php

namespace App\Http\Controllers;

use App\Http\Controllers\Controller
use WebDEV\Meli\Services\MeliApiService;

class HomeController extends Controller
{
    public function index() {
        // it's important to inform the same state used on connection link 
        $service = new MeliApiService('store-demo-1');
        $data = $service->get('/users/me');
        dd($data);            
    }
}

每次调用都返回一个 stdClass 对象

$data->httpCode; // the http code returned by MercadoLibre's API. If !== 200, there is something wrong!
$data->response; // the complete response returned 

请参阅 ML API 文档了解所有可用端点和其响应数据。

多个连接

是的,我们可以!同时连接到多个 ML 账户是可能的。

让我们想象以下场景

  • 您的应用程序有多个用户。
  • 每个用户都可以连接到他们的 ML 账户。
  • 每个用户只能访问他自己的 ML 数据。

确保每个用户将有一个 唯一的 状态标识。

# User A connection link:
https://my-awesome-site.com/meli/connect/1281300c-a19c-42e7-9de8-6d0badccc9ad
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

# User B connection link:
https://my-awesome-site.com/meli/connect/115e1b1c-fa1b-4b6c-9781-aa2f4e5f2373
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

# User C connection link:
https://my-awesome-site.com/meli/connect/f237ff76-963b-4dbc-b1d3-978d1534bf63
                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

每个用户将通过 ML OAuth 进行登录,然后他们必须允许您的应用程序连接到他们的账户。对于每个状态,auth 和 refresh 令牌将存储在 meli_app_tokens 表中。当实例化服务时,state 列将作为获取正确令牌的键。

$service = new MeliApiService('1281300c-a19c-42e7-9de8-6d0badccc9ad');
// or
$service = new MeliApiService('115e1b1c-fa1b-4b6c-9781-aa2f4e5f2373');
// or
$service = new MeliApiService('f237ff76-963b-4dbc-b1d3-978d1534bf63');

// then you can perform queries
$order = $service->get('/orders/768570754');
dd($order->response);

命令行实用程序

此包包含一个实用程序命令,可以帮助您在 MercadoLibre 上创建测试用户。

php artian meli:create-test-user [state] [site]

您可以为 [site] 参数使用以下选项之一

MLA = Argentina
MLB = Brazil
MCO = Colombia
MCR = Costa Rica
MEC = Ecuador
MLC = Chile
MLM = Mexico
MLU = Uruguay
MLV = Venezuela
MPA = Panama
MPE = Peru
MPT = Portugal
MRD = Dominican Republic

示例

php artisan meli:create-test-user "1281300c-a19c-42e7-9de8-6d0badccc9ad" MLB

// Sample output:
Creating new test user...
DONE! New user created successfully:

ID: 1014941445
Nickname: TESTYTEZPVLJ
Password: qatest2911
Email: test_user_60793708@testuser.com

自动刷新令牌

授权令牌在其创建后有效期为6小时。在此之后,授权令牌将过期,并在发送查询之前自动使用刷新令牌生成一个新的令牌。

授权令牌的刷新是自动的,无需用户操作。

另一方面,刷新令牌将在6个月后过期,用户必须再次登录以获取一个新的刷新令牌。

文档与重要说明

URI相对于https://api.mercadolibre.com
别忘了查看MercadoLibre开发者网站
官方Laravel文档