自开发的微店服务商扩展

微店服务商扩展

需求:因为公司最近业务有微店服务商的接入,前期看文档和封装基础的接口等很繁琐,网上也没有现成的sdk,所有这段时间忙完后有空就自己弄了一个 PHP微店服务商相关的 扩展包,方便有需要的可以直接开箱即用。

wd-service 功能:

  • token的获取、刷新可直接使用
  • 数据的加解密(从官方的 Java Sdk 翻译过来)
  • 商品接口:上传商品、上下架、设置库存等
  • 订单接口:订单查询、发货、列表、物流等
  • 客户接口:客户信息查询

地址

GitHub
Package

🙂 使用示例

实例化:

// 配置
$config = [
    'app_id' => '1xxxxxx', // 服务商appid
    'app_secret' => 'axxxxxx', // 服务商secret
    'domain' => 'https://api.vdian.com/api', // 微店api地址
    'redirect_uri' => 'https://xxx.com/callback', // 注意 xxx.com 为你服务商授权的推送域名,微店有白名单限制;后面的 callback 可自定义,改地址是回调接收微店返回的code和state,后续进行调用获取token操作
    // redis
    'cache' => [
        "host" => "127.0.0.1",
        "port" => 6379,
        "database" => 0, // 选择redis库,0~15 共16个库
        "password" => "", // 密码
        'prefix' => 'wdcache_', // 前缀
    ],
];
// 相关用户和店铺(可不传),但后面记得需要初始化这两个值
$init_param = ['uid' => 1, 'openid' => '1xxxx'];

$app = new \Maxsihong\WdService\Entrance($config, $init_param);

/**
 * 注意 后面的参数可不传是不影响创建容器的,默认是uid-0;但后面记得需要初始化这两个值(`reSetUidAndOpenidAndCacheKey`),因为缓存都是基于这两个值存储的
 * 可以理解为uid是用户,而openid则是店铺,一个用户有多个店铺,这样的关系;
 * 所以后续存储缓存,包括access_token都是基于uid和openid为base_key做缓存的
 */

使用

// 加密数据
$str = $app::wdCommon()->encrypt('123456789');

🙂 Laravel 使用示例

注册服务

// 在 `App\Providers\AppServiceProvider` 类
public function register()
{
    // 注册 微店 服务容器
    $this->app->bind("onlineretailers.wd", function ($app, $init_param) {
        /**
        * 初始化用户uid,这个判断可根据自己业务来判断是否需要
        * 不加的话则直接初始化即可:$init_param['uid'] = $init_param['uid'] ?? 0;
         */
        if (empty($init_param) || !isset($init_param['uid'])) {
            throw new \Maxsihong\WdService\Kernel\Exception\ApiException('必须要初始化用户uid');
        }

        $init_param['openid'] = $init_param['openid'] ?? '';

        // $config 可放如config内,使用config('xx')获取
        return new \Maxsihong\WdService\Entrance($config, $init_param);
    });
}

使用

// 获取容器
// 想要idea更好的提示,可增加下面 @var 的注释
/** @var \Maxsihong\WdService\Entrance $app */
$app = app('onlineretailers.wd', ['uid' => 1, 'openid' => '1xxxx']);
// 加密数据
$str = $app::wdCommon()->encrypt('123456789');

END

欢迎有需要的小伙伴使用,使用过程有遇到问题或建议可 Github 提交 Issues。

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 3

我着魔了, 看成微服务 :joy:

11个月前 评论
Four (楼主) 10个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!