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;
+ }
}