PHP餐饮管理系统可以集成微信支付功能,实现在线点餐、支付等功能。以下是一个简单的PHP餐饮管理系统的示例代码:
<?php
// 连接数据库
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
// 处理微信支付回调
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 解析微信支付回调数据
$xmlData = file_get_contents('php://input');
$data = simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOCDATA);
// 处理支付结果
$out_trade_no = $data->out_trade_no; // 商户订单号
$transaction_id = $data->transaction_id; // 微信支付订单号
$total_fee = $data->total_fee; // 支付金额
// 更新订单状态为已支付
$sql = "UPDATE orders SET status = 'paid' WHERE order_no = '$out_trade_no'";
$conn->query($sql);
// 返回成功结果给微信支付
echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
exit;
}
// 处理用户下单请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$order_no = $_POST['order_no'];
$total_amount = $_POST['total_amount'];
// 生成订单并保存到数据库
$sql = "INSERT INTO orders (order_no, total_amount, status) VALUES ('$order_no', '$total_amount', 'unpaid')";
$conn->query($sql);
// 调用微信支付接口
$params = [
'appid' => 'your_appid',
'mch_id' => 'your_mch_id',
'nonce_str' => uniqid(),
'body' => '餐饮订单',
'out_trade_no' => $order_no,
'total_fee' => $total_amount,
'spbill_create_ip' => $_SERVER['REMOTE_ADDR'],
'notify_url' => 'https://your_domain.com/weixin_notify.php', // 微信支付回调地址
'trade_type' => 'JSAPI',
'openid' => 'user_openid',
];
// 生成签名
ksort($params);
$stringA = http_build_query($params);
$stringSignTemp = $stringA . '&key=your_key';
$sign = strtoupper(md5($stringSignTemp));
// 构造请求参数
$params['sign'] = $sign;
$xmlData = '<xml>';
foreach ($params as $key => $value) {
$xmlData .= "<$key><![CDATA[$value]]></$key>";
}
$xmlData .= '</xml>';
// 发起微信支付请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api.mch.weixin.qq.com/pay/unifiedorder');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xmlData);
$response = curl_exec($ch);
curl_close($ch);
// 解析微信支付返回结果
$data = simplexml_load_string($response, 'SimpleXMLElement', LIBXML_NOCDATA);
// 返回支付参数给前端
$pay_params = [
'appId' => $data->appid,
'timeStamp' => time(),
'nonceStr' => $data->nonce_str,
'package' => 'prepay_id=' . $data->prepay_id,
'signType' => 'MD5',
];
// 生成签名
ksort($pay_params);
$stringA = http_build_query($pay_params);
$stringSignTemp = $stringA . '&key=your_key';
$pay_params['paySign'] = strtoupper(md5($stringSignTemp));
echo json_encode($pay_params);
exit;
}
以上代码是一个简单的示例,实际开发中还需要根据具体需求进行完善和优化。
上一篇:php的mvc结构图
下一篇:php反射类 传递数组
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站