{"id":17246187,"url":"https://github.com/hanson/youzan-sdk","last_synced_at":"2025-04-07T14:13:35.011Z","repository":{"id":17839337,"uuid":"82821725","full_name":"Hanson/youzan-sdk","owner":"Hanson","description":"👍有赞 SDK","archived":false,"fork":false,"pushed_at":"2022-11-24T01:21:04.000Z","size":234,"stargazers_count":103,"open_issues_count":2,"forks_count":18,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-31T12:06:53.658Z","etag":null,"topics":["sdk","youzan","youzan-sdk"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Hanson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-02-22T15:40:19.000Z","updated_at":"2023-06-20T08:11:11.000Z","dependencies_parsed_at":"2023-01-13T19:31:49.898Z","dependency_job_id":null,"html_url":"https://github.com/Hanson/youzan-sdk","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanson%2Fyouzan-sdk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanson%2Fyouzan-sdk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanson%2Fyouzan-sdk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Hanson%2Fyouzan-sdk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Hanson","download_url":"https://codeload.github.com/Hanson/youzan-sdk/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247666015,"owners_count":20975788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["sdk","youzan","youzan-sdk"],"created_at":"2024-10-15T06:32:39.243Z","updated_at":"2025-04-07T14:13:34.987Z","avatar_url":"https://github.com/Hanson.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Youzan SDK\n\n有赞 SDK (支持有赞所有版本)\n\nbase on [foundation-sdk](https://github.com/HanSon/foundation-sdk)\n\n## Requirement\n\n- PHP \u003e= 7\n- **[composer](https://getcomposer.org/)**\n\n## Installation\n\n```\n// 有赞云最新版支持\ncomposer require hanson/youzan-sdk -vvv\n```\n\n## Usage\n\n### 自用型应用\n\n```php\n\u003c?php\n\n$youzan = new \\Hanson\\Youzan\\Youzan([\n    'client_id' =\u003e '',\n    'client_secret' =\u003e '',\n    'debug' =\u003e true, // 调试模式\n    'kdt_id' =\u003e '', // 店铺ID(仅自用模式下填写)\n    'exception_as_array' =\u003e true, // 错误返回数组还是异常\n    'version' =\u003e '4.0.0',\n    'log' =\u003e [\n        'name' =\u003e 'youzan',\n        'file' =\u003e __DIR__.'/youzan.log',\n        'level'      =\u003e 'debug',\n        'permission' =\u003e 0777,\n    ]\n]);\n\n// 获取订单\n$result = $youzan-\u003erequest('youzan.trade.get', ['tid' =\u003e 'xxx']);\n\n// 获取门店信息（你可以设置调用api的版本）\n$result = $youzan-\u003esetVersion('3.0.0')-\u003erequest('youzan.shop.get');\n```\n\n### 工具型应用\n\n```php\n\u003c?php\n\n$youzan = new \\Hanson\\Youzan\\Youzan([\n    'client_id' =\u003e '',\n    'client_secret' =\u003e '',\n    'dev_client_id' =\u003e '工具型有容器的开发环境 client id', // 仅在 is_dev=true 时有用\n    'dev_client_secret' =\u003e '工具型有容器的开发环境 client secret', // 仅在 is_dev=true 时有用\n    'is_dev' =\u003e true, // 默认 false\n    'debug' =\u003e true,\n    'redirect_uri' =\u003e 'http://xxx.com',\n    'exception_as_array' =\u003e true,\n    'version' =\u003e '4.0.0',\n    'log' =\u003e [\n        'name' =\u003e 'youzan',\n        'file' =\u003e __DIR__.'/youzan.log',\n        'level'      =\u003e 'debug',\n        'permission' =\u003e 0777,\n    ]\n]);\n\n// 解密消息\n$youzan-\u003edecrypt-\u003edecrypt($message);\n\n/**\n* 切换开发模式\n *\n * 新版有赞云工具型有容器应用中，同一应用测试环境与正式环境的 client_id 和 client_secret都不一样，故此添加了 dev_client_id，dev_client_secret 和此方法，用于切换不同环境下的开发，默认为false，正式开发可以不调用此方法\n */\n$youzan-\u003esetDev(true);\n\n// 使用配置中的 prod_client_secret 进行解密\n$youzan-\u003edecrypt-\u003edecryptWithProd($message);\n\n// 获取授权 URL\n$url = $youzan-\u003epre_auth-\u003eauthorizationUrl();\n\n// 重定向到授权页面\n$youzan-\u003epre_auth-\u003eauthorizationRedirect();\n\n// 在重定向页面，你可以获取此次授权账号的 token\n$token = $youzan-\u003epre_auth-\u003egetAccessToken();\n\n// 也可以通过上面得到的 refresh_token 去刷新令牌\n$token = $youzan-\u003epre_auth-\u003erefreshToken($token['refresh_token']);\n\n// 创建授权应用\n$youzan = $youzan-\u003eoauth-\u003ecreateAuthorization($token['token']);\n\n// 店铺信息\n$result = $youzan-\u003erequest('youzan.shop.get');\n\n// 上传图片（4.0以上版本）\n$result = $youzan-\u003erequest('youzan.materials.storage.platform.img.upload', [], ['image' =\u003e [file_get_contents('https://i.loli.net/2018/12/17/5c17334487566.jpg')]]);\n```\n\n### 消息推送\n\n```php\n\u003c?php\n// 消息结构体\n$data = $youzan-\u003epush-\u003eparse();\n\n// 开发者自行选择性处理,把 \"null\" 与 \"\" 转为 null，建议使用\n// $data = Helper::toNull($data);\n\n$response = $youzan-\u003epush-\u003eresponse();\n\n// $response 为 `Symfony\\Component\\HttpFoundation\\Response` 实例\n// 对于需要直接输出响应的框架，或者原生 PHP 环境下\n$response-\u003esend();\n\n// 而 Laravel 中直接返回即可：\nreturn $response;\n```\n\n## 升级指南\n\n### 4.* -\u003e 5.*\n\n```\n* 4.* 的时候会对 api response 做处理，只返回 $response['response'] 部分\n* 5.* 以后默认原样返回 youzan api 的 response，不再二次处理，请注意更新业务代码\n```\n\n### 3.* -\u003e 4.*\n\n```\n* 构造函数设置了 `$config['exception_as_array'] = true;` 错误会返回包含 `error_response` 键名的数组（以前没有）\n* 上传图片为 `$youzan-\u003erequest('youzan.materials.storage.platform.img.upload', [], ['image' =\u003e [$bytes]]);`\n```\n\n## Help\n\nQQ 群： 570769430\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhanson%2Fyouzan-sdk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhanson%2Fyouzan-sdk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhanson%2Fyouzan-sdk/lists"}