tourze/wechat-mini-program-order-bundle

微信小程序-购物订单

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-order-bundle


README

PHP Version Symfony License Build Status Code Coverage Tests

English | 中文

A Symfony Bundle for WeChat Mini Program shopping order management, providing shopping information and shipping information upload capabilities.

Features

  • 🛍️ Shopping Information Management: Upload and manage shopping order details
  • 🚚 Shipping Information Management: Upload and manage shipping/logistics information
  • 🏗️ Entity Management: Complete Doctrine entity definitions for orders, items, and shipping
  • 📊 Repository Pattern: Repository classes for data access
  • 🔄 Event-Driven: Event subscribers for order processing
  • 🧪 Fully Tested: Comprehensive test coverage with PHPUnit

Installation

composer require tourze/wechat-mini-program-order-bundle

Quick Start

1. Bundle Configuration

Add the bundle to your config/bundles.php:

return [
    // ... other bundles
    WechatMiniProgramOrderBundle\WechatMiniProgramOrderBundle::class => ['all' => true],
];

2. Basic Usage

<?php

use WechatMiniProgramOrderBundle\Request\UploadShoppingInfoRequest;
use WechatMiniProgramOrderBundle\Entity\ShoppingInfo;
use WechatMiniProgramOrderBundle\Entity\OrderKey;
use WechatMiniProgramOrderBundle\Entity\ShoppingItemList;
use WechatMiniProgramOrderBundle\Enum\OrderNumberType;
use WechatMiniProgramOrderBundle\Enum\OrderDetailType;
use WechatMiniProgramOrderBundle\Enum\LogisticsType;

// 1. Create order key
$orderKey = new OrderKey();
$orderKey->setOrderNumberType(OrderNumberType::USE_MCH_ORDER);
$orderKey->setMchId('your-mch-id');
$orderKey->setOutTradeNo('your-out-trade-no');

// 2. Create shopping info
$shoppingInfo = new ShoppingInfo();
$shoppingInfo->setOrderKey($orderKey);
$shoppingInfo->setPayer($user); // UserInterface instance
$shoppingInfo->setOrderDetailType(OrderDetailType::SHOPPING_ORDER);
$shoppingInfo->setLogisticsType(LogisticsType::EXPRESS);

// 3. Upload shopping info
$request = new UploadShoppingInfoRequest();
$request->setShoppingInfo($shoppingInfo);

3. Upload Shopping Information

use WechatMiniProgramOrderBundle\Request\UploadShoppingInfoRequest;
use WechatMiniProgramOrderBundle\Entity\ShoppingInfo;
use WechatMiniProgramOrderBundle\Entity\OrderKey;
use WechatMiniProgramOrderBundle\Entity\ShoppingItemList;

$request = new UploadShoppingInfoRequest();
$shoppingInfo = new ShoppingInfo();
$orderKey = new OrderKey();

// Configure your shopping info
$shoppingInfo->setOrderKey($orderKey);
$shoppingInfo->setPayer($user);
$shoppingInfo->setOrderDetailType(OrderDetailType::SHOPPING_ORDER);

$request->setShoppingInfo($shoppingInfo);

4. Upload Shipping Information

use WechatMiniProgramOrderBundle\Request\UploadShippingInfoRequest;
use WechatMiniProgramOrderBundle\Entity\ShippingInfo;

$request = new UploadShippingInfoRequest();
$shippingInfo = new ShippingInfo();

// Configure your shipping info
$shippingInfo->setTrackingNo('1234567890');
$shippingInfo->setDeliveryCompany('SF Express');

$request->setShippingInfo($shippingInfo);

Documentation

Entity Overview

Core Entities

  • ShoppingInfo: Main shopping order information
  • ShippingInfo: Shipping and logistics information
  • OrderKey: Order identification keys
  • ShoppingItemList: Shopping item details
  • Contact: Contact information for orders

Enums

  • OrderStatus: Order status enumeration
  • LogisticsType: Logistics type enumeration
  • DeliveryMode: Delivery mode enumeration
  • OrderDetailType: Order detail type enumeration

Advanced Usage

Batch Operations

// Upload multiple shopping items
$items = [];
foreach ($products as $product) {
    $item = new ShoppingItemList();
    $item->setMerchantItemId($product->getId());
    $item->setItemName($product->getName());
    $item->setItemCount($product->getQuantity());
    $items[] = $item;
}

$shoppingInfo->setItemList($items);

Event Handling

// Listen to order events
class OrderEventSubscriber implements EventSubscriberInterface
{
    public function onOrderCreated(OrderCreatedEvent $event): void
    {
        // Handle order creation
    }
}

Testing

Run the test suite:

./vendor/bin/phpunit packages/wechat-mini-program-order-bundle/tests

Requirements

  • PHP 8.1+
  • Symfony 6.4+
  • Doctrine ORM 3.0+

References

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

MIT