php实现充值
PHP 实现充值功能
数据库设计
创建数据库表存储用户余额和交易记录,例如:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) UNIQUE,
balance DECIMAL(10,2) DEFAULT 0.00
);
CREATE TABLE transactions (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
amount DECIMAL(10,2),
transaction_type ENUM('充值','消费'),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id)
);
充值接口实现
创建处理充值的PHP脚本:

<?php
// 连接数据库
$db = new PDO('mysql:host=localhost;dbname=your_db', 'username', 'password');
// 获取用户ID和充值金额
$userId = $_POST['user_id'];
$amount = (float)$_POST['amount'];
// 验证金额
if($amount <= 0) {
die("充值金额必须大于0");
}
// 开始事务
$db->beginTransaction();
try {
// 更新用户余额
$stmt = $db->prepare("UPDATE users SET balance = balance + ? WHERE id = ?");
$stmt->execute([$amount, $userId]);
// 记录交易
$stmt = $db->prepare("INSERT INTO transactions (user_id, amount, transaction_type) VALUES (?, ?, '充值')");
$stmt->execute([$userId, $amount]);
// 提交事务
$db->commit();
echo "充值成功";
} catch(Exception $e) {
// 回滚事务
$db->rollBack();
echo "充值失败: " . $e->getMessage();
}
?>
支付网关集成
集成第三方支付网关(如支付宝、微信支付):
// 支付宝支付示例
function createAlipayOrder($amount, $orderId) {
$config = [
'app_id' => 'your_app_id',
'notify_url' => 'https://yourdomain.com/notify.php',
'return_url' => 'https://yourdomain.com/return.php'
];
$order = [
'out_trade_no' => $orderId,
'total_amount' => $amount,
'subject' => '账户充值'
];
// 调用支付宝SDK创建支付
// ...
return $payUrl; // 返回支付链接
}
安全措施
实现必要的安全验证:

- 验证用户身份
- 防止SQL注入
- 金额合法性检查
- 支付结果回调验证
- 记录完整交易日志
前端交互
创建用户充值页面:
<form action="recharge.php" method="post">
<input type="hidden" name="user_id" value="<?php echo $userId; ?>">
<select name="amount">
<option value="10">10元</option>
<option value="50">50元</option>
<option value="100">100元</option>
</select>
<button type="submit">充值</button>
</form>
回调处理
处理支付网关的回调通知:
// notify.php
$verified = verifyAlipayNotification($_POST);
if($verified) {
$orderId = $_POST['out_trade_no'];
$amount = $_POST['total_amount'];
// 根据orderId更新数据库
markOrderAsPaid($orderId, $amount);
echo "success";
} else {
echo "fail";
}






