当前位置:首页 > PHP

php实现购买

2026-02-15 01:28:45PHP

PHP实现购买功能的基本流程

创建数据库表存储商品和订单信息 通常需要商品表(products)和订单表(orders)两个主要表结构。商品表包含id、name、price、stock等字段,订单表包含order_id、user_id、product_id、quantity、total_price、status等字段。

CREATE TABLE products (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10,2) NOT NULL,
    stock INT NOT NULL
);

CREATE TABLE orders (
    order_id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL,
    product_id INT NOT NULL,
    quantity INT NOT NULL,
    total_price DECIMAL(10,2) NOT NULL,
    status VARCHAR(20) DEFAULT 'pending',
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

实现前端购买表单

创建HTML表单让用户选择商品和数量,提交到PHP处理页面。表单应包含商品选择下拉菜单和数量输入框。

<form action="process_purchase.php" method="post">
    <select name="product_id" required>
        <?php
        $products = $db->query("SELECT * FROM products WHERE stock > 0");
        while($product = $products->fetch_assoc()) {
            echo "<option value='{$product['id']}'>{$product['name']} - \${$product['price']}</option>";
        }
        ?>
    </select>

    <input type="number" name="quantity" min="1" required>

    <button type="submit">购买</button>
</form>

处理购买逻辑的PHP代码

创建process_purchase.php文件处理表单提交,验证库存并创建订单记录。

<?php
session_start();
require 'db_connection.php';

if($_SERVER['REQUEST_METHOD'] == 'POST') {
    $product_id = $_POST['product_id'];
    $quantity = $_POST['quantity'];
    $user_id = $_SESSION['user_id'];

    // 获取商品信息
    $stmt = $db->prepare("SELECT * FROM products WHERE id = ? FOR UPDATE");
    $stmt->bind_param("i", $product_id);
    $stmt->execute();
    $product = $stmt->get_result()->fetch_assoc();

    // 检查库存
    if($product['stock'] < $quantity) {
        die("库存不足");
    }

    // 计算总价
    $total_price = $product['price'] * $quantity;

    // 开始事务
    $db->begin_transaction();

    try {
        // 更新库存
        $update = $db->prepare("UPDATE products SET stock = stock - ? WHERE id = ?");
        $update->bind_param("ii", $quantity, $product_id);
        $update->execute();

        // 创建订单
        $insert = $db->prepare("INSERT INTO orders (user_id, product_id, quantity, total_price) VALUES (?, ?, ?, ?)");
        $insert->bind_param("iiid", $user_id, $product_id, $quantity, $total_price);
        $insert->execute();

        $db->commit();
        header("Location: order_success.php?order_id=".$db->insert_id);
    } catch(Exception $e) {
        $db->rollback();
        die("购买失败: ".$e->getMessage());
    }
}
?>

支付集成(以支付宝为例)

集成第三方支付接口,如支付宝或微信支付,完成支付流程。

// 支付宝支付示例
function createAlipayOrder($order_id, $total_price, $subject) {
    require_once 'alipay/config.php';
    require_once 'alipay/pagepay/service/AlipayTradeService.php';
    require_once 'alipay/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';

    $payRequestBuilder = new AlipayTradePagePayContentBuilder();
    $payRequestBuilder->setBody("商品购买");
    $payRequestBuilder->setSubject($subject);
    $payRequestBuilder->setOutTradeNo($order_id);
    $payRequestBuilder->setTotalAmount($total_price);
    $payRequestBuilder->setProductCode("FAST_INSTANT_TRADE_PAY");

    $aop = new AlipayTradeService($config);
    $response = $aop->pagePay($payRequestBuilder, $config['return_url'], $config['notify_url']);

    return $response;
}

订单状态管理

实现订单状态更新和查询功能,包括支付成功后的回调处理。

// 支付成功回调处理
function handlePaymentCallback($order_id, $payment_status) {
    global $db;

    $status_map = [
        'TRADE_SUCCESS' => 'paid',
        'TRADE_FINISHED' => 'completed',
        'TRADE_CLOSED' => 'cancelled'
    ];

    if(isset($status_map[$payment_status])) {
        $stmt = $db->prepare("UPDATE orders SET status = ? WHERE order_id = ?");
        $stmt->bind_param("si", $status_map[$payment_status], $order_id);
        $stmt->execute();

        // 发送订单确认邮件
        sendOrderConfirmation($order_id);
    }
}

安全注意事项

实施必要的安全措施保护购买流程,防止常见攻击。

验证所有输入数据,使用预处理语句防止SQL注入。对敏感操作如库存修改使用数据库事务确保数据一致性。支付接口使用HTTPS加密传输,存储的支付信息需符合PCI DSS标准。实现CSRF防护,在关键表单添加令牌验证。

php实现购买

标签: php
分享给朋友:

相关文章

php实现购物车

php实现购物车

PHP实现购物车功能 购物车功能是电商网站的核心模块之一,通常涉及商品添加、删除、数量修改和结算等操作。以下是使用PHP实现购物车功能的几种方法。 使用Session存储购物车数据 Session…

php实现队列

php实现队列

PHP实现队列的方法 队列是一种先进先出(FIFO)的数据结构,PHP可以通过多种方式实现队列功能。 使用数组模拟队列 PHP数组可以模拟队列的基本操作,通过array_push和array_shi…

php实现

php实现

PHP 实现的基本方法 PHP 是一种服务器端脚本语言,广泛用于 Web 开发。以下是 PHP 实现的一些常见方法。 变量与数据类型 PHP 变量以 $ 开头,支持多种数据类型: $nam…

php验证码实现

php验证码实现

验证码实现方法 在PHP中实现验证码功能通常涉及生成随机字符串或数字,将其转换为图像,并通过会话(Session)进行验证。以下是几种常见的实现方式: 使用GD库生成图像验证码 GD库是PHP内置的…

php 购物车实现

php 购物车实现

数据库设计 购物车功能通常需要设计数据库表存储商品和用户信息。常见的表包括products(商品表)、users(用户表)和cart(购物车表)。cart表通常包含字段:id(主键)、user_id(…

php实现跳转

php实现跳转

PHP 实现页面跳转的方法 在 PHP 中实现页面跳转有多种方式,以下是常见的几种方法及其适用场景: 使用 header() 函数 通过 header() 函数发送 HTTP 头部信息实现跳转。注…