From c2ce947b740b01b949b5929dbfcd8afd9898bfdc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cwanyongkang=E2=80=9D?= <“937888580@qq.com”> Date: Thu, 22 Feb 2024 16:13:10 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=91=E6=A1=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/common/controller/Alipay.php | 50 +++++++ app/common/controller/Wxpay.php | 45 ++++++ app/jinqiao/controller/Index.php | 248 +++++++++++++++++++++++++++++++ app/jinqiao/model/Key.php | 11 ++ app/jinqiao/model/Order.php | 11 ++ app/jinqiao/model/Package.php | 11 ++ app/jinqiao/model/User.php | 18 +++ extends/alipay/Alipay.php | 32 +++- extends/wechatpay/Wxpay.php | 17 +++ 9 files changed, 442 insertions(+), 1 deletion(-) create mode 100644 app/jinqiao/controller/Index.php create mode 100644 app/jinqiao/model/Key.php create mode 100644 app/jinqiao/model/Order.php create mode 100644 app/jinqiao/model/Package.php create mode 100644 app/jinqiao/model/User.php diff --git a/app/common/controller/Alipay.php b/app/common/controller/Alipay.php index 4ea593d..c933a10 100644 --- a/app/common/controller/Alipay.php +++ b/app/common/controller/Alipay.php @@ -9,6 +9,8 @@ use app\http\model\Recharge as RechargeModel; use app\jinyou\model\ProductOrder as ProductOrderModel; use app\jinyou\model\Account as AccountModel; use app\jinyou\model\Package as PackageModel; +use app\jinqiao\model\Order as JqOrderModel; +use app\jinqiao\model\Key as KeyModel; class Alipay { @@ -164,5 +166,53 @@ class Alipay { echo 'success'; } + + public function jinqiaoalipayverify() { + + $ali = new AlipaySdk(); + + $flag = $ali->payVerify2($_POST); + + if($flag){ + + $status = $_POST['trade_status']; + + $flag = false; + + if ($status == 'TRADE_SUCCESS') { + $flag = true; + } + + if ($flag) { + + $order_model = new JqOrderModel(); + $order_no=$_POST['out_trade_no']; + $alipay_no = $_POST['trade_no']; + + + + //获取充值信息 + $order_info = $order_model->getOne(['order_no'=>$order_no]); + + if (!empty($order_info['ali_wx_no'])) { + die; + } + + $update_data = []; + + //更新充值订单 + $update_data['ali_wx_no'] = $alipay_no; + $update_data['status'] = 1; + if($order_model->updateOne(['order_no'=>$order_no],$update_data)) { + + $key_model = new KeyModel(); + $key_model->where(['package_id' => $order_info['package_id'],'isused' =>0])->limit(1)->update(['isused' => 1,'user_id' => $order_info['user_id']]); + + } + } + } + + echo 'success'; + } } \ No newline at end of file diff --git a/app/common/controller/Wxpay.php b/app/common/controller/Wxpay.php index de63428..d91a072 100644 --- a/app/common/controller/Wxpay.php +++ b/app/common/controller/Wxpay.php @@ -8,6 +8,9 @@ use app\http\model\Recharge as RechargeModel; use app\jinyou\model\ProductOrder as ProductOrderModel; use app\jinyou\model\Account as AccountModel; use app\jinyou\model\Package as PackageModel; +use app\jinqiao\model\Order as JqOrderModel; +use app\jinqiao\model\Key as KeyModel; + class Wxpay { @@ -142,6 +145,48 @@ class Wxpay { $account_model->open_account($account_info,$user_info,$package_info); + //处理完成之后,告诉微信成功结果 + echo ' + + + '; + exit(); + } + } + + public function jinqiaowxpayverify() { + + + //接收数据 + $xmlData = file_get_contents('php://input'); + libxml_disable_entity_loader(true); + $data = json_decode(json_encode(simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOCDATA)), true); + + $order_model = new JqOrderModel(); + $order_no = $data['out_trade_no']; + $wx_no = $data['transaction_id']; + + //获取充值信息 + $order_info = $order_model->getOne(['order_no'=>$order_no]); + + if (!empty($order_info['TradeNo'])) { + die; + } + + //判断算出的签名和通知信息的签名是否一致 + if($data['result_code'] == 'SUCCESS' && $data['appid'] == 'wx18e5b4f42773c3ec' && $data['mch_id'] == '1571608411'){ + + $update_data = []; + + //更新充值订单 + $update_data['ali_wx_no'] = $wx_no; + $update_data['status'] = 1; + $order_model->updateOne(['order_no'=>$order_no],$update_data); + + $key_model = new KeyModel(); + $key_model->where(['package_id' => $order_info['package_id'],'isused' =>0])->limit(1)->update(['isused' => 1,'user_id' => $order_info['user_id']]); + + //处理完成之后,告诉微信成功结果 echo ' diff --git a/app/jinqiao/controller/Index.php b/app/jinqiao/controller/Index.php new file mode 100644 index 0000000..f7af687 --- /dev/null +++ b/app/jinqiao/controller/Index.php @@ -0,0 +1,248 @@ +getList(); + + $user_balance = $user_model->getUserBalance($this->userinfo['UserId']); + + echo json_encode([ + 'code' => 1, + 'data' => [ + 'balance' => $user_balance, + 'package_list' => $package_list, + ], + ]); + } + + //生成订单 + public function create_order() { + $request_data = json_decode(file_get_contents("php://input"),true)['data']; + $user_model = new UserModel; + $package_model = new PackageModel; + $order_model = new OrderModel; + + $user_info = $user_model->getOne(['Id' => $this->userinfo['UserId']]); + + $order_info = []; + + $return_data['code'] = 0; + + $package = $package_model->getOne(['id' => $request_data['package_id']]); + + $money = $package['price']; + + //判断价格是否正确 + if ($money != round(abs($request_data['price']),2)) { + $return_data['code'] = -1; + $return_data['msg'] = "价格有误,请联系客服!"; + } + + //判断余额是否足够支付 + if ($request_data['pay_type'] == 10 && $user_info['RestAmount'] < $money) { + $return_data['code'] = -1; + $return_data['msg'] = "余额不足!"; + } + + if ($return_data['code'] == -1) { + echo json_encode($return_data); + die; + } + + $order_no = 'jq'.md5(time()); + + $order_info = [ + 'user_id' => $this->userinfo['UserId'], + 'package_id' => $request_data['package_id'], + 'status' => 0, + 'pay_type' => $request_data['pay_type'], + 'order_no' => $order_no, + 'money' => $money, + ]; + + //用户余额 + $old_balance = $rest_money = $user_info['RestAmount']; + + if ($request_data['pay_type'] == 10) { + //判断余额是否足够 + if ($old_balance < $money) { + $return_data['code'] = -1; + $return_data['msg'] = "余额不足!"; + echo json_encode($return_data); + die; + } else { + $rest_money -= $money; + $rest_data = [ + 'RestAmount' => $rest_money + ]; + if ($user_model->updateOne(['Id'=>$this->userinfo['UserId'],'RestAmount'=>$old_balance],$rest_data)) { + $score_model = new UserScore; + $score_data = [ + 'TenantId'=>0, + 'UserId' => $this->userinfo['UserId'], + 'ScoreType' => '6', + 'ScoreTypeName' => '购买水滴', + 'ScoreValue' => $money, + 'UserName' => $user_info['Phone'], + 'OperateUserName' => $user_info['LoginCode'], + 'RestAmount1' => $old_balance, + 'RestAmount2' => $rest_money, + 'DeleteTag'=>0, + 'CreateTime' => date('Y-m-d H:i:s'), + 'UpdateTime' => date('Y-m-d H:i:s'), + ]; + $score_model->add($score_data); + + $order_info['status'] = 1; + //添加订单 + $order_model->add($order_info); + + $key_model = new KeyModel(); + $key_model->where(['package_id' => $order_info['package_id'],'isused' =>0])->limit(1)->update(['isused' => 1,'user_id' => $order_info['user_id']]); + $return_data['code'] = 1; + $return_data['msg'] = "兑换码已购买!"; + + echo json_encode($return_data); + } else { + $return_data['code'] = -1; + $return_data['msg'] = "余额不足!"; + echo json_encode($return_data); + die; + } + } + } else if($request_data['pay_type'] == 100) { + $param = [ + 'out_trade_no' => $order_info['order_no'], + 'total_amount' => $money, + 'subject' => '购买金桥投屏', + 'product_code' => 'FAST_INSTANT_TRADE_PAY', + 'timeout_express' => '30m', + ]; + //添加订单 + $order_model->add($order_info); + + + $pay_html = Alipay::pay_jinqiao($param); + $info = [ + 'code'=>2, + 'data' => $pay_html + ]; + echo json_encode($info); + } else if($request_data['pay_type'] == 70) { + + $order_model->add($order_info); + //微信支付 + $wxpay = new Wxpay(); + //添加订单 + + $param = [ + 'username' => $this->userinfo['LoginName'], + 'money' => $money*100, + 'order_no' => $order_info['order_no'], + ]; + $url = $wxpay->jinqiao_pay($param); + + $info = [ + 'code'=>3, + 'data' => $url + ]; + echo json_encode($info); + } + + } + + public function get_key() { + $key_model = new KeyModel(); + + $list = $key_model->getList(['user_id' => $this->userinfo['UserId']]); + + $package_model = new PackageModel; + + $package_list = $package_model->getList(); + + $package_id_info_list = []; + + foreach ($package_list as $package) { + $package_id_info_list[$package['id']] = $package; + } + foreach ($list as &$info) { + $info['package_name'] = $package_id_info_list[$info['package_id']]['name']; + + } + + + echo json_encode([ + 'code'=>1, + 'data' => $list + ]); + } + + public function get_order_list() { + $page = 0; + + if (isset($get_data['PageIndex'])) { + $page = ($get_data['PageIndex'] - 1) * 50; + } + $order_model = new OrderModel; + $package_model = new PackageModel; + $user_model = new UserModel; + + $package_list = $package_model->getList(); + + $package_id_info_list = []; + + foreach ($package_list as $package) { + $package_id_info_list[$package['id']] = $package; + } + + $list = $order_model->getListPage(['status' => 1], '*', 'id desc', "$page,50"); + + $user_id_list = []; + + foreach ($list as &$info) { + $info['package_name'] = $package_id_info_list[$info['package_id']]['name']; + $user_id_list[] = $info['user_id']; + } + + $user_info = $user_model->getList(['Id' => ['IN',$user_id_list]],'Id,LoginCode'); + + $user_phone_list = []; + foreach($user_info as $user) { + $user_phone_list[$user['Id']] = $user['LoginCode']; + } + + $pay_type = [ + 10 => '余额', + 70 => '微信', + 100 => '支付宝', + ]; + foreach ($list as &$info) { + $info['username'] = $user_phone_list[$info['user_id']]; + $info['pay_type'] = $pay_type[$info['pay_type']]; + } + + $data = [ + 'Code' => 30000, + 'Data' => $list, + 'Message' => '', + 'TotalCount' => (int)$order_model->getCount(['status' => 1])['count'], + ]; + echo json_encode($data); + } +} \ No newline at end of file diff --git a/app/jinqiao/model/Key.php b/app/jinqiao/model/Key.php new file mode 100644 index 0000000..769d36f --- /dev/null +++ b/app/jinqiao/model/Key.php @@ -0,0 +1,11 @@ +getOne(['Id' => $user_id],'RestAmount'); + + return $user_balance['RestAmount']; + } +} \ No newline at end of file diff --git a/extends/alipay/Alipay.php b/extends/alipay/Alipay.php index 241bb21..ff94d74 100644 --- a/extends/alipay/Alipay.php +++ b/extends/alipay/Alipay.php @@ -2,7 +2,7 @@ /* * @Author: 万永康 * @Date: 2020-10-11 12:32:50 - * @LastEditTime: 2024-01-27 16:19:49 + * @LastEditTime: 2024-02-20 16:23:38 * @LastEditors: “wanyongkang” “937888580@qq.com” * @Description: In User Settings Edit * @FilePath: /phptest/alipay/Alipay.php @@ -183,6 +183,36 @@ class Alipay return $result; + } + public static function pay_jinqiao($param) + { + global $config; + $aop = new \AopClient (); + $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do'; + $aop->appId = $config['alipay2']['app_id'];; + $aop->rsaPrivateKey = $config['alipay2']['private_key'] ; + $aop->apiVersion = '1.0'; + $aop->signType = 'RSA2'; + $aop->postCharset='utf-8'; + $aop->format='json'; + $aop->alipayrsaPublicKey = $config['alipay2']['public_key']; + + $request = new \AlipayTradePagePayRequest(); + + + + $param = json_encode($param); + + $request->setReturnUrl('http://www.juip.com/user/Index'); + + $notifyUrl="http://php-api.juip.com/common/alipay/jinqiaoalipayverify"; + $request->setNotifyUrl($notifyUrl); + + $request->setBizContent($param); + $result = $aop->pageExecute ( $request); + + return $result; + } /** diff --git a/extends/wechatpay/Wxpay.php b/extends/wechatpay/Wxpay.php index 0c28b7d..5c76e2d 100644 --- a/extends/wechatpay/Wxpay.php +++ b/extends/wechatpay/Wxpay.php @@ -60,4 +60,21 @@ class Wxpay $url2 = $result["code_url"]; return $url2; } + + public function jinqiao_pay($param) { + $notify = new \NativePay(); + $input = new \WxPayUnifiedOrder(); + $input->SetBody("购买金桥投屏"); + $input->SetOut_trade_no($param['order_no']); + $input->SetTotal_fee($param['money']); + $input->SetTime_start(date("YmdHis")); + $input->SetTime_expire(date("YmdHis", time() + 600)); + $input->SetNotify_url("http://php-api.juip.com/common/wxpay/jinqiaowxpayverify"); + $input->SetTrade_type("NATIVE"); + + $result = $notify->GetPayUrl($input); + + $url2 = $result["code_url"]; + return $url2; + } }