当前位置:首页 > PHP

php实现下单

2026-02-16 22:38:56PHP

PHP 下单功能实现

数据库设计

创建订单表(orders)和订单详情表(order_items)是基础。订单表存储订单基本信息,订单详情表存储商品信息。

订单表结构示例:

CREATE TABLE orders (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    order_number VARCHAR(50) NOT NULL,
    total_amount DECIMAL(10,2) NOT NULL,
    status VARCHAR(20) DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

订单详情表结构示例:

CREATE TABLE order_items (
    id INT AUTO_INCREMENT PRIMARY KEY,
    order_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    FOREIGN KEY (order_id) REFERENCES orders(id)
);

生成订单号

使用时间戳和随机数生成唯一订单号,确保订单号不重复。

function generateOrderNumber() {
    return date('YmdHis') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
}

处理下单请求

接收前端提交的商品数据,验证库存和价格,创建订单记录。

// 假设 $_POST['items'] 是前端提交的商品数组
$items = json_decode($_POST['items'], true);
$totalAmount = 0;

// 计算总金额并验证库存
foreach ($items as $item) {
    $product = getProductById($item['product_id']); // 自定义函数获取商品信息
    if ($product['stock'] < $item['quantity']) {
        die('库存不足');
    }
    $totalAmount += $product['price'] * $item['quantity'];
}

// 创建订单
$orderNumber = generateOrderNumber();
$db->beginTransaction();
try {
    $orderId = createOrder($userId, $orderNumber, $totalAmount); // 自定义函数创建订单
    foreach ($items as $item) {
        addOrderItem($orderId, $item); // 自定义函数添加订单详情
        updateProductStock($item['product_id'], $item['quantity']); // 自定义函数更新库存
    }
    $db->commit();
    echo json_encode(['status' => 'success', 'order_number' => $orderNumber]);
} catch (Exception $e) {
    $db->rollBack();
    echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}

支付集成

根据需求集成支付宝、微信支付等第三方支付接口。以支付宝为例:

function createAlipayOrder($orderNumber, $amount, $title) {
    require_once 'alipay/config.php';
    $alipay = new AlipayTradeService($config);

    $request = new AlipayTradePagePayRequest();
    $request->setReturnUrl('https://yourdomain.com/return.php');
    $request->setNotifyUrl('https://yourdomain.com/notify.php');

    $bizContent = json_encode([
        'out_trade_no' => $orderNumber,
        'total_amount' => $amount,
        'subject' => $title,
        'product_code' => 'FAST_INSTANT_TRADE_PAY'
    ]);

    $request->setBizContent($bizContent);
    return $alipay->pagePay($request);
}

订单状态更新

支付成功后,第三方支付平台会异步通知,需验证签名并更新订单状态。

// notify.php 示例
$alipay = new AlipayTradeService($config);
$verifyResult = $alipay->check($_POST);
if ($verifyResult) {
    $orderNumber = $_POST['out_trade_no'];
    updateOrderStatus($orderNumber, 'paid'); // 自定义函数更新订单状态
    echo 'success';
} else {
    echo 'fail';
}

订单查询功能

提供订单查询接口,方便用户查看订单状态和历史记录。

php实现下单

function getOrderDetails($orderNumber) {
    $order = $db->query("SELECT * FROM orders WHERE order_number = ?", [$orderNumber])->fetch();
    if (!$order) return null;

    $items = $db->query("SELECT * FROM order_items WHERE order_id = ?", [$order['id']])->fetchAll();
    $order['items'] = $items;
    return $order;
}

标签: 下单php
分享给朋友:

相关文章

php实现递归

php实现递归

递归的基本概念 递归是一种函数调用自身的技术,适用于解决可以分解为相同子问题的问题。在PHP中,递归需要明确的终止条件(基线条件),否则会导致无限循环。 递归实现阶乘 阶乘是经典的递归案例,n! =…

php实现增删改查

php实现增删改查

以下是在PHP中实现增删改查(CRUD)操作的详细方法,以MySQL数据库为例: 数据库连接配置 创建config.php文件存储数据库连接信息: <?php $host = 'localh…

php实现排序

php实现排序

PHP 数组排序方法 PHP 提供了多种内置函数用于数组排序,适用于不同的排序需求。以下是常见的排序方法: 按值升序排序 sort() 函数对数组按值升序排序,重置键名(索引数组适用): $num…

php实现mysql

php实现mysql

PHP 连接 MySQL 的基本方法 PHP 提供了多种方式与 MySQL 数据库进行交互,以下是最常用的几种方法。 使用 MySQLi 扩展 MySQLi 是 MySQL 的改进扩展,支持面向对…

php实现统计

php实现统计

PHP 实现统计功能 在 PHP 中实现统计功能通常涉及数据的收集、处理和展示。以下是一些常见的统计实现方法: 数据库数据统计 通过 SQL 查询可以直接从数据库中获取统计结果: $conn =…

php 实现mvc

php 实现mvc

PHP 实现 MVC 架构的方法 MVC(Model-View-Controller)是一种常见的软件设计模式,用于分离业务逻辑、用户界面和用户输入。以下是 PHP 实现 MVC 架构的关键步骤:…