From 19a86aaeed6e6b9f0519fbaf39acb43838eae5f1 Mon Sep 17 00:00:00 2001 From: yanzai Date: Mon, 27 Oct 2025 16:31:55 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=B9=E6=8E=A5=E4=B8=89=E6=96=B9=E6=94=AF?= =?UTF-8?q?=E4=BB=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/TongLianPayController.php | 223 ++++++++++++++++++ .../Controllers/TonglianTestController.php | 108 +++++++++ app/Http/Controllers/UserOrderController.php | 145 +++++++++++- app/Libraries/Lu.php | 12 + config/code.php | 2 + routes/web.php | 3 + 菏泽颐圣体检中心小程序/api/api.js | 8 +- 菏泽颐圣体检中心小程序/api/index.js | 6 +- 菏泽颐圣体检中心小程序/manifest.json | 2 +- .../pages/buy/check/check.vue | 2 + .../pages/main/order/order.vue | 1 + 11 files changed, 500 insertions(+), 12 deletions(-) create mode 100644 app/Http/Controllers/TongLianPayController.php create mode 100644 app/Http/Controllers/TonglianTestController.php diff --git a/app/Http/Controllers/TongLianPayController.php b/app/Http/Controllers/TongLianPayController.php new file mode 100644 index 0000000..af6c6ab --- /dev/null +++ b/app/Http/Controllers/TongLianPayController.php @@ -0,0 +1,223 @@ + self::$appid, + 'cusid' => self::$cusid, + 'version'=>11, + 'trxamt'=>$orderInfo['true_price'],//交易金额 + 'reqsn'=> $orderInfo['show'],//订单号 + 'paytype'=>'W06',//交易方式 W06小程序 + 'randomstr'=>bin2hex(random_bytes(32 / 2)), + 'body'=>'微信小程序体检订单',//订单标题 + 'notify_url'=>env('APP_URL') . '/api/Pay/TongLian/callback', + //'sub_appid'=>env('WX_APP_ID'), + 'acct'=>$orderInfo['openid'],//openid + 'signtype' => 'RSA', + // 'sign' => '', // 可有可无,下面会排除 + ]; + + // 商户私钥(注意:需使用 PKCS#8 格式) + $privateKey=$this->PrivatedKey(self::$key); + $sign = $this->rsaSign($data, $privateKey, 'UTF-8'); + $data['sign'] = $sign; + Log::info('支付请求参数', $data); + $response=Http::asForm()->post(self::$PayUrl,$data); + if ($response->successful()) { + $res = $response->json(); + $check=self::ValidSign($res); + if($check===1){ + $payInfo=json_decode($res['payinfo'],true); + + $wc_chat_pay = new WeChatPay(); + $wc_chat_pay->out_trade_no = $orderInfo['show']; + $wc_chat_pay->post_data = json_encode($data, JSON_UNESCAPED_UNICODE); + $wc_chat_pay->params = json_encode($payInfo, JSON_UNESCAPED_UNICODE); + $wc_chat_pay->save(); + + return $payInfo; + }else{ + Yo::error_echo(999999, ['验证接口返回签名失败']); + } + + }else{ + Yo::error_echo(999999, ['请求失败']); + } + + } + public function PayCheck($orderNumber) + { + $data = [ + 'appid' => self::$appid, + 'cusid' => self::$cusid, + 'version'=>11, + 'reqsn'=> $orderNumber,//订单号 + 'randomstr'=>bin2hex(random_bytes(32 / 2)), + 'signtype' => 'RSA', + // 'sign' => '', // 可有可无,下面会排除 + ]; + $privateKey=$this->PrivatedKey(self::$key); + $sign = $this->rsaSign($data, $privateKey, 'UTF-8'); + $data['sign'] = $sign; + $response=Http::asForm()->post(self::$PayCheckUrl,$data); + if ($response->successful()) { + $res = $response->json(); + $check=self::ValidSign($res); + if($check===1){ + return $res; + }else{ + Yo::error_echo(999999, ['验证接口返回签名失败']); + } + } + else{ + Yo::error_echo(999999, ['请求失败']); + } + } + public function CallBack($inBodyArray) + { + Log::info('通联支付回调参数:', $inBodyArray); + if(!empty($inBodyArray)){ + $check=self::ValidSign($inBodyArray); + if($check===1){ + return ['status'=>true,'body'=>$inBodyArray]; + }else{ + Log::info('通联支付回调参数,验签失败'); + return ['status'=>false,'msg'=>'验签失败']; + } + } + + } + public function Refund($orderInfo) + { + $data = [ + 'appid' => self::$appid, + 'cusid' => self::$cusid, + 'version'=>11, + 'reqsn'=> $orderInfo['show'],//订单号 + 'randomstr'=>bin2hex(random_bytes(32 / 2)), + 'trxamt'=>$orderInfo['true_price'],//交易金额 + 'oldtrxid'=>$orderInfo['transaction'],//原交易流水号 + 'signtype' => 'RSA', + // 'sign' => '', // 可有可无,下面会排除 + ]; + $privateKey=$this->PrivatedKey(self::$key); + $sign = $this->rsaSign($data, $privateKey, 'UTF-8'); + $data['sign'] = $sign; + $response=Http::asForm()->post(self::$RefundUrl,$data); + if ($response->successful()) { + $res = $response->json(); + $check=self::ValidSign($res); + if($check===1){ + return $res; + }else{ + Yo::error_echo(999999, ['退款失败,验证接口返回签名失败']); + } + }else{ + Yo::error_echo(999999, ['请求失败']); + } + } + + /** + * RSA with SHA1 签名 + * + * @param array $data 要签名的参数(自动排除空值和 sign 字段) + * @param string $privateKey RSA私钥(PEM格式) + * @param string $charset 字符编码 + * @return string Base64编码的签名值 + */ + private function rsaSign(array $data, string $privateKey, string $charset = 'UTF-8'): string + { + // 1. 过滤掉 sign 字段和空值字段 + $filtered = array_filter($data, function ($value, $key) { + return $key !== 'sign' && $value !== null && $value !== ''; + }, ARRAY_FILTER_USE_BOTH); + + // 2. 按 key 的 ASCII 升序排序 + ksort($filtered); + + // 3. 拼接成 key=value&key=value 字符串 + $stringToSign = http_build_query($filtered, '', '&', PHP_QUERY_RFC3986); + // 注意:http_build_query 默认使用 UTF-8,并且会 urlencode,但有些场景要求不 urlencode + // 如果不需要 urlencode,使用下面方式: + + // 手动拼接(不进行 urlencode) + $pairs = []; + foreach ($filtered as $key => $value) { + $pairs[] = "$key=$value"; + } + $stringToSign = implode('&', $pairs); + // 转为指定编码 + $stringToSign = mb_convert_encoding($stringToSign, $charset, 'auto'); + + // 4. 使用 openssl_sign 进行 SHA1WithRSA 签名 + $res = openssl_pkey_get_private($privateKey); + if (!$res) { + throw new \Exception('Invalid private key.'); + } + + openssl_sign($stringToSign, $signature, $res, OPENSSL_ALGO_SHA1); + openssl_free_key($res); + + // 5. Base64 编码 + return base64_encode($signature); + } + + + //验签 + public static function ValidSign(array $array){ + Log::info('验签:', $array); + $sign =$array['sign']; + unset($array['sign']); + ksort($array); + $bufSignSrc = self::ToUrlParams($array); + $public_key='MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm9OV6zH5DYH/ZnAVYHscEELdCNfNTHGuBv1nYYEY9FrOzE0/4kLl9f7Y9dkWHlc2ocDwbrFSm0Vqz0q2rJPxXUYBCQl5yW3jzuKSXif7q1yOwkFVtJXvuhf5WRy+1X5FOFoMvS7538No0RpnLzmNi3ktmiqmhpcY/1pmt20FHQQIDAQAB'; + $public_key = chunk_split($public_key , 64, "\n"); + $key = "-----BEGIN PUBLIC KEY-----\n$public_key-----END PUBLIC KEY-----\n"; + $result= openssl_verify($bufSignSrc,base64_decode($sign), $key ); + return $result; + } + public static function ToUrlParams(array $array) + { + $buff = ""; + foreach ($array as $k => $v) + { + if($v != "" && !is_array($v)){ + $buff .= $k . "=" . $v . "&"; + } + } + + $buff = trim($buff, "&"); + return $buff; + } +} diff --git a/app/Http/Controllers/TonglianTestController.php b/app/Http/Controllers/TonglianTestController.php new file mode 100644 index 0000000..5dda042 --- /dev/null +++ b/app/Http/Controllers/TonglianTestController.php @@ -0,0 +1,108 @@ + self::$appid, + 'cusid' => self::$cusid, + 'version'=>11, + 'trxamt'=>'1',//交易金额 + 'reqsn'=>'fdsfsdf' . date('YmdHis') . rand(1000, 9999),//订单号 + 'paytype'=>'W06',//交易方式 W06小程序 + 'randomstr'=>bin2hex(random_bytes(32 / 2)), + 'body'=>'微信小程序体检订单',//订单标题 + 'notify_url'=>'https://ezeys-tj.sixinyun.com', + 'sub_appid'=>env('WX_APP_ID'), + 'acct'=>'oV-6x7bN8zp2UNM3z1xbvz-EsIKQ',//openid + 'signtype' => 'RSA', + // 'sign' => '', // 可有可无,下面会排除 + ]; + + + // 商户私钥(注意:需使用 PKCS#8 格式) + // $privateKey=$this->PrivatedKey(self::$key); + + $sign = $this->Sign($data); + + $data['sign'] = $sign; + + return self::ValidSign($data); + $response=Http::Post(self::$PayUrl,$data); + if ($response->successful()) { + $res = $response->json(); + var_dump($res); + }else{ + Yo::error_echo(999999, ['请求失败']); + } + return response()->json([ + 'data' => $data, + ]); + } + public static function Sign(array $array){ + ksort($array); + $bufSignSrc = self::ToUrlParams($array); + $key="MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQCS6r706Ogi7FpYV71ccH1jwC2NZGcrWzt1Xw6rJ6+ZEeICQjUWZLPqc/D4fvh3xJPaxIqXlcA5y9xlPVO7hhoVqAKY3uPC519j6IFBxIUYC0fKWZdCpBK/kfcaqZu6ChH+hmawqfwqRjYeIGJLW2xyS8GAxQX6Uj32bZHW0xfl6Ia6lmVZ2pNpO8RS8ExhhuNc4Mm9G72+drQKfj809NNwO7fzNWa6htogszbhcf+n5pBqSzGn6j0RAnq6Eylza8GOt6LXI04KpvglPsvdCgJYK2VdezADG3XjBSdFo7ezyh0YRYVgzEWpAA1bFe6eOJPsMccetxVr/s1PwDXg3kMnAgMBAAECggEARUHpRA3ZhMETs+qkp0OWMKRjNPC8W+l1pZZqlU+vjUKrXvI0EXrmf6MpWRON8PPX2XzmcqATDovmOUmIQ/HrMQNTOhp0lyg4RSJRcJ4COfvzW1YRosYy2mEmcki7Ux+1LN3R4f04FPulPl14yNpvzI+eyCPY9hC4CgfMBM/dR7E3nU/kpesGhfwPs/prXHs9Dy/r6YG7RjSF/QANga8rVFMnQJpxSYBABRVRePtTThTZ8fTgabLpqXOihqhoBSYpt0sP5FK7cMOKJn93H4Y2UbSzcLZRdbm1vjuVILxyHe1XQ72gFbHucy1XbjQ+GKMLaHkXx9ikqjaeg5lQIWpWCQKBgQDCCLGu9p4cy8paRTykf7El0SaPYcsW8JrJqfd5USV/gKNGJ9N+mGxEo+RszD61L5Vufniupzbfepl1kCVJGQ2lqgfJe1r3RToF8PPIvq/IdBfcVpIOeIf6y/JK0OJwBnk4WwTprWIicUDW5Ju+vvddxOL2xAr+f+pZJG79PdYDfwKBgQDB1f0CE3ExhzfznQyLO7T418qXrmzSkp0qi7KS+zNWvamgHNBovqsZsS604lH6CTag8FPOuvPUaNiDFWV6lbQ7ve8Ta9xtQ6if3yNlARliHgWhM/Cy+BLTC4+1Eq2cD62ud7tFbxxcio60PVihGLsyiVSJn4X/W3QGksGSot70WQKBgQCDl9/huHJNN00aYcCaE9vxuOI89ecFvNJNmM804PrceULCjroaLoenGbwOqYqR2R6wXGe+k7tcX0p6d/NBmxMtWp6DX/y2nKWYZ+z+JY0UFuAj2DagR9B5IB5H7VjU/x7xQJGZZbSbhVGjLFIQUHV1i9Ud5KFMLzahlFsNtwVRQwKBgQCLuDvPq0QEd3uVVrccBcXFOYcHHuvCPXyclmX6HKg89im3CA4R8p5Svqz0Jc8BdHK0P4eplIj9qzWmB15GpnJsPdR/I1iYShTaaHWS8N/jIdDdChuOZdLr3YGQ/A24WHTRNez/d7/x1M5YjX+9X55QJz2QljR4hOt1cYOmt1AOwQKBgQCgb4HhAo/IRDifuXQc5SOgbM/woZ4/9Yxbdv3f9vBX9xRfcJ9deFsi513jgow6LF0+eS6rh189Ds/kXM1/wgC4dg+6rrW3x/gYXSXv6gaWTmYF0xtkS1TV/7JIu1CJmxA91aJEODEdjBQZWoFqZiQlTE1t2CuPsvTDq/HpedEJ5g=="; + $private_key = chunk_split($key , 64); + $key = "-----BEGIN RSA PRIVATE KEY-----\n".$private_key."-----END RSA PRIVATE KEY-----"; + // echo $key; + if(openssl_sign($bufSignSrc, $signature, $key )){ + // echo 'sign success'; + }else{ + echo 'sign fail'; + } + $sign = base64_encode($signature);//加密后的内容通常含有特殊字符,需要编码转换下,在网络间通过url传输时要注意base64编码是否是url安全的 +//echo $sign; +// echo $signature,"\n"; + return $sign; + + } + + + public static function ToUrlParams(array $array) + { + $buff = ""; + foreach ($array as $k => $v) + { + if($v != "" && !is_array($v)){ + $buff .= $k . "=" . $v . "&"; + } + } + + $buff = trim($buff, "&"); + return $buff; + } + + /** + * 校验签名 + * @param array 参数 + * @param unknown_type appkey + */ + + + public static function ValidSign(array $array){ + + $sign =$array['sign']; + unset($array['sign']); + ksort($array); + $bufSignSrc = self::ToUrlParams($array); + $public_key='MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCm9OV6zH5DYH/ZnAVYHscEELdCNfNTHGuBv1nYYEY9FrOzE0/4kLl9f7Y9dkWHlc2ocDwbrFSm0Vqz0q2rJPxXUYBCQl5yW3jzuKSXif7q1yOwkFVtJXvuhf5WRy+1X5FOFoMvS7538No0RpnLzmNi3ktmiqmhpcY/1pmt20FHQQIDAQAB'; + $public_key = chunk_split($public_key , 64, "\n"); + $key = "-----BEGIN PUBLIC KEY-----\n".$public_key."-----END PUBLIC KEY-----\n"; + $result= openssl_verify($bufSignSrc,base64_decode($sign), $key ); + return $result; + } +} diff --git a/app/Http/Controllers/UserOrderController.php b/app/Http/Controllers/UserOrderController.php index 1678215..b4abb58 100644 --- a/app/Http/Controllers/UserOrderController.php +++ b/app/Http/Controllers/UserOrderController.php @@ -15,6 +15,7 @@ use App\Models\WeChatPay; use App\Models\WeChatRefund; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; use Yo; use Login; use Lu; @@ -460,8 +461,48 @@ class UserOrderController extends Controller ->orderBy('id', 'desc')->get(); return Yo::echo(['list' => $list]); } - public function mp_info(Request $request) + { + Login::user(); + $id = $request->post('id'); + $order_info = UserOrder::where('id', $id) + ->where('user', Login::$info->id) + ->orderBy('id', 'desc')->first(); + if (!$order_info) Yo::error_echo(100000, ['订单']); + if ($order_info->status == 1 && $order_info->pay_type == 1) { + + $TongLianPay = new TongLianPayController(); //通联支付 + + $check = $TongLianPay->PayCheck($order_info->show); + $we_chat_pay = WeChatPay::where('out_trade_no', $order_info->show)->first(); + if (!!$we_chat_pay) { + $we_chat_pay->callback = json_encode([ + 'type' => 'auto', + 'input' => '', + 'headers' => '', + 'res' => $check, + ], JSON_UNESCAPED_UNICODE); + $we_chat_pay->save(); + } + if($check['retcode']==='SUCCESS'){ + if($check['trxstatus']=='0000'){ + $ret = self::done($order_info->id, $check['trxid']); + if ($ret == 'status') { + $order_info = UserOrder::where('id', $id) + ->where('user', Login::$info->id) + ->orderBy('id', 'desc')->first(); + } + }else{ + Yo::error_echo(999999, ['支付失败,'.$check['errmsg']]); + } + }else{ + Yo::error_echo(999999, ['支付失败,'.$check['retmsg']]); + } + + } + return Yo::echo(['info' => $order_info]); + } + public function mp_info_WeiXin(Request $request) { Login::user(); $id = $request->post('id'); @@ -541,7 +582,37 @@ class UserOrderController extends Controller if (count($res['data']) < 1) Yo::error_echo(200052); if ($res['data'][0]['当前状态'] !== '未登记') Yo::error_echo(200052); switch ($order_info->pay_type) { - case 1: + case 1://通联支付 + $hospital_extra_content = self::pay_config($order_info->hospital); + $TongLianPay= new TongLianPayController(); + $refund_date=[ + 'show' => $order_info->show, + 'true_price' => $order_info->true_price * 100, + 'transaction' => $order_info->transaction, + ]; + $tl_res = $TongLianPay->Refund($refund_date); + + $out_trade_no = $order_info->show; + $wcr = new WeChatRefund(); + $post_data = [ + 'transaction_id' => $order_info->transaction, + 'out_refund_no' => $out_trade_no, + 'total' =>(int) bcmul($order_info->true_price, '100', 0) + ]; + $wcr->out_trade_no = $out_trade_no; + $wcr->post_data = json_encode($post_data, JSON_UNESCAPED_UNICODE); + + $wcr->params = json_encode($tl_res, JSON_UNESCAPED_UNICODE); + $wcr->save(); + $err_msg= empty($tl_res['retmsg'])?' ':$tl_res['retmsg']; + if($tl_res['retcode']!=='SUCCESS') Yo::error_echo(999999, ['退款失败,'.$tl_res['retmsg']]); + if($tl_res['trxstatus']!=='0000') Yo::error_echo(999999, ['退款失败,'.$err_msg]); + $order_info->status = 5; + $order_info->refund = $wcr->id; + $order_info->refund_time = date('Y-m-d H:i:s'); + $order_info->save(); + break; + case 111111111://微信支付,暂时停用 $hospital_extra_content = self::pay_config($order_info->hospital); $wcp = new WeChatPayController(); $wcp->builder([ @@ -828,7 +899,45 @@ class UserOrderController extends Controller return Yo::echo($list); } - public function callback($id) + public function callback()//通联支付回调 + { + $params = array(); + foreach($_POST as $key=>$val) {//动态遍历获取所有收到的参数,此步非常关键,因为收银宝以后可能会加字段,动态获取可以兼容由于收银宝加字段而引起的签名异常 + $params[$key] = $val; + } + if(count($params)<1){//如果参数为空,则不进行处理 + echo "error"; + exit(); + } + $TongLianPay=new TongLianPayController(); + $res=$TongLianPay->CallBack($params); + if($res['status']){ + $order_info = UserOrder::where('show', $res['body']['cusorderid'])->first(); + if (!!$order_info and $order_info->status ==1) { + $we_chat_pay = WeChatPay::where('out_trade_no', $res['body']['cusorderid'])->first(); + if (!!$we_chat_pay) { + $we_chat_pay->callback = json_encode([ + 'type' => 'callback', + 'input' => $params, + 'headers' => [], + 'res' => $res, + ], JSON_UNESCAPED_UNICODE); + $we_chat_pay->save(); + } + if($res['body']['trxstatus']=='0000'){ + self::done($order_info->id, $res['body']['trxid']); + } + + echo "success"; + } + if (!!$order_info and $order_info->status ==2) { + echo "success"; + } + }else{ + echo "error"; + } + } + public function callback_WeiXin($id) { $input = file_get_contents('php://input'); $headers = request()->header(); @@ -906,8 +1015,36 @@ class UserOrderController extends Controller $hospital_extra_content = self::pay_config($order_info->hospital, false); $hospital_sharing_content = self::sharing_config($order_info->hospital, false); if ($pay_type == 1 && $hospital_extra_content['wxp']['open'] == 2) $pay_type = 3; + $user_account_info = UserAccount::where('user', Login::$info->id)->first(); switch ($pay_type) { case 1: + $we_chat_pay = WeChatPay::where('out_trade_no', $order_info->show)->first(); + if (!!$we_chat_pay) { + $pay = json_decode($we_chat_pay->params, true); + }else{ + $TongLianPay=new TongLianPayController(); + $data=[ + 'true_price' =>(int) bcmul($order_info->true_price, '100', 0), + 'show' => $order_info->show,//订单号 + 'openid' => $user_account_info->account, + ]; + $pay=$TongLianPay->StartPay($data); + $order_info->pay_type = 1; + $order_info->save(); + } + $pay2 = [ + 'appid' => $pay['appId'], + 'timestamp' => $pay['timeStamp'], + 'nonce_str' => $pay['nonceStr'], + 'package' => $pay['package'], + 'pay_sign' => $pay['paySign'], + 'sign_type' => $pay['signType'], + ]; + return Yo::echo([ + 'action' => 'wxp', + 'pay' => $pay2 + ]); + case 1111111111://暂时不用了,对接第三方了 $we_chat_pay = WeChatPay::where('out_trade_no', $order_info->show)->first(); if (!!$we_chat_pay) { $params = json_decode($we_chat_pay->params, true); @@ -930,7 +1067,7 @@ class UserOrderController extends Controller 'v3' => $hospital_extra_content['wxp']['v3'], ]); $out_trade_no = $order_info->show; - $user_account_info = UserAccount::where('user', Login::$info->id)->first(); + $pay = $wcp->create([ 'description' => '体检预约', 'out_trade_no' => $out_trade_no, diff --git a/app/Libraries/Lu.php b/app/Libraries/Lu.php index 82e5e93..c5a06b2 100644 --- a/app/Libraries/Lu.php +++ b/app/Libraries/Lu.php @@ -139,6 +139,18 @@ class Lu $str_len = strlen($data_str); $str_size = $str_len / 1024; if ($str_size > 40) $data_str = '{"data":"Row size too large"}'; + if (!self::$request) { + + // 如果还没有初始化,手动初始化一次 + self::CheckTableName(); // 确保表存在并创建 request 实例 + // 为所有必填字段设置值 + self::$request->request_ip = self::ip(); + self::$request->post_data = '{}'; + self::$request->get_data = json_encode($_GET, JSON_UNESCAPED_UNICODE) ?: '{}'; + self::$request->header_data = json_encode(request()->header(), JSON_UNESCAPED_UNICODE) ?: '{}'; + self::$request->request_url = explode('?', $_SERVER['REQUEST_URI'])[0] ?? ''; + + } self::$request->response_data = $data_str; self::$request->save(); } diff --git a/config/code.php b/config/code.php index dc60150..25e53bd 100644 --- a/config/code.php +++ b/config/code.php @@ -138,4 +138,6 @@ return [ 200088 => '分账名称长度在1-50位字符之间', 200089 => '分账类型不支持追回', 200090 => '该报告未出', + + 999999=>'?', ]; diff --git a/routes/web.php b/routes/web.php index b0dff0a..e091d08 100644 --- a/routes/web.php +++ b/routes/web.php @@ -21,6 +21,7 @@ Route::get('/', function () { Route::any('api/yo', \App\Http\Controllers\YoController::class); Route::post("api/In/Order/update", [\App\Http\Controllers\UserOrderController::class, 'check_order']); Route::post("api/Pay/Wxp/callback/{id}", [\App\Http\Controllers\UserOrderController::class, 'callback']); +Route::any("api/Pay/TongLian/callback", [\App\Http\Controllers\UserOrderController::class, 'callback']); Route::post("api/Test/UserOrder/done_test", [\App\Http\Controllers\UserOrderController::class, 'done_test']); Route::post("api/$admin_api/NoProfitsharing/create", [\App\Http\Controllers\NoProfitsharingController::class, 'create']); @@ -182,3 +183,5 @@ Route::post("api/$mp_api/Chat/UserChangeWorkOrder", [\App\Http\Controllers\ChatC Route::post("api/$admin_api/Get/SiXinItems", [\App\Http\Controllers\ComboItemController::class, 'GetSiXinItems']); Route::post("api/$admin_api/Get/SiXinItemsLinks", [\App\Http\Controllers\ComboItemController::class, 'GetSiXinItemsLinks']); Route::post("api/$admin_api/Bind/SiXinItemsLinks", [\App\Http\Controllers\ComboItemController::class, 'BindSiXinItemsLinks']); +Route::post("api/$mp_api/TongLianPay/StartPay", [\App\Http\Controllers\TongLianPayController::class, 'StartPay']); +Route::post("api/$mp_api/TongLianPay/StartPayTest", [\App\Http\Controllers\TonglianTestController::class, 'StartPay']); diff --git a/菏泽颐圣体检中心小程序/api/api.js b/菏泽颐圣体检中心小程序/api/api.js index a6d3916..bacbf2a 100644 --- a/菏泽颐圣体检中心小程序/api/api.js +++ b/菏泽颐圣体检中心小程序/api/api.js @@ -1,9 +1,9 @@ -let url_ = "https://zwrmyy.sixinyun.com"; -let report_url_ = "https://zwrmyy.sixinyun.com"; -let h5_url_ = "https://zwrmyy.sixinyun.com"; +let url_ = "https://hezeys-tj.sixinyun.com"; +let report_url_ = "https://hezeys-tj.sixinyun.com"; +let h5_url_ = "https://hezeys-tj.sixinyun.com"; const dev = 0; if (dev === 1) { - url_ = "http://sixintijian"; + url_ = "http://hezeshengyilocal"; report_url_ = "http://192.168.31.106:5173"; h5_url_ = "http://192.168.31.106:5173"; } diff --git a/菏泽颐圣体检中心小程序/api/index.js b/菏泽颐圣体检中心小程序/api/index.js index 340b2bc..9f64674 100644 --- a/菏泽颐圣体检中心小程序/api/index.js +++ b/菏泽颐圣体检中心小程序/api/index.js @@ -2,11 +2,11 @@ import { $post } from '@/lu/axios.js' import $api from './api.js' -let url_ = "https://zwrmyy.sixinyun.com"; -let chat_url = "https://zwrmyy.sixinyun.com" +let url_ = "https://hezeys-tj.sixinyun.com"; +let chat_url = "https://hezeys-tj.sixinyun.com" const dev =0 if (dev === 1) { - url_ = "http://sixintijian" + url_ = "http://hezeshengyilocal" chat_url = "http://192.168.31.106:5173" } export const ReportUrl = (data) => { diff --git a/菏泽颐圣体检中心小程序/manifest.json b/菏泽颐圣体检中心小程序/manifest.json index bd51b12..95eeeeb 100644 --- a/菏泽颐圣体检中心小程序/manifest.json +++ b/菏泽颐圣体检中心小程序/manifest.json @@ -49,7 +49,7 @@ "quickapp" : {}, /* 快应用特有相关 */ "mp-weixin" : { - "appid" : "wx2114ce1ee657d087", + "appid" : "wx4bd2065274ee4967", "setting" : { "urlCheck" : false }, diff --git a/菏泽颐圣体检中心小程序/pages/buy/check/check.vue b/菏泽颐圣体检中心小程序/pages/buy/check/check.vue index 714c940..5793a75 100644 --- a/菏泽颐圣体检中心小程序/pages/buy/check/check.vue +++ b/菏泽颐圣体检中心小程序/pages/buy/check/check.vue @@ -62,6 +62,7 @@ pay_type: 1 }) $response(response, () => { + console.log(response); wx.requestPayment({ timeStamp: response.data.pay.timestamp, nonceStr: response.data.pay.nonce_str, @@ -75,6 +76,7 @@ url: `/pages/buy/done/done?id=${order}` }) } else { + console.log(res.errMsg); uni.reLaunch({ url: '/pages/main/order/order' }) diff --git a/菏泽颐圣体检中心小程序/pages/main/order/order.vue b/菏泽颐圣体检中心小程序/pages/main/order/order.vue index 10fdb04..38f190a 100644 --- a/菏泽颐圣体检中心小程序/pages/main/order/order.vue +++ b/菏泽颐圣体检中心小程序/pages/main/order/order.vue @@ -95,6 +95,7 @@ url: `/pages/buy/done/done?id=${order}` }) } else { + console.log(res.errMsg); OrderList() } }