123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- package com.szwl.service.impl;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.toolkit.Wrappers;
- import com.szwl.model.entity.TWeixinPayConfig;
- import com.szwl.mapper.TWeixinPayConfigMapper;
- import com.szwl.service.TWeixinPayConfigService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.szwl.weixin.core.Config;
- import com.szwl.weixin.core.RSAAutoCertificateConfig;
- import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
- import com.wechat.pay.java.core.http.DefaultHttpClientBuilder;
- import com.wechat.pay.java.core.http.HostName;
- import com.wechat.pay.java.core.http.HttpClient;
- import com.wechat.pay.java.service.refund.RefundService;
- import org.apache.commons.lang.StringUtils;
- import org.springframework.stereotype.Service;
- import java.nio.charset.StandardCharsets;
- import java.security.GeneralSecurityException;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import static java.util.Objects.requireNonNull;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author wuhs
- * @since 2023-04-08
- */
- @Service
- public class TWeixinPayConfigServiceImpl extends ServiceImpl<TWeixinPayConfigMapper, TWeixinPayConfig> implements TWeixinPayConfigService {
- // 本地缓存
- public static Map<String, Config> configMap = new HashMap<>();
- @Override
- public void initConfig(Long adminId) {
- LambdaQueryWrapper<TWeixinPayConfig> query = Wrappers.lambdaQuery();
- query.eq(TWeixinPayConfig::getAdminId,adminId);
- List<TWeixinPayConfig> list = list(query);
- for (TWeixinPayConfig payConfig : list) {
- // RSAAutoCertificateConfig config =
- // new RSAAutoCertificateConfig.Builder()
- // .merchantId(payConfig.getMerchantId())
- // .privateKey(payConfig.getPrivateKey())
- // // .privateKeyFromPath(wechatPaymentConfig.getPrivateKeyPath())
- // .merchantSerialNumber(payConfig.getMchSerialNo())
- // .apiV3Key(payConfig.getApiV3Key())
- // .build();
- Config config =
- new RSAAutoCertificateConfig.Builder()
- .merchantId(payConfig.getMerchantId())
- .privateKeyFromPath(payConfig.getPrivateKeyPath())
- .merchantSerialNumber(payConfig.getMerchantSerialNumber())
- .apiV3Key(payConfig.getApiV3key())
- .build();
- configMap.put(payConfig.getAdminId().toString(), config);
- }
- }
- /**
- * @param adminId 根据adminId获取Config
- * @return
- */
- @Override
- public Config getWechatConfig(String adminId) {
- if(configMap==null){
- return null;
- }
- return configMap.get(adminId);
- }
- /**
- * @param adminId 根据adminId获取NotificationConfig
- * @return
- */
- @Override
- public Config getNotificationConfig(String adminId) {
- return configMap.get(adminId);
- }
- /**
- * 对称解密
- * @param bodyMap
- * @return
- * @throws GeneralSecurityException
- */
- @Override
- public String decryptFromResource(Map<String, Object> bodyMap) {
- // 通知数据
- Map<String, String> resourceMap = (Map) bodyMap.get("resource");
- // 数据密文
- String ciphertext = resourceMap.get("ciphertext");
- // 随机串
- String nonce = resourceMap.get("nonce");
- // 附加数据
- String associatedData = resourceMap.get("associated_data");
- List<TWeixinPayConfig> list = list();
- AesUtil aesUtil = new
- AesUtil(list.get(0).getApiV3key().getBytes(StandardCharsets.UTF_8));
- String plainText = null;
- try {
- plainText = aesUtil.decryptToString(associatedData.getBytes(StandardCharsets.UTF_8),
- nonce.getBytes(StandardCharsets.UTF_8),
- ciphertext);
- } catch (GeneralSecurityException e) {
- e.printStackTrace();
- }
- if(StringUtils.isEmpty(plainText)){
- AesUtil aesUtil1 = new
- AesUtil(list.get(1).getApiV3key().getBytes(StandardCharsets.UTF_8));
- try {
- plainText = aesUtil1.decryptToString(associatedData.getBytes(StandardCharsets.UTF_8),
- nonce.getBytes(StandardCharsets.UTF_8),
- ciphertext);
- } catch (GeneralSecurityException e) {
- e.printStackTrace();
- }
- }
- return plainText;
- }
- }
|