diff --git a/Laravel/app/Http/Controllers/API/H5/HomeController.php b/Laravel/app/Http/Controllers/API/H5/HomeController.php index 88e8f35..1f1732d 100644 --- a/Laravel/app/Http/Controllers/API/H5/HomeController.php +++ b/Laravel/app/Http/Controllers/API/H5/HomeController.php @@ -23,7 +23,7 @@ class HomeController extends Controller public function config() { $hospitals = DB::table('hospitals') - ->select("id", "name", "latitude", "longitude", "logo") + ->select("id", "name", "latitude", "longitude", "logo","address") ->where(['status' => 1, 'is_del' => 0])->get(); if (count($hospitals) < 1) return \Yz::echoError1('暂无可用医院信息'); $db_config = DB::table('configs')->whereIn('label', ['首页欢迎词', '首页banner'])->get(); @@ -49,7 +49,7 @@ class HomeController extends Controller ], [ 'message' => '', 'name' => '单位体检预约', - 'jump' => '/pages/main/cjwt/cjwt', + 'jump' => '/pages/main/optionalProject/choose', 'icon' => '/assets/h5/tuanjianyuyue.png' ]], 'button' => [[[ diff --git a/Laravel/app/Http/Controllers/API/H5/PayController.php b/Laravel/app/Http/Controllers/API/H5/PayController.php index 67d047a..aa6d39a 100644 --- a/Laravel/app/Http/Controllers/API/H5/PayController.php +++ b/Laravel/app/Http/Controllers/API/H5/PayController.php @@ -103,6 +103,7 @@ class PayController extends Controller 'orderid'=>$orderInfo->order_number, 'refund_order_id'=>'T'.$orderInfo->order_number, 'refund_amount'=>(int)($orderInfo->true_price * 100), + 'refund_reason'=>"体检H5订单退款", ]; $XCX = new XCXApiController(); $res = $XCX::Post('订单退款', $data); diff --git a/Laravel/app/Http/Controllers/API/H5/UserController.php b/Laravel/app/Http/Controllers/API/H5/UserController.php index c9cc7d7..ffeba92 100644 --- a/Laravel/app/Http/Controllers/API/H5/UserController.php +++ b/Laravel/app/Http/Controllers/API/H5/UserController.php @@ -36,6 +36,8 @@ class UserController extends Controller $info = [ 'name' => isset($default_person->name)? $default_person->name:null, 'sex' => isset($default_person->sex)?$default_person->sex:null, + 'phone'=>$default_person->phone, + 'id_number'=>$default_person->id_number, 'count' => $count, 'openid' => $openid, ]; @@ -98,6 +100,16 @@ class UserController extends Controller } + public function tttt(){ + $XCX=new XCXApiController(); + $data=[ + 'wxid'=>'oosgJj-SVIxTrm_g1p213tsSHK5g' + ]; + $res=$XCX::Post('就诊人列表',$data); + $ApiPersonList=$res['data']; + // dd($ApiPersonList[0]); + $XCX::XCXDecode($ApiPersonList[0]['idNumber']); +} //更新用户列表,调用远程小程序接口 public function UpdatePersonList($openid) { @@ -105,26 +117,28 @@ class UserController extends Controller $data=[ 'wxid'=>$openid ]; - $list=$XCX::Post('就诊人列表',$data); +// $res=$XCX::Post('就诊人列表',$data); +// $ApiPersonList=$res['data']; + // dd($ApiPersonList); $ApiPersonList = [ [ 'ghzid' => 'ghz11', - 'id_number'=>'15210219920524154X', + 'idNumber'=>'15210219920524154X', 'name' => '周京京', 'phone' => '11111111111', 'sex' => '1', 'birthday' => '1989-01-01', - 'patient_type' => '0', + 'patientType' => '0', 'marriage' => '1', ], [ 'ghzid' => 'ghz22', - 'id_number'=>'1132112432432', + 'idNumber'=>'460026199002190013', 'name' => '测试2', 'phone' => '222222222', 'sex' => '1', 'birthday' => '1990-01-01', - 'patient_type' => '1', + 'patientType' => '1', 'marriage' => '1', ] ]; @@ -145,16 +159,23 @@ class UserController extends Controller $onlyInApi = array_diff($api_person_ghzids, $db_person_ghzids); $success_count=0; foreach ($ApiPersonList as $apiperson) { + $marriage=0; + if($apiperson['marriage']=='未婚'){ + $marriage=2; + } + if($apiperson['marriage']=='已婚'){ + $marriage=1; + } $personInfo = [ 'ghzid' => $apiperson['ghzid'], - 'id_number' => $apiperson['id_number'], + 'id_number' => $apiperson['idNumber'], 'name' => $apiperson['name'], 'birthday' => $apiperson['birthday'], 'sex' => $apiperson['sex'], - 'phone' => $apiperson['phone'], - 'married' => $apiperson['marriage'], + 'phone' => $apiperson['phone'], + 'married' =>$marriage, 'user_id' => $user->id, - 'patient_type' => $apiperson['patient_type'], + 'patient_type' => $apiperson['patientType'], 'updated_at'=>date('Y-m-d H:i:s') ]; if (in_array($apiperson['ghzid'], $intersection)) {//双方都有的,更新 diff --git a/Laravel/app/Http/Controllers/API/XCXApiController.php b/Laravel/app/Http/Controllers/API/XCXApiController.php index c41ba20..6599bd2 100644 --- a/Laravel/app/Http/Controllers/API/XCXApiController.php +++ b/Laravel/app/Http/Controllers/API/XCXApiController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\API; use App\Http\Controllers\Controller; use Illuminate\Database\Schema\Blueprint; +use Illuminate\Http\Exceptions\HttpResponseException; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Http; @@ -28,16 +29,17 @@ class XCXApiController extends Controller public static function Post($url_code, $data) { + $url_address = self::Api($url_code); - self::RequestLog(self::$baseUrl.$url_address, $data, $url_code, '小程序接口'); + self::RequestLog(self::$baseUrl . $url_address, $data, $url_code, '小程序接口'); $timestamp = time(); $nonce = md5(uniqid(rand(), true)); - $base64Signature = self::Sign( $url_address, $data, $nonce, $timestamp); + $base64Signature = self::Sign($url_address, $data, $nonce, $timestamp); $response = Http::withHeaders([ 'Authorization' => self::BuildAuthorization($nonce, $timestamp, $base64Signature) - ])->post(self::$baseUrl.$url_address, $data); + ])->post(self::$baseUrl . $url_address, $data); - // dd($response); + // dd(self::BuildAuthorization($nonce, $timestamp, $base64Signature)); if ($response->successful()) { // 处理成功的响应 $res_string = json_encode($response->json(), JSON_UNESCAPED_UNICODE); @@ -48,11 +50,21 @@ class XCXApiController extends Controller if ($str_size > 10) $save_res = '{"data":"Row size too large"}'; self::$request->response_data = $save_res; self::$request->save(); - } else { + $res = json_decode($res_string, true); + if (!$res['success']) { + throw new HttpResponseException(\Yz::echoError1("小程序接口提示:" . $res['message'])); + } + return [ + 'code' => $res['code'], + 'message' => $res['message'], + 'data' => $res['result'] + ]; + } else { // 处理失败的响应 - self::$request->response_data = "请求失败"; + self::$request->response_data = "请求小程序接口失败"; self::$request->save(); + throw new HttpResponseException(\Yz::echoError1("请求小程序接口失败")); } } @@ -105,35 +117,35 @@ class XCXApiController extends Controller } //计算签名和 Authorization - public static function Sign($url, $data, $nonce, $timestamp,$is_urlencode=false) + public static function Sign($url, $data, $nonce, $timestamp, $is_urlencode = false) { $body = self::buildSortedQueryString($data); $method = 'POST'; - // $method = 'POST'; - // $url = '/jeecg-boot/hospital/openapi/archive/list'; - // $timestamp = "1726880312"; - // $nonce = '88e5928d0c34aa0e9cb0bade72f83a67'; - // $body = 'wxid=oosgJj-SVIxTrm_g1p213tsSHK5g'; + // $method = 'POST'; + // $url = '/jeecg-boot/hospital/openapi/archive/list'; + // $timestamp = "1726880312"; + // $nonce = '88e5928d0c34aa0e9cb0bade72f83a67'; + // $body = 'wxid=oosgJj-SVIxTrm_g1p213tsSHK5g'; $private_key = Storage::get('keys/private_key.pem'); $SignStr = $method . "\n" . $url . "\n" . $timestamp . "\n" . $nonce . "\n" . - $body; -//dd($SignStr); + urldecode($body) . "\n"; + // 使用私钥进行 RSA 签名 openssl_sign($SignStr, $signature, $private_key, OPENSSL_ALGO_SHA256); - if($is_urlencode){ - $signature= urlencode($signature); + if ($is_urlencode) { + $signature = urlencode($signature); } // 对签名结果进行 Base64 编码 $base64Signature = base64_encode($signature); - // dd($base64Signature); + // dd($SignStr,$base64Signature); return $base64Signature; } @@ -146,5 +158,21 @@ class XCXApiController extends Controller return self::$signType . ' ' . $signInfo; } + //解密 + public static function XCXDecode($str) + { + $private_key = Storage::get('keys/private_key.pem'); + $str = "mZd4Nds9jyKxGfjId+eQAQ3WBMZbjEZg4Plq2Qz62W+AZvcDCAjkOL8VRAxNWXTwsrCNkMf07tMoY1NPzPgob00SfOJwVeM7SxqwH4PWKqkm5+Rg4g+eciepst66ToPI2ArgZutnb3XlcOqF8Mzlvz53GgDe/6VFQDaFATj1DOrEMyPgF85FY18lHWH5HKC1ctOMC/FTwTISJ0QPMSpYiBu8hWr4mTkYzY5nFkxv+M4q30IeAvJocCuIFnEa8t8iU6cvixe0HJofLug7fJJb8PEwPhJRMIocME1knETKszhI7YgSBj9RlBkwzLhtG2RCCZbHiK4UOK7HrvthXyJI/A=="; + $str = base64_decode($str); + // dd($str); + if (openssl_private_decrypt($str, $decryptedData, $private_key, OPENSSL_PKCS1_OAEP_PADDING)) { + dd($decryptedData); + return $decryptedData; + + } else { + throw new HttpResponseException(\Yz::echoError1("解密数据失败")); + } + } + } diff --git a/Laravel/routes/web.php b/Laravel/routes/web.php index 95f20f8..1a5a86a 100644 --- a/Laravel/routes/web.php +++ b/Laravel/routes/web.php @@ -68,6 +68,8 @@ Route::group(['prefix' => 'api/H5'], function () { //测试---------------------------- Route::post('/Finish_test', 'App\Http\Controllers\API\H5\OrderController@Finish_test');//测试 + Route::post('/tttt', 'App\Http\Controllers\API\H5\UserController@tttt');//测试 + }); diff --git a/h5/pages/main/index/index.vue b/h5/pages/main/index/index.vue index 4281eb3..28ad8cd 100644 --- a/h5/pages/main/index/index.vue +++ b/h5/pages/main/index/index.vue @@ -15,6 +15,7 @@ import { onShow } from '@dcloudio/uni-app' + import wx from 'weixin-js-sdk' import { useStore } from '@/store' @@ -186,6 +187,15 @@ } } } + const OpenMap=()=>{ + console.log($store.config.hospital[0]); + let hospital=$store.config.hospital[0]; + let p='&longitude='+hospital.longitude+'&latitude='+hospital.latitude+'&name='+hospital.name+'&address='+hospital.address+'&scale=16'+'&type=gcj02' + console.log(p); + wx.miniProgram.navigateTo({ + url: '/pages/other/entry/index?path=/pages/physical-examination/location/index'+p + }) + }; onShow(() => { if (!!user_box_ref.value) { @@ -206,7 +216,7 @@ - {{ hospital_info.name }} + {{ hospital_info.name }} {{ hospital_info.long }}km diff --git a/h5/pages/main/order/CheckPay.vue b/h5/pages/main/order/CheckPay.vue index 2b7a593..b72a87f 100644 --- a/h5/pages/main/order/CheckPay.vue +++ b/h5/pages/main/order/CheckPay.vue @@ -26,7 +26,7 @@ }) uni.hideLoading() $response(response, () => { - + console.log(response); }) } onLoad((option) => { diff --git a/h5/pages/main/order/src/order.vue b/h5/pages/main/order/src/order.vue index a6a4fe5..464b11e 100644 --- a/h5/pages/main/order/src/order.vue +++ b/h5/pages/main/order/src/order.vue @@ -51,6 +51,17 @@ order_info.value.status = 3 } } + const StartPay=async(id)=>{//继续支付 + uni.showLoading() + const response = await $api('StartPay' ,{ + openid: localStorage.getItem('OPENID'), + id: id, + }) + uni.hideLoading() + $response(response, () => { + order_list.value = response.data.list + }) + } onMounted(() => { deepInfo() @@ -117,7 +128,7 @@ - 继续付款 + 继续付款 改约 退款