当前位置:首页 > 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
);

订单详情表结构示例:

php实现下单

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);
}

处理下单请求

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

php实现下单

// 假设 $_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';
}

订单查询功能

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

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 实现文件下载的核心是通过设置 HTTP 头部信息,强制浏览器将文件作为附件下载而非直接显示。以下是一个基础实现示例: $file_path = '/path/t…

php实现文章

php实现文章

PHP实现文章管理功能 在PHP中实现文章管理功能通常涉及数据库操作、表单处理和页面展示。以下是实现文章管理的基本步骤: 数据库设计 创建articles表,包含字段如id、title、conten…

php 链表实现

php 链表实现

在 PHP 中实现链表可以通过类来模拟链表节点(Node)和链表(LinkedList)结构。以下是链表的完整实现示例,包含基础操作如插入、删除、遍历等。 链表节点类(Node) 链表的基本单元是节…

php多态实现

php多态实现

PHP 多态的实现方法 多态是面向对象编程的三大特性之一,允许不同类的对象对同一消息做出响应。PHP 主要通过以下方式实现多态: 通过继承和方法重写 子类继承父类并重写父类方法,实现不同子类对同一方…

php实现des加密

php实现des加密

DES 加密实现方法 在 PHP 中实现 DES 加密可以通过内置的 mcrypt 或 openssl 扩展完成。由于 mcrypt 已在 PHP 7.2 中废弃,推荐使用 openssl 扩展。…

php实现回复功能

php实现回复功能

实现回复功能的基本步骤 在PHP中实现回复功能通常涉及数据库操作、表单处理和前后端交互。以下是实现回复功能的关键步骤: 数据库设计 创建包含回复数据的表结构,例如: CREATE TABLE re…