tourze / wechat-mini-program-express-bundle
微信小程序同城配送服务,提供即时配送功能及其相关API接口
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/tourze/wechat-mini-program-express-bundle
Requires
- doctrine/dbal: ^4.0
- doctrine/doctrine-bundle: ^2.13
- doctrine/orm: ^3.0
- doctrine/persistence: ^4.1
- easycorp/easyadmin-bundle: ^4
- knplabs/knp-menu: ^3.7
- monolog/monolog: ^3.1
- psr/log: ^3|^2|^1
- symfony/config: ^7.3
- symfony/console: ^7.3
- symfony/dependency-injection: ^7.3
- symfony/doctrine-bridge: ^7.3
- symfony/framework-bundle: ^7.3
- symfony/http-kernel: ^7.3
- symfony/property-access: ^7.3
- symfony/routing: ^7.3
- symfony/serializer: ^7.3
- symfony/yaml: ^7.3
- tourze/arrayable: 1.*
- tourze/bundle-dependency: 1.*
- tourze/doctrine-ip-bundle: 1.0.*
- tourze/doctrine-timestamp-bundle: 1.0.*
- tourze/doctrine-track-bundle: 1.0.*
- tourze/doctrine-user-bundle: 1.0.*
- tourze/easy-admin-enum-field-bundle: 1.0.*
- tourze/easy-admin-menu-bundle: 1.0.*
- tourze/enum-extra: 1.0.*
- tourze/symfony-dependency-service-loader: 1.0.*
- tourze/symfony-routing-auto-loader-bundle: 1.0.*
- tourze/wechat-mini-program-bundle: 1.0.*
Requires (Dev)
- doctrine/data-fixtures: ^2.0
- doctrine/doctrine-fixtures-bundle: ^4.0
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^11.5
- tourze/http-client-bundle: 1.0.*
- tourze/phpunit-base: 1.*
- tourze/phpunit-doctrine-entity: 1.*
- tourze/phpunit-enum: 1.*
- tourze/phpunit-symfony-kernel-test: 1.0.*
- tourze/phpunit-symfony-unit-test: 1.*
- tourze/phpunit-symfony-web-test: 1.*
This package is auto-updated.
Last update: 2025-11-10 16:06:22 UTC
README
微信小程序即时配送API集成组件,提供与微信小程序即时配送平台交互的能力,支持美团、闪送等多家配送服务提供商。
Table of Contents
- Features
- Installation
- Configuration
- Usage
- Advanced Usage
- Architecture
- Commands
- API Reference
- Security
- Dependencies
- Contributing
- License
Features
- 配送公司管理: 同步和管理支持的配送服务提供商
- 账号绑定: 管理小程序与配送公司的绑定关系
- 订单操作: 支持完整的订单生命周期管理
- 查询功能: 实时查询订单状态和配送信息
- 测试支持: 提供模拟环境用于开发测试
- 命令行工具: 提供便捷的数据同步命令
Installation
composer require tourze/wechat-mini-program-express-bundle
如果使用Symfony Flex,Bundle会自动注册。否则,手动添加到 config/bundles.php:
return [ // ... other bundles WechatMiniProgramExpressBundle\WechatMiniProgramExpressBundle::class => ['all' => true], ];
Configuration
Bundle无需额外配置,依赖于 WechatMiniProgramBundle 的配置。确保已正确配置微信小程序账号信息。
示例配置文件 config/packages/wechat_mini_program.yaml:
wechat_mini_program: default_account: 'your_default_account' accounts: your_account: app_id: 'your_app_id' secret: 'your_secret'
Usage
基本用法
1. 同步配送公司信息
# 同步所有配送公司信息 bin/console wechat-express:sync-delivery-companies # 同步指定账号的配送公司信息 bin/console wechat-express:sync-delivery-companies --account-id=1
2. 同步绑定账号
# 同步所有绑定账号 bin/console wechat-express:sync-bind-accounts # 同步指定账号的绑定信息 bin/console wechat-express:sync-bind-accounts --account-id=1
3. 下单流程
use WechatMiniProgramExpressBundle\Service\DeliveryOrderService; use WechatMiniProgramExpressBundle\Request\PreAddOrderRequest; use WechatMiniProgramExpressBundle\Request\AddOrderRequest; // 获取服务 $deliveryOrderService = $this->container->get(DeliveryOrderService::class); // 预下单获取配送费 $preOrderRequest = new PreAddOrderRequest(); $preOrderRequest->setAccount($account); $preOrderRequest->setDeliveryId('delivery_company_id'); $preOrderRequest->setShopId('shop_id'); // ... 设置其他参数 $preOrderResponse = $deliveryOrderService->preAddOrder($preOrderRequest); // 正式下单 $orderRequest = new AddOrderRequest(); $orderRequest->setAccount($account); // ... 设置订单参数 $orderResponse = $deliveryOrderService->addOrder($orderRequest);
4. 查询订单
use WechatMiniProgramExpressBundle\Service\OrderQueryService; use WechatMiniProgramExpressBundle\Request\GetOrderRequest; $orderQueryService = $this->container->get(OrderQueryService::class); $queryRequest = new GetOrderRequest(); $queryRequest->setAccount($account); $queryRequest->setShopOrderId('your_order_id'); $orderInfo = $orderQueryService->getOrder($queryRequest);
Advanced Usage
自定义订单实体
use WechatMiniProgramExpressBundle\Entity\Order; use WechatMiniProgramExpressBundle\Entity\Embed\SenderInfo; use WechatMiniProgramExpressBundle\Entity\Embed\ReceiverInfo; // 创建订单 $order = new Order(); // 设置发送方信息 $senderInfo = new SenderInfo(); $senderInfo->setName('发送方姓名'); $senderInfo->setCity('北京市'); $senderInfo->setAddress('详细地址'); $senderInfo->setPhone('联系电话'); $order->setSenderInfo($senderInfo); // 设置接收方信息 $receiverInfo = new ReceiverInfo(); $receiverInfo->setName('接收方姓名'); $receiverInfo->setCity('上海市'); $receiverInfo->setAddress('详细地址'); $receiverInfo->setPhone('联系电话'); $order->setReceiverInfo($receiverInfo); // 转换为请求参数 $requestParams = $order->toRequestArray();
事件监听
// 监听订单创建事件 class OrderCreatedListener { public function onOrderCreated(OrderCreatedEvent $event): void { $order = $event->getOrder(); // 处理订单创建后的业务逻辑 } }
Architecture
Bundle采用分层架构和服务职责分离原则:
graph TD
A[WechatMiniProgramExpressBundle] --> B[DeliveryConfigService]
A --> C[DeliveryOrderService]
A --> D[OrderQueryService]
A --> E[MockOrderService]
B --> F[配送公司与绑定账号管理]
C --> G[订单创建与修改]
D --> H[订单查询与异常处理]
E --> I[订单状态模拟更新]
B -.依赖.-> J[WechatMiniProgramBundle]
C -.依赖.-> J
D -.依赖.-> J
E -.依赖.-> J
核心服务
- DeliveryConfigService: 配置管理服务
- 配送公司数据同步与管理
- 商户绑定账号信息维护
- DeliveryOrderService: 订单操作服务
- 预下单、正式下单
- 订单取消、重新下单
- OrderQueryService: 查询服务
- 订单状态查询
- 异常处理
- MockOrderService: 测试服务(仅测试环境)
- 模拟订单状态更新
Commands
同步配送公司列表
bin/console wechat-express:sync-delivery-companies [--account-id=<account_id>]
同步支持的配送公司信息到本地数据库。
参数:
--account-id: 可选,指定同步特定账号的配送公司信息
同步绑定账号信息
bin/console wechat-express:sync-bind-accounts [--account-id=<account_id>]
同步已绑定的配送账号信息。
参数:
--account-id: 可选,指定同步特定账号的绑定信息
API Reference
本Bundle集成以下微信小程序即时配送API:
Security
在使用本Bundle时,请注意以下安全事项:
- API密钥保护: 确保微信小程序的AppSecret等敏感信息安全存储,不要硬编码在代码中
- 数据传输安全: 所有与微信API的通信都通过HTTPS进行
- 订单数据保护: 订单中可能包含用户隐私信息,请确保符合数据保护法规
- 访问控制: 实施适当的权限控制,确保只有授权用户可以操作配送订单
Dependencies
tourze/wechat-mini-program-bundle: 微信小程序基础包symfony/framework-bundle: Symfony框架核心doctrine/orm: Doctrine ORM
Contributing
欢迎贡献代码!请确保:
- 遵循项目的编码规范
- 编写相应的测试用例
- 更新相关文档
- 提交前运行测试确保通过
License
This project is licensed under the MIT License - see the LICENSE file for details.