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