| | |
| | | |
| | | import com.java110.core.component.AbstractComponentSMO; |
| | | import com.java110.core.context.IPageData; |
| | | import com.java110.core.factory.WechatFactory; |
| | | import com.java110.dto.smallWeChat.SmallWeChatDto; |
| | | import com.java110.front.properties.WechatAuthProperties; |
| | | import com.java110.utils.cache.MappingCache; |
| | |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.http.HttpEntity; |
| | | import org.springframework.http.HttpHeaders; |
| | | import org.springframework.http.HttpMethod; |
| | | import org.springframework.http.HttpStatus; |
| | | import org.springframework.http.ResponseEntity; |
| | | import org.springframework.http.*; |
| | | import org.springframework.web.client.HttpStatusCodeException; |
| | | import org.springframework.web.client.RestTemplate; |
| | | |
| | |
| | | private static final Logger logger = LoggerFactory.getLogger(AppAbstractComponentSMO.class); |
| | | @Autowired |
| | | private WechatAuthProperties wechatAuthProperties; |
| | | |
| | | @Autowired |
| | | private RestTemplate restTemplate; |
| | | |
| | | //微信支付 |
| | | public static final String DOMAIN_WECHAT_PAY = "WECHAT_PAY"; |
| | | // 微信服务商支付开关 |
| | | public static final String WECHAT_SERVICE_PAY_SWITCH = "WECHAT_SERVICE_PAY_SWITCH"; |
| | | //开关ON打开 |
| | | public static final String WECHAT_SERVICE_PAY_SWITCH_ON = "ON"; |
| | | |
| | | private static final String WECHAT_SERVICE_APP_ID = "SERVICE_APP_ID"; |
| | | |
| | | private static final String WECHAT_SERVICE_MCH_ID = "SERVICE_MCH_ID"; |
| | | |
| | | |
| | | /** |
| | | * 调用中心服务 |
| | |
| | | double payAmount = PayUtil.getPayAmountByEnv(MappingCache.getValue("HC_ENV"), money); |
| | | //添加或更新支付记录(参数跟进自己业务需求添加) |
| | | |
| | | Map<String, String> resMap = this.java110UnifieldOrder(outRestTemplate, feeName, orderNum, tradeType, payAmount, openId,smallWeChatDto); |
| | | Map<String, String> resMap = this.java110UnifieldOrder(outRestTemplate, feeName, orderNum, tradeType, payAmount, openId, smallWeChatDto); |
| | | if ("SUCCESS".equals(resMap.get("return_code")) && "SUCCESS".equals(resMap.get("result_code"))) { |
| | | if (WechatAuthProperties.TRADE_TYPE_JSAPI.equals(tradeType)) { |
| | | |
| | | resultMap.put("appId", smallWeChatDto.getAppId()); |
| | | resultMap.put("sign", PayUtil.createSign(resultMap, smallWeChatDto.getPayPassword())); |
| | | resultMap.put("timeStamp", PayUtil.getCurrentTimeStamp()); |
| | | resultMap.put("nonceStr", PayUtil.makeUUID(32)); |
| | | resultMap.put("package", "prepay_id=" + resMap.get("prepay_id")); |
| | | resultMap.put("signType", "MD5"); |
| | | resultMap.put("sign", PayUtil.createSign(resultMap, smallWeChatDto.getPayPassword())); |
| | | } else if (WechatAuthProperties.TRADE_TYPE_APP.equals(tradeType)) { |
| | | resultMap.put("appId", smallWeChatDto.getAppId()); |
| | | resultMap.put("timeStamp", PayUtil.getCurrentTimeStamp()); |
| | |
| | | private Map<String, String> java110UnifieldOrder(RestTemplate outRestTemplate, String feeName, String orderNum, |
| | | String tradeType, double payAmount, String openid, |
| | | SmallWeChatDto smallWeChatDto) throws Exception { |
| | | //封装参数 |
| | | |
| | | SortedMap<String, String> paramMap = new TreeMap<String, String>(); |
| | | paramMap.put("appid", smallWeChatDto.getAppId()); |
| | | paramMap.put("mch_id", smallWeChatDto.getMchId()); |
| | |
| | | paramMap.put("out_trade_no", orderNum); |
| | | paramMap.put("total_fee", PayUtil.moneyToIntegerStr(payAmount)); |
| | | paramMap.put("spbill_create_ip", PayUtil.getLocalIp()); |
| | | paramMap.put("notify_url", wechatAuthProperties.getWxNotifyUrl()); |
| | | paramMap.put("notify_url", wechatAuthProperties.getWxNotifyUrl() + "?wId=" + WechatFactory.getWId(smallWeChatDto.getAppId())); |
| | | paramMap.put("trade_type", tradeType); |
| | | paramMap.put("openid", openid); |
| | | |
| | | String paySwitch = MappingCache.getValue(DOMAIN_WECHAT_PAY, WECHAT_SERVICE_PAY_SWITCH); |
| | | if (WECHAT_SERVICE_PAY_SWITCH_ON.equals(paySwitch)) { |
| | | paramMap.put("appid", MappingCache.getValue(DOMAIN_WECHAT_PAY, WECHAT_SERVICE_APP_ID)); //服务商appid,是服务商注册时公众号的id |
| | | paramMap.put("mch_id", MappingCache.getValue(DOMAIN_WECHAT_PAY, WECHAT_SERVICE_MCH_ID)); //服务商商户号 |
| | | paramMap.put("sub_appid", smallWeChatDto.getAppId());//起调小程序appid |
| | | paramMap.put("sub_mch_id", smallWeChatDto.getMchId());//起调小程序的商户号 |
| | | paramMap.put("sub_openid", openid); |
| | | paramMap.remove("openid"); |
| | | } |
| | | paramMap.put("sign", PayUtil.createSign(paramMap, smallWeChatDto.getPayPassword())); |
| | | //转换为xml |
| | | String xmlData = PayUtil.mapToXml(paramMap); |