hosomikai/laravel-ezship 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

hosomikai/laravel-ezship

Composer 安装命令:

composer require hosomikai/laravel-ezship

包简介

台灣便利配ezship物流API

README 文档

README

Laravel Ezship Api - 台灣便利配非官方套件

Made with ❤️ by hosomikai

Requirement for laravel

Installation

1. Require the Package

After creating your new Laravel application and composer setting, you can include the package with the following command:

$ composer require hosomikai/laravel-ezship

2. Publish

php artisan vendor:publish --provider="Hosomikai\Ezship\EzshipServiceProvider"

3. Add your .env :

EZSHIP_APP_ID={YOUR_EZSHIP_APP_ID}
EZSHIP_RETURN_URL=${APP_URL}/ezship
EZSHIP_MAP_REDIRECT_URL=${APP_URL}/ezship_map

如果你想載入demo範例 config/app.php

'providers' => [
    ...
    Hosomikai\Ezship\EzshipDemoServiceProvider::class,
]

設定完成後瀏覽 http://localhost:8000/ezship/order

Usage

1. 設定回傳網址

routes/web.php

    Route::get('ezship', 'EzshipController@handle');

註:需將你的ezship 路由網址註冊到 VerifyCsrfToken middleware 裡的 $except裡,以過濾post方法

EzshipController:

    use Illuminate\Http\Request;
    use Hosomikai\Ezship\EzshipResponse;

    ...

    public function handle(Request $request)
    {
        $response = new EzshipResponse($request->all());

        //your handle or just default
        //you can redirect your handle page or 
        //if you use api to get this response
        //just return response object

        return $response;
    }

2. 宅配串接

    use Ezship
    ...

    $orderId = now()->format('YmdHis');                     //商店訂單編號                 
    $amount = 100;                                          //包裹價值金額或代收金額
    $needPay = true;                                        //是否需要代收款(取貨付款或單純取貨)
    $recipientName = 'hosomikai';                           //取貨人或收件人姓名(需與收件人證件姓名一致)
    $recipientEmail = 'service@hosomikai.com';              //取貨人或收件人信箱
    $recipientMobile = '0953539459';                        //取貨人或收件人電話
    $zipCode = '104';                                       //收貨人郵遞區號
    $recipientAddr = '12, No. 80號復興北路中山區台北市104';     //收貨人地址

    $order = Ezship::newOrder($amount, $needPay, $orderId)
                ->recipient($recipientName', $recipientMobile, $recipientEmail')
                ->homeDelivery($zipCode, $recipientAddr);

    
    //post by redirect form
    return $order->checkout();

3. 超商取貨串接

產生電子地圖連結:

    use Hosomikai\Ezship\EzshipMapGenerator;

    //你想夾帶回來的參數
    $params = [
        //
    ];

    //運用此api產生的連結 選擇取貨超商
    $mapUrl = $mapGenerator
            ->withWebParams($params)
            ->mapUrl();

routes/web.php:

Route::post('ezship_map', 'EzshipController@handleMap');

EzshipController:

    use Illuminate\Http\Request;
    use Illuminate\Support\Arr;
    use Hosomikai\Ezship\EzshipMapResponse;
    ...

    public function handleMap(Request $request)
    {
        $mapResponse = new EzshipMapResponse($request->all());

        if ($mapResponse->fails()) {
            //handle fail
            return;
        }

        //成功選取的超商完整代碼
        $strCode = $mapResponse->getStoreCode()();
        
        //當時夾帶的 回來需要判別的使用的參數
        $yourparams = $mampResponse->getWebPara();

        //....
        // handle your flow
    }

新建超商取貨訂單

    use Ezship
    use Hosomikai\Ezship\EzshipResponse;
    ...

    $orderId = now()->format('YmdHis');                     //商店訂單編號                 
    $amount = 100;                                          //包裹價值金額或代收金額
    $needPay = true;                                        //是否需要代收款(取貨付款或單純取貨)
    $recipientName = 'hosomikai';                           //取貨人或收件人姓名(需與收件人證件姓名一致)
    $recipientEmail = 'service@hosomikai.com';              //取貨人或收件人信箱
    $recipientMobile = '0953539459';                        //取貨人或收件人電話
    $stCode = 'yourstcode';                                 //code you get from (EzshipMapResponse)->getStoreCode();

    $order = Ezship::newOrder($amount, $needPay, $orderId)
                ->recipient($recipientName', $recipientMobile, $recipientEmail')
                ->toStore($stCode);

    
    //post by redirect form
    return $order->checkout();
    ....

4. Hosomikai\Ezship\Contracts\EzshipOrder

參數 說明
STORE_NEW_TYPE1 A01 超商取貨新訂單,不需在ezShip上確認訂單,可直接印單 (ezShip系統將回覆sn_id)
STORE_NEW_TYPE2 A02 超商取貨新訂單,需在ezShip上確認訂單,確認後才可進行印單 (ezShip系統預設值, 且系統將回覆sn_id)
STORE_NEW_TYPE3 A03 超商取貨新訂單,使用 輕鬆袋或迷你袋 (ezShip系統不回覆sn_id,不需在ezShip網站上確認訂單,但需至ezShip網站後台登錄專用編號)
STORE_NEW_TYPE4 A04 超商取貨新訂單,使用 輕鬆袋或迷你袋 (ezShip系統不回覆sn_id,需在ezShip網站上確認訂單,且需至ezShip網站後台登錄專用編號)
HOME_DELIVERY_TYPE1 A05 宅配新訂單 不需在ezShip上確認訂單,可直接印單 (ezShip系統將回覆sn_id)
HOME_DELIVERY_TYPE2 A06 宅配新訂單 需在ezShip上確認訂單,確認後才可進行印單 (ezShip系統將回覆sn_id)

you can set in env:

EZSHIP_NEW_ORDER_STATUS_STORE=
EZSHIP_NEW_ORDER_STATUS_HOME_DELIVERY=

or you can publish config & change in config/ezship.php:

    ...

    /**
     * 建立新訂單狀態類型.
     */
    'order_status' => [
        'store' => env('EZSHIP_NEW_ORDER_STATUS_STORE', EzshipOrderStatusConstant::STORE_NEW_TYPE2),                      //超取新訂單狀態類型
        'home_delivery' => env('EZSHIP_NEW_ORDER_STATUS_HOME_DELIVERY', EzshipOrderStatusConstant::HOME_DELIVERY_TYPE2),  //宅配新訂單狀態類型
    ],

5. 查詢物流配送狀態

    $snId = '3514114054';

    //this will return EzshipResponse object (by our config before)
    $order = Ezship::queryBySnId($snId);

    // return data

Referrece

台灣便利通/Ezship

Change log

Please see the changelog for more information on what has changed recently.

TODO

  • 查詢自動查詢物流狀態
  • 觸發事件
  • 紀錄ezship配送log
  • 內容完善校正
  • 測試
  • web params exception
  • 優化回傳response model

hosomikai/laravel-ezship 适用场景与选型建议

hosomikai/laravel-ezship 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 89 次下载、GitHub Stars 达 2, 最近一次更新时间为 2021 年 06 月 14 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「library」 「ezShip」 「物流」 「台灣便利配」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 hosomikai/laravel-ezship 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 hosomikai/laravel-ezship 我们能提供哪些服务?
定制开发 / 二次开发

基于 hosomikai/laravel-ezship 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 89
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 2
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 2
  • Watchers: 1
  • Forks: 1
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2021-06-14