| | |
| | | import com.ruoyi.chargingPile.api.model.Site; |
| | | import com.ruoyi.common.core.domain.R; |
| | | import com.ruoyi.common.core.utils.StringUtils; |
| | | import com.ruoyi.common.core.web.domain.AjaxResult; |
| | | import com.ruoyi.common.core.web.page.PageInfo; |
| | | import com.ruoyi.common.log.annotation.Log; |
| | | import com.ruoyi.common.log.enums.BusinessType; |
| | | import com.ruoyi.common.redis.service.RedisService; |
| | | import com.ruoyi.common.security.service.TokenService; |
| | | import com.ruoyi.other.api.domain.IntegralPay; |
| | | import com.ruoyi.other.api.domain.IntegralRecord; |
| | |
| | | import com.ruoyi.system.api.domain.SysUser; |
| | | import com.ruoyi.system.api.feignClient.SysConfigClient; |
| | | import com.ruoyi.system.api.feignClient.SysUserClient; |
| | | import com.ruoyi.system.api.model.LoginUser; |
| | | import io.swagger.annotations.ApiOperation; |
| | | import org.apache.http.HttpResponse; |
| | | import org.apache.tomcat.util.http.fileupload.ByteArrayOutputStream; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.core.io.ByteArrayResource; |
| | | import org.springframework.http.*; |
| | | import org.springframework.mock.web.MockMultipartFile; |
| | | import org.springframework.util.LinkedMultiValueMap; |
| | | import org.springframework.util.MultiValueMap; |
| | | import org.springframework.validation.annotation.Validated; |
| | | import org.springframework.web.bind.annotation.*; |
| | | import org.springframework.web.client.RestTemplate; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import javax.annotation.Resource; |
| | |
| | | import java.net.URL; |
| | | import java.security.KeyFactory; |
| | | import java.security.PrivateKey; |
| | | import java.security.SecureRandom; |
| | | import java.security.Signature; |
| | | import java.security.spec.PKCS8EncodedKeySpec; |
| | | import java.text.SimpleDateFormat; |
| | |
| | | @Autowired |
| | | private SysConfigClient sysConfigClient; |
| | | |
| | | |
| | | |
| | | |
| | | @Autowired |
| | | private WxAppletTools wxAppletTools; |
| | | |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | @Autowired |
| | | private TokenService tokenService; |
| | | @Autowired |
| | |
| | | return R.ok(true); |
| | | } else { |
| | | return R.ok(false); |
| | | } |
| | | } |
| | | @ApiOperation(tags = {"2.0-积分钱包"}, value = "获取小程序二维码") |
| | | @PostMapping(value = "/getQrCode") |
| | | public R getQrCode(@RequestParam("amount") String amount ) { |
| | | LoginUser loginUser = tokenService.getLoginUser(); |
| | | SysUser data = sysUserClient.getSysUser(loginUser.getUserid()).getData(); |
| | | // 充值手机号 |
| | | String phonenumber = data.getPhonenumber(); |
| | | InputStream inputStream = null; |
| | | OutputStream outputStream = null; |
| | | String accessToken = wxAppletTools.getAccessToken(); |
| | | try { |
| | | String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken; |
| | | Map<String, Object> param = new HashMap<>(); |
| | | // param.put("scene", "phone=" + phonenumber); |
| | | param.put("scene", "phone=" + phonenumber+",amount="+amount); |
| | | param.put("page", "chargingPile/payMent/payMent"); |
| | | param.put("check_path", false); |
| | | param.put("env_version", "trial"); |
| | | param.put("width", 200); //二维码尺寸 |
| | | param.put("is_hyaline", true); // 是否需要透明底色, is_hyaline 为true时,生成透明底色的小程序码 参数仅对小程序码生效 |
| | | param.put("auto_color", true); // 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 参数仅对小程序码生效 |
| | | Map<String, Object> line_color = new HashMap<>(); |
| | | line_color.put("r", 0); |
| | | line_color.put("g", 0); |
| | | line_color.put("b", 0); |
| | | param.put("line_color", line_color); |
| | | System.err.println("调用生成微信URL接口传参:" + param); |
| | | HttpHeaders headers = new HttpHeaders(); |
| | | headers.setContentType(MediaType.APPLICATION_JSON); |
| | | HttpEntity requestEntity = new HttpEntity(param, headers); |
| | | ResponseEntity<byte[]> entity = restTemplate.exchange(url, HttpMethod.POST, requestEntity, byte[].class); |
| | | System.err.println("调用小程序生成微信永久小程序码URL接口返回结果:" + entity.getBody()); |
| | | byte[] result = entity.getBody(); |
| | | inputStream = new ByteArrayInputStream(result); |
| | | //拿到httpResponse后,在获取里面的图片 |
| | | SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); |
| | | // 最后上传生成的文件名 |
| | | String finalFileName = System.currentTimeMillis() + "" + new SecureRandom().nextInt(0x0400) + ".jpg"; |
| | | // oss中的文件夹名 |
| | | String objectName = sdf.format(new Date()) + "/" + finalFileName; |
| | | // 上传oss |
| | | String s = ObsUploadUtil.obsUpload(objectName, inputStream); |
| | | return R.ok(s); |
| | | }catch (Exception e){ |
| | | return R.fail(e.getMessage()); |
| | | } |
| | | } |
| | | @Resource |
| | |
| | | |
| | | String signStr = JSON.toJSONString(JSONObject.parseObject(JSON.toJSONString(dataMap), TreeMap.class)); |
| | | |
| | | |
| | | System.out.println("待签名字符串:" + signStr); |
| | | |
| | | // 签名 (按照汇付天下规则,使用MD5加签) |