From 94ff46df856f6d4f8d8393e22001351c793f4e5b Mon Sep 17 00:00:00 2001 From: wzp <2040239371@qq.com> Date: 星期一, 05 五月 2025 16:44:36 +0800 Subject: [PATCH] feat: 新增payInfo测试和部分优化appsecret --- ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java | 14 +- ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderSign.java | 22 ++-- ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java | 25 ++++++ ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderUtil.java | 14 +- ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml | 10 ++ ruoyi-ui/src/views/system/clientApp/index.vue | 14 ++ ruoyi-ui/src/router/index.js | 6 + ruoyi-ui/src/views/system/payInfoTest/index.vue | 78 +++++++++++++++++++ 9 files changed, 155 insertions(+), 30 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java index 5f0b743..716e251 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/TbOrdersController.java @@ -130,12 +130,12 @@ model.setCondition(tbOrders.getRemark()); // 璁剧疆澶囨敞淇℃伅 // model.setDoctor("鍖荤敓" + (int) (Math.random() * 10)); // 闅忔満璁剧疆鎮h�呭尰鐢� // model.setDoctorPhone("13" + (int) (Math.random() * 900000000 + 100000000)); // 闅忔満鐢熸垚鎮h�呭尰鐢熺數璇� - model.setOfferPrice(tbOrders.getBookingPrice().doubleValue()); // 闅忔満鐢熸垚鎶ヤ环 + model.setOfferPrice(tbOrders.getBookingPrice().doubleValue()); // 鐢熸垚鎶ヤ环 // model.setReferrals("鎺ㄤ粙浜�" + (int) (Math.random() * 10)); // 闅忔満璁剧疆鎺ㄤ粙浜轰俊鎭� // model.setUnitRemarks("鍟嗘埛闅忔満澶囨敞淇℃伅"); // 闅忔満璁剧疆鍟嗘埛澶囨敞 -// model.setPayQRcodeURL("https://example.com/qrcode/" + (int) (Math.random() * 100)); // 闅忔満鐢熸垚澶栭儴鏀粯浜岀淮鐮侀摼鎺� + model.setPayQRcodeURL(scApp.getPayUrl()); - ServiceOrderAppResultVo result = ServiceOrderUtil.CreateServiceOrder(model); + ServiceOrderAppResultVo result = ServiceOrderUtil.CreateServiceOrder(model,scApp.getMinAppSecret()); if (result.getResult() == 1) { tbOrders.setOrderID(tbOrders.getOrderID()); @@ -168,7 +168,7 @@ return AjaxResult.error("璁㈠崟鐘舵�佸凡鍙栨秷"); } - SysClientApp scApp = clientAppService.selectSysClientAppByAppId(1L); + SysClientApp scApp = clientAppService.selectSysClientAppByAppKey("appId1"); ServiceOrderAppVo model = new ServiceOrderAppVo(); @@ -197,9 +197,9 @@ model.setOfferPrice(tbOrders.getBookingPrice().doubleValue()); // 鎶ヤ环 // model.setReferrals("鎺ㄤ粙浜�")); // 璁剧疆鎺ㄤ粙浜轰俊鎭�--娌℃湁鎺ㄤ粙浜轰俊鎭� // model.setUnitRemarks("鍟嗘埛澶囨敞淇℃伅"); // 璁剧疆鍟嗘埛澶囨敞--娌℃湁鍟嗘埛澶囨敞 -// model.setPayQRcodeURL("https://example.com/qrcode/")); // 澶栭儴鏀粯浜岀淮鐮侀摼鎺�--鐢ㄤ笉鍒� + model.setPayQRcodeURL(scApp.getPayUrl()); - ServiceOrderAppResultVo result = ServiceOrderUtil.CreateServiceOrder(model); + ServiceOrderAppResultVo result = ServiceOrderUtil.CreateServiceOrder(model,scApp.getMinAppSecret()); if (result.getResult() == 1) { tbOrders.setOrderID(tbOrders.getOrderID()); @@ -235,7 +235,7 @@ model.setServiceOrdID(cancelVo.getThirdOrderNo()); // 璁剧疆绗笁鏂硅鍗曞彿 model.setDELRemarks(cancelVo.getReason()); // 璁剧疆鍙栨秷鍘熷洜 - ServiceOrderAppResultVo result = ServiceOrderUtil.CancelServiceOrder(model); + ServiceOrderAppResultVo result = ServiceOrderUtil.CancelServiceOrder(model,scApp.getMinAppSecret()); if (result.getResult() == 1) { // 鏇存柊鏈湴璁㈠崟鐘舵�� diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderSign.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderSign.java index fd03165..9dc2790 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderSign.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderSign.java @@ -10,7 +10,6 @@ private static final int BITS_TO_A_BYTE = 8; private static final int BYTES_TO_A_WORD = 4; private static final int BITS_TO_A_WORD = 32; - private static final String APP_SECRET = "JR6o8RQItoa2bzlneOCQ"; private static final long[] m_lOnBits = new long[31]; private static final long[] m_l2Power = new long[31]; @@ -280,7 +279,7 @@ * @param params 璇锋眰鍙傛暟闆嗗悎 * @return 绛惧悕鍊� */ - public static String generateSign(Map<String, String> params) { + public static String generateSign(Map<String, String> params,String APP_SECRET) { // 1. 绉婚櫎sign鍙傛暟 params.remove("sign"); params.remove("Sign"); @@ -331,8 +330,9 @@ * @return 楠岃瘉缁撴灉 */ public static boolean verifySign(Map<String, String> params, String sign) { - String generatedSign = generateSign(params); - return generatedSign.equalsIgnoreCase(sign); +// String generatedSign = generateSign(params); +// return generatedSign.equalsIgnoreCase(sign); + return false; } /** @@ -340,13 +340,13 @@ */ public static void main(String[] args) { // 娴嬭瘯鐢ㄤ緥 - Map<String, String> params = new HashMap<>(); - params.put("method", "User_Login"); - params.put("LoginType", "0"); - params.put("UserID", "10"); - - String sign = generateSign(params); - System.out.println("鐢熸垚鐨勭鍚�: " + sign); +// Map<String, String> params = new HashMap<>(); +// params.put("method", "User_Login"); +// params.put("LoginType", "0"); +// params.put("UserID", "10"); +// +// String sign = generateSign(params); +// System.out.println("鐢熸垚鐨勭鍚�: " + sign); // 搴旇緭鍑�: 9a0a8659f005d6984697e2ca0a9cf3b7 } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderUtil.java index e0bafdf..4e7498f 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/civilAviation/ServiceOrderUtil.java @@ -29,7 +29,7 @@ * @param model 鏈嶅姟鍗曞簲鐢ㄥ�煎璞� * @return 鏈嶅姟鍗曟帴鍙h皟鐢ㄧ粨鏋� */ - public static ServiceOrderAppResultVo CreateServiceOrder(ServiceOrderAppVo model) { + public static ServiceOrderAppResultVo CreateServiceOrder(ServiceOrderAppVo model,String appSecret) { if (AddServiceOrederAPI.isEmpty()) { // log.info("AddServiceOrederAPI 鏈缃紝璇峰厛璁剧疆鎺ュ彛鍦板潃銆�"); return null; @@ -54,7 +54,7 @@ } } - model.setSign(ServiceOrderSign.generateSign(params)); // 鐢熸垚绛惧悕骞惰缃埌妯″瀷涓� + model.setSign(ServiceOrderSign.generateSign(params,appSecret)); // 鐢熸垚绛惧悕骞惰缃埌妯″瀷涓� // 鏇挎崲涓� @@ -105,7 +105,7 @@ * @param model 鏈嶅姟璁㈠崟鍒犻櫎璇锋眰鍊煎璞� * @return 鏈嶅姟璁㈠崟鍒犻櫎鎺ュ彛璋冪敤缁撴灉 */ - public static ServiceOrderAppResultVo CancelServiceOrder(ServiceOrderDelVo model) { + public static ServiceOrderAppResultVo CancelServiceOrder(ServiceOrderDelVo model,String appSecret) { if (AddServiceOrederAPI.isEmpty()) { // log.info("AddServiceOrederAPI 鏈缃紝璇峰厛璁剧疆鎺ュ彛鍦板潃銆�"); return null; @@ -130,7 +130,7 @@ } } - model.setSign(ServiceOrderSign.generateSign(params)); + model.setSign(ServiceOrderSign.generateSign(params,appSecret)); // 鏋勫缓琛ㄥ崟鏁版嵁 StringBuilder formData = new StringBuilder(); @@ -188,8 +188,8 @@ model.setDELRemarks("娴嬭瘯"); // 璋冪敤 CancelServiceOrder 鏂规硶鍙栨秷鏈嶅姟鍗� - ServiceOrderAppResultVo result = CancelServiceOrder(model); - System.out.println("1"); +// ServiceOrderAppResultVo result = CancelServiceOrder(model); +// System.out.println("1"); } public static void test() @@ -224,7 +224,7 @@ model.setPayQRcodeURL("https://example.com/qrcode/" + (int) (Math.random() * 100)); // 闅忔満鐢熸垚澶栭儴鏀粯浜岀淮鐮侀摼鎺� // 璋冪敤 CreateServiceOrder 鏂规硶鍒涘缓鏈嶅姟鍗� - ServiceOrderAppResultVo result = CreateServiceOrder(model); +// ServiceOrderAppResultVo result = CreateServiceOrder(model); } } diff --git a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java index 10363e2..e187354 100644 --- a/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java +++ b/ruoyi-quartz/src/main/java/com/ruoyi/quartz/task/RyTask.java @@ -111,7 +111,7 @@ log.error("鑾峰彇璋冨害鍗曞紓甯革細"+e.getMessage()); } - SysClientApp clientApp = sysClientAppService.selectSysClientAppByAppId(1L); + SysClientApp clientApp = sysClientAppService.selectSysClientAppByAppKey("appId1"); if(clientApp==null){ log.error("鍥炶皟鍦板潃涓嶅瓨鍦�"); return; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java index 78c4a8e..4c6536b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/SysClientApp.java @@ -51,11 +51,20 @@ @Excel(name = "min_app_id") private String minAppId; + /** min_app_secret */ + @Excel(name = "min_app_secret") + private String minAppSecret; + + /** 鍥炶皟鍦板潃 */ @Excel(name = "鍥炶皟鍦板潃") private String callbackUrl; + + /** 鏀粯鍦板潃 */ + @Excel(name = "鏀粯鍦板潃") + private String payUrl; public Long getAppId() { @@ -138,6 +147,22 @@ this.callbackUrl = callbackUrl; } + public String getPayUrl() { + return payUrl; + } + + public void setPayUrl(String payUrl) { + this.payUrl = payUrl; + } + + public String getMinAppSecret() { + return minAppSecret; + } + + public void setMinAppSecret(String minAppSecret) { + this.minAppSecret = minAppSecret; + } + @Override public String toString() { return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE) diff --git a/ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml index 647484c..b9cc0f2 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysClientAppMapper.xml @@ -19,11 +19,13 @@ <result property="updateTime" column="update_time" /> <result property="remark" column="remark" /> <result property="minAppId" column="min_app_id" /> + <result property="minAppSecret" column="min_app_secret" /> <result property="callbackUrl" column="callback_url" /> + <result property="payUrl" column="pay_url" /> </resultMap> <sql id="selectSysClientAppVo"> - select app_id, client_name, app_key, security_key, valid_start_time, valid_end_time, status, del_flag, create_by, create_time, update_by, update_time, remark, min_app_id, callback_url from sys_client_app + select app_id, client_name, app_key, security_key, valid_start_time, valid_end_time, status, del_flag, create_by, create_time, update_by, update_time, remark, min_app_id, min_app_secret, callback_url, pay_url from sys_client_app </sql> <select id="selectSysClientAppList" parameterType="SysClientApp" resultMap="SysClientAppResult"> @@ -63,7 +65,9 @@ <if test="updateTime != null">update_time,</if> <if test="remark != null">remark,</if> <if test="minAppId != null">min_app_id,</if> + <if test="minAppSecret != null">min_app_secret,</if> <if test="callbackUrl != null">callback_url,</if> + <if test="payUrl != null">pay_url,</if> </trim> <trim prefix="values (" suffix=")" suffixOverrides=","> <if test="clientName != null">#{clientName},</if> @@ -79,7 +83,9 @@ <if test="updateTime != null">#{updateTime},</if> <if test="remark != null">#{remark},</if> <if test="minAppId != null">#{minAppId},</if> + <if test="minAppSecret != null">#{minAppSecret},</if> <if test="callbackUrl != null">#{callbackUrl},</if> + <if test="payUrl != null">#{payUrl},</if> </trim> </insert> @@ -94,7 +100,9 @@ <if test="status != null and status != ''">status = #{status},</if> <if test="remark != null">remark = #{remark},</if> <if test="minAppId != null">min_app_id = #{minAppId},</if> + <if test="minAppSecret != null">min_app_secret = #{minAppSecret},</if> <if test="callbackUrl != null">callback_url = #{callbackUrl},</if> + <if test="payUrl != null">pay_url = #{payUrl},</if> <if test="updateBy != null">update_by = #{updateBy},</if> update_time = sysdate() </set> diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 3826ac3..8f09ae1 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -111,6 +111,12 @@ component: () => import('@/views/system/gps/map'), name: 'GpsMap', meta: { title: '杞﹁締杞ㄨ抗', icon: 'map' ,anonymous: true} + }, + { + path: '/payInfoTest', + component: (resolve) => require(['@/views/system/payInfoTest/index'], resolve), + hidden: true, + meta: { title: '鏀粯淇℃伅娴嬭瘯', anonymous: true } } ] diff --git a/ruoyi-ui/src/views/system/clientApp/index.vue b/ruoyi-ui/src/views/system/clientApp/index.vue index ee47357..faea463 100644 --- a/ruoyi-ui/src/views/system/clientApp/index.vue +++ b/ruoyi-ui/src/views/system/clientApp/index.vue @@ -102,8 +102,10 @@ <dict-tag :options="dict.type.sys_normal_disable" :value="scope.row.status"/> </template> </el-table-column> - <el-table-column label="姘戣埅鍒嗗叕鍙窱d" align="center" prop="minAppId" /> + <el-table-column label="姘戣埅鍚堜綔鍏徃Id" align="center" prop="minAppId" /> + <el-table-column label="姘戣埅鍚堜綔鍏徃瀵嗛挜" align="center" prop="minAppSecret" /> <el-table-column label="鍥炶皟鍦板潃" align="center" prop="callbackUrl" /> + <el-table-column label="鏀粯鍦板潃" align="center" prop="payUrl" /> <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> <template slot-scope="scope"> <el-button @@ -164,12 +166,18 @@ >{{dict.label}}</el-radio> </el-radio-group> </el-form-item> - <el-form-item label="姘戣埅鍒嗗叕鍙窱d" prop="minAppId"> - <el-input v-model="form.minAppId" placeholder="璇疯緭鍏ユ皯鑸垎鍏徃Id" /> + <el-form-item label="姘戣埅鍚堜綔鍏徃Id" prop="minAppId"> + <el-input v-model="form.minAppId" placeholder="璇疯緭鍏ユ皯鑸悎浣滃叕鍙窱d" /> + </el-form-item> + <el-form-item label="姘戣埅鍚堜綔鍏徃瀵嗛挜" prop="minAppSecret"> + <el-input v-model="form.minAppSecret" placeholder="璇疯緭鍏ユ皯鑸悎浣滃叕鍙稿瘑閽�" /> </el-form-item> <el-form-item label="鍥炶皟鍦板潃" prop="callbackUrl"> <el-input v-model="form.callbackUrl" placeholder="璇疯緭鍏ュ洖璋冨湴鍧�" /> </el-form-item> + <el-form-item label="鏀粯鍦板潃" prop="payUrl"> + <el-input v-model="form.payUrl" placeholder="璇疯緭鍏ユ敮浠樺湴鍧�" /> + </el-form-item> <el-form-item label="澶囨敞" prop="remark"> <el-input v-model="form.remark" type="textarea" placeholder="璇疯緭鍏ュ唴瀹�" /> </el-form-item> diff --git a/ruoyi-ui/src/views/system/payInfoTest/index.vue b/ruoyi-ui/src/views/system/payInfoTest/index.vue new file mode 100644 index 0000000..8bbcb4d --- /dev/null +++ b/ruoyi-ui/src/views/system/payInfoTest/index.vue @@ -0,0 +1,78 @@ +<template> + <div class="app-container"> + <div v-if="!validated" class="loading-container"> + <el-alert + :title="errorMessage || '姝e湪鍔犺浇鏀粯鏁版嵁...'" + :type="errorMessage ? 'error' : 'info'" + :closable="false" + show-icon> + </el-alert> + </div> + <div v-else> + <el-card class="box-card"> + <div slot="header" class="clearfix"> + <span>鏀粯淇℃伅璇︽儏</span> + </div> + <el-descriptions :column="1" border> + <el-descriptions-item label="鏀粯閲戦"> + {{ payAmount }} 鍏� + </el-descriptions-item> + <el-descriptions-item label="璁㈠崟鍙�"> + {{ orderNo }} + </el-descriptions-item> + <el-descriptions-item label="浜ゆ槗娴佹按鍙�"> + {{ transactionNo }} + </el-descriptions-item> + </el-descriptions> + </el-card> + </div> + </div> +</template> + +<script> +export default { + name: 'PayInfoTest', + data() { + return { + validated: false, + errorMessage: '', + payAmount: '', + orderNo: '', + transactionNo: '' + } + }, + created() { + this.initData(); + }, + methods: { + initData() { + // 浠嶶RL鍙傛暟涓幏鍙栨暟鎹� + const query = this.$route.query; + if (!query.payAmount || !query.orderNo || !query.transactionNo) { + this.errorMessage = '缂哄皯蹇呰鐨勫弬鏁颁俊鎭�'; + return; + } + + // 璁剧疆鏁版嵁 + this.payAmount = query.payAmount; + this.orderNo = query.orderNo; + this.transactionNo = query.transactionNo; + + // 妯℃嫙鍔犺浇寤惰繜 + setTimeout(() => { + this.validated = true; + }, 500); + } + } +} +</script> + +<style scoped> +.loading-container { + margin: 20px; + text-align: center; +} +.box-card { + margin: 20px; +} +</style> -- Gitblit v1.9.1