Commit a56e3c25 authored by wangzhengwen's avatar wangzhengwen

wechatpay

parent ae578b53
...@@ -33,7 +33,6 @@ class PayController ...@@ -33,7 +33,6 @@ class PayController
// if (!$validate->scene('create')->check($params)) { // if (!$validate->scene('create')->check($params)) {
// return json(['code' => 400, 'msg' => $validate->getError()]); // return json(['code' => 400, 'msg' => $validate->getError()]);
// } // }
// 创建支付订单 // 创建支付订单
$result = PayService::createPayment( $result = PayService::createPayment(
$params['user_id'], $params['user_id'],
...@@ -180,25 +179,24 @@ class PayController ...@@ -180,25 +179,24 @@ class PayController
$orderNo = request()->param('order_no'); $orderNo = request()->param('order_no');
try { try {
$payment = Db::name('fj_payment') $wechatPayService = new WeChatPayService();
->where('order_no', $orderNo) $order = $wechatPayService->queryOrderByOutTradeNo($orderNo);
->find();
if (!$payment) { if (!$order) {
throw new \Exception("支付订单不存在"); throw new \Exception("支付订单不存在");
} }
return json([ $res = json_decode($order, true);
'code' => 200, if ($res['trade_state'] == 'SUCCESS') {
'data' => [ // 处理业务逻辑
'order_no' => $payment['order_no'], $res = PayService::handlePaymentNotify($order['out_trade_no'], $order);
'pay_status' => $payment['pay_status'], return json(['code' => 1, 'msg' => 'success','data'=>$res]);
'pay_time' => $payment['pay_time'], }else {
'pay_amount' => $payment['pay_amount'] throw new \Exception("订单处理失败");
] }
]);
} catch (\Exception $e) { } catch (\Exception $e) {
return json(['code' => 500, 'msg' => $e->getMessage()]); return json(['code' => 0, 'msg' => $e->getMessage()]);
} }
} }
} }
\ No newline at end of file
...@@ -53,7 +53,7 @@ class User extends BaseController ...@@ -53,7 +53,7 @@ class User extends BaseController
public function register(Request $request) public function register(Request $request)
{ {
$vo = (new UserValidate())->goCheck(['name','mobile','password','code']); $vo = (new UserValidate())->goCheck(['name','mobile','password','code','role']);
if ($vo !== true) { if ($vo !== true) {
return $vo; return $vo;
} }
...@@ -76,6 +76,7 @@ class User extends BaseController ...@@ -76,6 +76,7 @@ class User extends BaseController
$user['salt'] = random(4); $user['salt'] = random(4);
$user['password'] = md5($data['password'].$user['salt']); $user['password'] = md5($data['password'].$user['salt']);
$user['reg_time'] = time(); $user['reg_time'] = time();
$user['role'] = $data['role'] ?? 1;
$res = userModel::insert($user); $res = userModel::insert($user);
if (!$res) if (!$res)
{ {
......
...@@ -6,9 +6,11 @@ use app\api\controller\PayController; ...@@ -6,9 +6,11 @@ use app\api\controller\PayController;
use app\api\middleware\Auth; use app\api\middleware\Auth;
use app\api\service\UserService; use app\api\service\UserService;
use app\api\service\UtilService; use app\api\service\UtilService;
use app\api\validate\CertValidate;
use app\api\validate\CourseValidate; use app\api\validate\CourseValidate;
use app\api\validate\UserValidate; use app\api\validate\UserValidate;
use app\BaseController; use app\BaseController;
use app\model\CertOrder;
use app\model\Course as CourseModel; use app\model\Course as CourseModel;
use app\model\project\Mail; use app\model\project\Mail;
use app\model\project\UserAccount; use app\model\project\UserAccount;
...@@ -229,6 +231,56 @@ class User extends BaseController ...@@ -229,6 +231,56 @@ class User extends BaseController
} }
//证书购买
public function buyCert(\think\Request $request)
{
$vo = (new CertValidate())->goCheck(['cert_id']);
if ($vo !== true) {
return $vo;
}
$data = $request->param();
$userId = $request->userId;
$course = \app\model\Cert::where([
'id' => $data['cert_id'],
'is_sell' => 1,
'is_del' => 0
])->find();
if (!$course) {
return $this->returnMsg('证书不存在');
}
if ($course['price']<=0)
{
return $this->returnMsg('免费证书无需购买');
}
$courseOrder = CertOrder::where(['status'=>0,'user_id'=>$userId,'cert_id'=>$course['id']])->count();
if (!$courseOrder)
{
return $this->returnMsg('请先报名');
}
// 验证购买状态(2表示证书类型)
if (UtilService::checkPurchase($userId, $data['cert_id'], 2)) {
return $this->returnMsg('请勿重复购买');
}
$params = [
'order_id'=>$data['cert_id'],
'order_type'=>2,
'pay_method'=>$data['pay_method'],
'amount'=>$course['price'],
'user_id'=>$userId,
];
$payController = new PayController();
return $payController->create($params);
}
public function editPassword(Request $request) public function editPassword(Request $request)
{ {
$vo = (new UserValidate())->goCheck(['confirm_password','password','old_password']); $vo = (new UserValidate())->goCheck(['confirm_password','password','old_password']);
......
...@@ -32,8 +32,13 @@ class PayService ...@@ -32,8 +32,13 @@ class PayService
public static function createPayment($userId, $orderId, $amount, $payMethod, $orderType, $reqInfo = []) public static function createPayment($userId, $orderId, $amount, $payMethod, $orderType, $reqInfo = [])
{ {
try { try {
$orderNoType = match($orderType) {
1 => 'kc',
2 => 'zs',
default => null,
};
// 生成支付订单号 // 生成支付订单号
$orderNo = UtilService::generateCompactOrderNo($userId,'kc'); $orderNo = UtilService::generateCompactOrderNo($userId,$orderNoType);
// 支付订单数据 // 支付订单数据
$paymentData = [ $paymentData = [
...@@ -156,7 +161,9 @@ class PayService ...@@ -156,7 +161,9 @@ class PayService
// Db::name('fj_course_order')->where('id', $payment['order_id'])->update(['status' => 1]); // Db::name('fj_course_order')->where('id', $payment['order_id'])->update(['status' => 1]);
} elseif ($payment['order_type'] == self::ORDER_TYPE_CERT) { } elseif ($payment['order_type'] == self::ORDER_TYPE_CERT) {
// 处理证书购买逻辑 // 处理证书购买逻辑
// Db::name('fj_cert_order')->where('id', $payment['order_id'])->update(['status' => 1]); $res = Db::name('cert_order')
->where('cert_id', $payment['order_id'])
->update(['status' => 1]);
} }
// 可以添加其他业务逻辑,如发送通知等 // 可以添加其他业务逻辑,如发送通知等
......
...@@ -181,7 +181,7 @@ class WeChatPayService ...@@ -181,7 +181,7 @@ class WeChatPayService
$platformPublicKeyInstance $platformPublicKeyInstance
); );
if (!$verifiedStatus) { if (!$verifiedStatus) {
// throw new \Exception("签名验证失败:"); throw new \Exception("签名验证失败:");
} }
// 转换通知的JSON文本消息为PHP Array数组 // 转换通知的JSON文本消息为PHP Array数组
......
...@@ -24,6 +24,7 @@ class UserValidate extends BaseValidate ...@@ -24,6 +24,7 @@ class UserValidate extends BaseValidate
'amount'=>'require|chenckAmount', 'amount'=>'require|chenckAmount',
'txType'=>'require', 'txType'=>'require',
'reset_token'=>'require', 'reset_token'=>'require',
'role'=>'require',
]; ];
protected $message = [ protected $message = [
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment