当前位置:首页 > PHP

php充值功能实现

2026-01-29 01:31:57PHP

实现PHP充值功能

数据库设计

创建一个数据库表存储充值记录,包含字段如iduser_idamountstatuscreate_time等。示例SQL:

CREATE TABLE `recharge_records` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `amount` decimal(10,2) NOT NULL,
  `status` tinyint(1) DEFAULT 0 COMMENT '0-未完成 1-已完成',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

前端页面

设计一个充值表单,包含金额输入框和支付方式选择。示例HTML:

<form action="recharge.php" method="post">
    <input type="number" name="amount" min="1" step="0.01" required>
    <select name="payment_method">
        <option value="alipay">支付宝</option>
        <option value="wechat">微信支付</option>
    </select>
    <button type="submit">充值</button>
</form>

后端处理

创建recharge.php处理充值请求,验证数据并调用支付接口:

<?php
// 验证用户登录
session_start();
if (!isset($_SESSION['user_id'])) {
    die('请先登录');
}

// 获取参数
$amount = floatval($_POST['amount']);
$paymentMethod = $_POST['payment_method'];
$userId = $_SESSION['user_id'];

// 验证金额
if ($amount <= 0) {
    die('充值金额必须大于0');
}

// 插入充值记录
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $db->prepare("INSERT INTO recharge_records (user_id, amount) VALUES (?, ?)");
$stmt->execute([$userId, $amount]);
$recordId = $db->lastInsertId();

// 调用支付接口
if ($paymentMethod == 'alipay') {
    // 支付宝支付逻辑
    header("Location: alipay_payment.php?amount=$amount&order_id=$recordId");
} else {
    // 微信支付逻辑
    header("Location: wechat_payment.php?amount=$amount&order_id=$recordId");
}
?>

支付回调处理

创建回调接口处理支付结果通知,示例支付宝回调处理:

php充值功能实现

<?php
// 验证回调数据
$orderId = $_POST['out_trade_no'];
$tradeStatus = $_POST['trade_status'];

if ($tradeStatus == 'TRADE_SUCCESS') {
    // 更新订单状态
    $db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
    $stmt = $db->prepare("UPDATE recharge_records SET status = 1 WHERE id = ?");
    $stmt->execute([$orderId]);

    // 更新用户余额
    $stmt = $db->prepare("UPDATE users SET balance = balance + (SELECT amount FROM recharge_records WHERE id = ?) WHERE id = (SELECT user_id FROM recharge_records WHERE id = ?)");
    $stmt->execute([$orderId, $orderId]);

    echo 'success';
} else {
    echo 'fail';
}
?>

安全注意事项

  • 对用户输入进行严格验证和过滤
  • 使用HTTPS协议传输敏感数据
  • 支付接口使用官方SDK
  • 记录完整的操作日志
  • 实现防重复提交机制

标签: 充值功能
分享给朋友:

相关文章

php实现linux关机重启功能

php实现linux关机重启功能

通过PHP执行Linux关机或重启命令 PHP可以通过exec()、shell_exec()或system()等函数调用系统命令实现关机或重启功能,但需注意权限问题。 使用exec函数执行命令 //…

vue实现付费功能

vue实现付费功能

Vue 实现付费功能的方法 集成第三方支付平台 选择适合的第三方支付平台(如支付宝、微信支付、Stripe、PayPal等),并按照其文档进行集成。在 Vue 项目中,可以通过引入支付平台的 SDK…

php实现评论功能

php实现评论功能

数据库设计 创建评论表(示例结构): CREATE TABLE `comments` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id`…

php实现登录功能

php实现登录功能

创建登录表单 在HTML中创建一个表单,包含用户名和密码输入框。表单的action属性指向处理登录的PHP文件,method设置为POST。 <form action="login.php"…

at 功能实现vue

at 功能实现vue

实现 Vue 中的 @ 功能 在 Vue 中实现类似社交平台的 @ 提及功能,通常需要结合输入框(如 <textarea> 或可编辑的 <div>)和用户列表的交互。以下是具体…

vue支付功能实现

vue支付功能实现

支付功能实现的基本流程 在Vue项目中实现支付功能通常需要对接第三方支付平台(如支付宝、微信支付、Stripe等)。以下是通用流程: 用户在前端选择支付方式并提交订单 后端生成支付参数并返回给前端…