diff --git a/fuintAdmin_zt/src/views/components/Service/payment.vue b/fuintAdmin_zt/src/views/components/Service/payment.vue index 12248b710..b12eb6f52 100644 --- a/fuintAdmin_zt/src/views/components/Service/payment.vue +++ b/fuintAdmin_zt/src/views/components/Service/payment.vue @@ -330,7 +330,7 @@ export default { if (res.data===1){ this.$modal.msgSuccess("修改成功") this.getList() - this.show = false + this.dialogVisible = false } }) }else { diff --git a/fuintAdmin_zt/src/views/components/Service/staff.vue b/fuintAdmin_zt/src/views/components/Service/staff.vue index 99b3dfd6f..cf381e1a0 100644 --- a/fuintAdmin_zt/src/views/components/Service/staff.vue +++ b/fuintAdmin_zt/src/views/components/Service/staff.vue @@ -59,38 +59,24 @@ - - - - - - - - + - - - + - - - + + + + + - - - + + + + + @@ -143,21 +127,6 @@ - - - - - - - - - - - - - - - @@ -169,68 +138,22 @@ + + - - + + + + - - - - - - - - - - - - - - - - - - - - - 特殊权限 - - - - @@ -253,48 +176,6 @@ - - - - - -
- -
启用后,当前账户登录POS端后油品收银必选加油员才可进行
下步操作(需系统开启加油选择加油员功能)
- 启用后,当前账户登录POS端后油... -
-
-
- - - - - -
- -
交易订单显示信息、终端支持:(PC、
POS、小程序)
- 交易订单显示信息、终端支持:(PC... -
-
-
-
- @@ -315,182 +196,8 @@ - - - - - -
- 多选,已选油枪号的交易将发送模板消息 -
-
- - - - - -
- -
当前账户下可查看交易的时间范围(PC、
POS端)
- 当前账户下可查看交易的时间范... -
-
-
- - - - - -
- 根据需求自行选择模式 -
-
- - - - - -
- -
若无权限,则无法查看交班统计信息和
进行交班操作
- 若无权限,则无法查看交班统计... -
-
-
- - - - - -
- 进行交班处理后是否退出当前账户 -
-
-
- - - - - - -
- -
全部记录:查看所有员工交班记录,名下
记录:员工自己名下记录(需有交班权限才可查看),
禁用权限:无权限查看交班记录,记录为空
- 全部记录:查看所有员工交班记录... -
-
-
- - - - - -
- -
交班信息是否显示商户号统计信息,禁
用后当前员工则无商户号统计信息
- 交班信息是否显示商户号统计信... -
-
-
- - - - - -
- -
交易信息是否可以筛选员工进行查
询,启用后可筛选、则反之
- 交易信息是否可以筛选员工进行... -
-
-
-
- - - -
- -
- POS手持机中功能对应操作权限 -
-
-
- - -
- -
- 小程序管理端功能对应操作权限 -
-
-
diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/api/fuyou/service/impl/FyPayServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/api/fuyou/service/impl/FyPayServiceImpl.java index df17dc36a..b5c2952a1 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/api/fuyou/service/impl/FyPayServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/api/fuyou/service/impl/FyPayServiceImpl.java @@ -469,6 +469,7 @@ public class FyPayServiceImpl implements FyPayService { returnParameter.setReservedTransactionId(resMap.get("reserved_transaction_id")); res.put("data",returnParameter); + res.put("resultMsg",resMap.get("result_msg")); return res; }else { throw new Exception("验签失败,请联系管理员!"); diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/api/fuyou/service/impl/OilConfigServiceImpl.java b/fuintBackend/fuint-application/src/main/java/com/fuint/api/fuyou/service/impl/OilConfigServiceImpl.java index bdba470bc..732bbad6b 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/api/fuyou/service/impl/OilConfigServiceImpl.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/api/fuyou/service/impl/OilConfigServiceImpl.java @@ -42,7 +42,7 @@ public class OilConfigServiceImpl extends ServiceImpl i // 调用支付接口 try { applet = fyPayService.applet(receiveParameter); + String resultMsg = (String) applet.get("resultMsg"); +// 判断商户订单号是否重复 重复则重新生成订单号 + if (StringUtils.isNotEmpty(resultMsg)){ + // 根据日期生成订单信息 + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); + String timestamp = dateFormat.format(new Date()); + String randomString = UUID.randomUUID().toString().replace("-","").substring(0,6); + String orderNo1 = "2345"+timestamp+randomString; + oilOrder.setOrderNo(orderNo1); + this.updateOilOrder(oilOrder); + receiveParameter.setOrderNo(orderNo1); + applet = fyPayService.applet(receiveParameter); + } applet.put("orderNo",orderNo); } catch (Exception e) { e.printStackTrace(); diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/controller/AlipayController.java b/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/controller/AlipayController.java index 48d524a50..788431292 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/controller/AlipayController.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/controller/AlipayController.java @@ -45,9 +45,12 @@ public class AlipayController extends BaseController { * @return */ @PostMapping("/getUserid") - public ResponseObject getUserId(@RequestBody Map map,HttpServletRequest request) throws AlipayApiException { - String authCode = map.get("authCode"); + public ResponseObject getUserId(@RequestBody Map map,HttpServletRequest request) throws Exception { logger.info("支付宝授权登录参数:{}", map); + String authCode = map.get("authCode"); + String encryptedData = map.get("encryptedData"); +// alipayService.getUserMobile(encryptedData); + String storeId = map.get("storeId"); if ("".equals(storeId)) return getFailureResult(0, "支付宝登录失败"); // 根据storeId查找对应的连锁店id diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/service/AlipayService1.java b/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/service/AlipayService1.java index 7c6b71f2c..70b2df95c 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/service/AlipayService1.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/service/AlipayService1.java @@ -4,5 +4,13 @@ import com.alipay.api.AlipayApiException; import com.alipay.api.response.AlipaySystemOauthTokenResponse; public interface AlipayService1 { + /** + * 获取用户支付宝userId + * @param code + * @return + * @throws AlipayApiException + */ public AlipaySystemOauthTokenResponse getAlipayProfile(String code) throws AlipayApiException; + + void getUserMobile(String encryptedData) throws Exception; } diff --git a/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/service/impl/AlipayServiceImpl1.java b/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/service/impl/AlipayServiceImpl1.java index cd92c3209..6dfa53e59 100644 --- a/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/service/impl/AlipayServiceImpl1.java +++ b/fuintBackend/fuint-application/src/main/java/com/fuint/module/AlipayApi/service/impl/AlipayServiceImpl1.java @@ -1,8 +1,14 @@ package com.fuint.module.AlipayApi.service.impl; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; +import com.alibaba.fastjson.parser.Feature; +import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayClient; import com.alipay.api.AlipayConfig; import com.alipay.api.DefaultAlipayClient; +import com.alipay.api.internal.util.AlipayEncrypt; +import com.alipay.api.internal.util.AlipaySignature; import com.alipay.api.request.AlipaySystemOauthTokenRequest; import com.alipay.api.request.AlipayUserInfoShareRequest; import com.alipay.api.response.AlipaySystemOauthTokenResponse; @@ -14,6 +20,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.env.Environment; import org.springframework.stereotype.Service; +import java.util.Map; + @Service public class AlipayServiceImpl1 implements AlipayService1 { private static final Logger logger = LoggerFactory.getLogger(AlipayServiceImpl1.class); @@ -59,4 +67,56 @@ public class AlipayServiceImpl1 implements AlipayService1 { return null; } + + @Override + public void getUserMobile(String encryptedData) throws Exception { + +//1. 获取验签和解密所需要的参数 + Map openapiResult = JSON.parseObject(encryptedData, + new TypeReference>() { + }, Feature.OrderedField); + String signType = "RSA2"; + String charset = "UTF-8"; + String encryptType = "AES"; + String sign = openapiResult.get("sign"); + String content = openapiResult.get("response"); + +//如果密文的 + boolean isDataEncrypted = !content.startsWith("{"); + boolean signCheckPass = false; + +//2. 验签 + String signContent = content; +// String signVeriKey = "你的小程序对应的支付宝公钥(为扩展考虑建议用appId+signType做密钥存储隔离)"; + String signVeriKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAnwDxxSNpBKL8xjtU3leNBy9mIOMYOr0WgxGbCxTMfhUPka9nr8Hbt0GN+7ylNBmxCYvW8kmge4dCOLUPqseM9+HyF9R1NrWBB3zQPVqnD0mKCYr9cEgtx6/eU7oIK1FqAl0G+jNIT3IKWMSXEX09yPKJWS6zk7+FRzOzn11vShTFjmrqWdrisJgRsQ54PHhPkQz7xFojDRqIunlpICWUVA8GwUg02hm5ZEhxpMHEWoJZ6Dj1wPH2Vh4CpIT/mjtD+SvssCpT0/XOEDPajcMRfgoV8fyyN0JNQDVZdMZgSO4aRHQqhC3X5CBXSuv40hHnwjcDjsPcbVav5BtaPp3wPQIDAQAB"; +// String decryptKey = "你的小程序对应的加解密密钥(为扩展考虑建议用appId+encryptType做密钥存储隔离)" + String decryptKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCJJM2nlUCidns6anNtGUiCL+J83kNL1nrr6hNktHkrX9bhR8LiBU3qBX+MkGDY4snlbdz+anGWu8YkcMlfBlAr82AsdIS9UTHh3lgsIAZTBZHgzZrxn7vwHfHI6Kw7uGZJbZ320JEG3s0KyvGiW0eqGuWI4BW+sD7b6JoLtNfBq+yF9ObOcs76rNCWz+04BmhCH7i6d8arK8NKgEiI9EjBThGjLRDFK1ryacKpz4UVvIXgxEW5w0MTjo/Q7gp2VLpwE/4jc8QfDFwmGU75L+nhK0rr1l0wwSo7svWFAXvberzMCGyuuLomuh2ldDfERJbIjg/qU66gx0EML1tgpVtFAgMBAAECggEARTArDJuwswXBH3Rq7SRvPza3NbXQD6eR9gjuZcTiyG4ecyMH/40bhK/nbFu+cEzh/HxTnIrI6Xmr+eBoxybhNXsgDu1ttjELUF8i7oftiN7rfJVd0P58CySgQXKYybw65lqF8enA8M1gdkxyYS1Z10igelBKyBwUak9LwBIpM0wrPIFrLhoxIEJC6QJ8EDnm6lKbytvcCa2mMZmtWs8oFxNA/SLRWtdEgHk4hslQVqq4R8B/xUy9Cu4kjdnVMHG2MqFXOiTas3gyKZLGN1ACBfpxxtyw0RAfX294ChV4SIvp10s1VqBFudcQeXeV5ph0NXP1eNt/8o3HIu0vjc0jAQKBgQD5ZtOR19M5vAcxJykh5u01CPdfz2LztqdinCpkBIpFviceW/k1euQFaWbOKdYFUrPnuLgX7Ds6dhSrkoL1+1RiVKUR6AtqIMa4fZJIMJWEPNNYWl8s6u6j11Dkd0B10g5+KV/kKLSlwFuBQnDyHw1ND+WKHqj9vkkzimzfcwedBQKBgQCMxao2IKX8CNjXDuryGkmXac0wxql0nN8AFHjCQGm16GPwlp805nAwsHKfJK45ACeixnWH9Cn6sje3yOUpCw6KG4OougRkrQEkQpoPVrZuXEcZ4j4Wg64VgW9tUAVH/WOV0VDnOBpsM8mbKsLLglb1H9Bx7813IX1pmhm93a0ZQQKBgD6U48/75T/eg7t8xSCBrtIZDuHWy1C2a6gd4bE5Rm0buvsuPwmBbchB248uBktNpmEmA+PU3kPcL3GiEQSibVlDPiyRGpQl51eSAuvkbRBCpxHLk4hU507rj5vUpLMr44Ea5rn80N+qtgtoXakTy6WjsIiJCwSpA/tP5+PmHGn1AoGASY/VhZmEA3OAFMnX3pH8GOKR9kYqMST0p28LN78/Pm7lIskjAxrUT601CJK7dE/vZnE848Gk2judQC38CnmbrHH6WAZ020NI0HD5XsCabotMIGuItG01YEmWN9JUIC16h8Ss+Vbo/9gEJ1CuIHjJBikM3S1J+lIG3lNH1l7r4MECgYEA2eAV0x55cmjC6VIMk3EAVUFbJ1LY1U9irmI6B5e7k/OVcdRksJfMRJwcquYVSfAk4hDrl7x0Qy36XELGvMe/hx07HxeAOXON8gL1b3UHP1zxvXb90YLHseHn9lssABsXS6Enyv3nrzqUi/uzBvpdDE2SRVS6nUr7Yyui6Yl+UPA=" + ; +//如果是加密的报文则需要在密文的前后添加双引号 + if (isDataEncrypted) { + signContent = "\"" + signContent + "\""; + } + try { + signCheckPass = AlipaySignature.rsaCheck(signContent, sign, signVeriKey, charset, signType); + } catch (AlipayApiException e) { + //验签异常, 日志 + } + if(!signCheckPass) { + //验签不通过(异常或者报文被篡改),终止流程(不需要做解密) + throw new Exception("验签失败"); + } + +//3. 解密 + String plainData = null; + if (isDataEncrypted) { + try { + AlipayEncrypt.decryptContent(content, encryptType, decryptKey, charset); + } catch (AlipayApiException e) { + //解密异常, 记录日志 + throw new Exception("解密异常"); + } + } else { + plainData = content; + } + } } diff --git a/gasStation-uni/pages/refuel/refuel.vue b/gasStation-uni/pages/refuel/refuel.vue index ff2916ddc..c5288b8ec 100644 --- a/gasStation-uni/pages/refuel/refuel.vue +++ b/gasStation-uni/pages/refuel/refuel.vue @@ -298,7 +298,7 @@ _this.oilNumberList = res.data; if (res.data){ // _this.getOilGun(res.data[0].numberId); - _this.oilPrice = res.data[0].gbPrice + _this.oilPrice = res.data[0].oilPrice _this.oilUnit = res.data[0].unit _this.oilOrder.oils = res.data[0].oilNameId if (res.data[0].oilGunList){ @@ -366,7 +366,7 @@ // this.getOilGun(data.numberId) this.oilGunList = data.oilGunList this.oilOrder.oilGunNum = data.oilGunList[0].id - this.oilPrice = data.gbPrice + this.oilPrice = data.oilPrice this.oilUnit = data.unit this.oilOrder.oils = data.oilNameId uni.setStorageSync("tankId",data.oilGunList[0].tankId) diff --git a/gasStation-uni/pagesLogin/login/login.vue b/gasStation-uni/pagesLogin/login/login.vue index 05675eb60..7a289c210 100644 --- a/gasStation-uni/pagesLogin/login/login.vue +++ b/gasStation-uni/pagesLogin/login/login.vue @@ -13,7 +13,9 @@ - + + @@ -59,10 +61,16 @@ console.log(e) let _this = this; - my.getAuthCode({ - scopes: 'auth_base', + // my.getAuthCode({ + my.getPhoneNumber({ + // scopes: 'auth_base', success: res => { const authCode = res.authCode; + let encryptedData = res.response; + // _this.setData({ + // ['userInfo.phone']: "18457621459", + // alertPhone: false, + // }) console.log(res) request({ url: "clientApi/sign/alipayLogin/getUserid", @@ -72,6 +80,7 @@ storeId: 0, staffId: "", phone: "18457621459", + encryptedData:encryptedData, }, }).then((resp) => { console.log(resp) diff --git a/gasStation-uni/pagesRefuel/orderDetail/index.vue b/gasStation-uni/pagesRefuel/orderDetail/index.vue index 255d4344d..706aa1792 100644 --- a/gasStation-uni/pagesRefuel/orderDetail/index.vue +++ b/gasStation-uni/pagesRefuel/orderDetail/index.vue @@ -348,6 +348,12 @@ }) return; } + if(res.data.resultMsg == "商户订单号重复"){ + uni.showToast({ + title:"商户订单号重复,请重新选择订单信息进行支付!", + icon:"none" + }) + } if (res.data.data.reservedPayInfo){ _this.orderInfo = JSON.parse(res.data.data.reservedPayInfo); uni.requestPayment({ @@ -383,7 +389,8 @@ console.log('fail:',err); } }); - }else{ + } + if (_this.appltType== "ALIPAY") { my.tradePay({ tradeNO: res.data.data.reservedTransactionId }, function(resp){ if(resp.resultCode == '9000'){ console.log("支付成功") @@ -835,9 +842,10 @@ }else{ _this.chooseCardBalance(0) } - _this.chooseGrade(res.data.userVo.id,res.data.userVo.gradeId) + // _this.chooseGrade(res.data.userVo.id,res.data.userVo.gradeId) }) }, + // getPayment // 获取油品订单 getOilOrder() { let _this = this;