123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 |
- package com.szwl.service.impl;
- import com.alibaba.fastjson.JSONObject;
- import com.szwl.model.bo.JoinpayConstant;
- import com.szwl.model.entity.TOrder;
- import com.szwl.mapper.TOrderMapper;
- import com.szwl.model.utils.Constant;
- import com.szwl.model.utils.HttpClientUtils;
- import com.szwl.service.TOrderService;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.codec.digest.DigestUtils;
- import org.apache.http.message.BasicNameValuePair;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import java.io.UnsupportedEncodingException;
- import java.math.BigDecimal;
- import java.math.RoundingMode;
- import java.net.URLDecoder;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * <p>
- * 服务实现类
- * </p>
- *
- * @author wuhs
- * @since 2022-04-23
- */
- @Slf4j
- @Service
- public class TOrderServiceImpl extends ServiceImpl<TOrderMapper, TOrder> implements TOrderService {
- @Autowired
- private TOrderMapper tOrderMapper;
- @Override
- public Double getAreaPrice(Map<String, Object> params) {
- return tOrderMapper.getAreaPrice(params);
- }
- @Override
- @Transactional
- public synchronized String initSn(Long equipmentId) {
- StringBuilder number = new StringBuilder();
- if (equipmentId != null) {
- Random random = new Random();
- /**
- * 6位随机
- */
- for (int i = 0; i < 6; i++) {
- number.append(String.valueOf(random.nextInt(10)));
- }
- /**
- * 设备id
- */
- number.append(equipmentId.toString());
- /**
- * 日期
- */
- number.append(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
- }
- return number.toString();
- }
- @Override
- public Object initRefundSn(Long equipmentId, int refundNumber) {
- StringBuilder number = new StringBuilder();
- if (equipmentId != null) {
- Random random = new Random();
- /**
- * 6位随机
- */
- for (int i = 0; i < 6; i++) {
- number.append(String.valueOf(random.nextInt(10)));
- }
- /**
- * 设备id
- */
- number.append(equipmentId.toString());
- /**
- * 日期
- */
- number.append(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));
- /**
- * 退款数量
- */
- number.append(refundNumber);
- }
- return "r" + number.toString();
- }
- @Override
- public String refund(String sn , Object refundSn , BigDecimal refundAmount , BigDecimal p8_MarketRefAmount , String refundReason , String notifyUrl , String altRefInfo ) {
- String url = "https://www.joinpay.com/trade/refund.action";
- List<BasicNameValuePair> data = new ArrayList<BasicNameValuePair>();
- data.add(new BasicNameValuePair("p1_MerchantNo", JoinpayConstant.mch_no));
- data.add(new BasicNameValuePair("p2_OrderNo", sn));
- data.add(new BasicNameValuePair("p3_RefundOrderNo", refundSn.toString()));
- data.add(new BasicNameValuePair("p4_RefundAmount", refundAmount.setScale(2, RoundingMode.HALF_DOWN).toString()));
- data.add(new BasicNameValuePair("p5_RefundReason", refundReason));
- data.add(new BasicNameValuePair("p6_NotifyUrl", notifyUrl));
- data.add(new BasicNameValuePair("p7_AltRefInfo", altRefInfo==null?null:altRefInfo.toString()));
- if(p8_MarketRefAmount!=null){
- data.add(new BasicNameValuePair("p8_MarketRefAmount", p8_MarketRefAmount.toString()));
- }
- // TODO: 2019-04-01 空值不参与签名!!!!!!!!!!!!!!!!!!
- String hmac = null;
- try {
- hmac = createHmacSign(data, JoinpayConstant.key);
- } catch (UnsupportedEncodingException e) {
- e.printStackTrace();
- }
- data.add(new BasicNameValuePair("hmac", hmac));
- String result = HttpClientUtils.postKeyValue(url, data);
- JSONObject resultJson = JSONObject.parseObject(result);
- log.info("汇聚返回参数:{}", resultJson);
- System.out.println(result);
- return resultJson.getString("rc_CodeMsg");
- }
- /**
- * 签名算法sign , hmac 签名
- *
- * @param data
- * @return
- */
- public static String createHmacSign( List<BasicNameValuePair> data , String key) throws UnsupportedEncodingException {
- StringBuffer sb = new StringBuffer();
- Iterator<BasicNameValuePair> es = data.iterator();
- while (es.hasNext()) {
- BasicNameValuePair entry = (BasicNameValuePair) es.next();
- String k = (String) entry.getName();
- String v = (String) entry.getValue();
- if (null != v && !"".equals(v) && !"sign".equals(k) && !"key".equals(k)) {
- sb.append(URLDecoder.decode(String.valueOf(v), "utf-8"));
- }
- }
- sb.append(key);
- String sign = DigestUtils.md5Hex(sb.toString());
- return sign;
- }
- }
|