Commit 58088c9c authored by cy's avatar cy

支付

parent 485518ed
...@@ -59,5 +59,40 @@ public class Md5Util { ...@@ -59,5 +59,40 @@ public class Md5Util {
} }
return sb.toString(); return sb.toString();
} }
private static String byteArrayToHexString(byte b[]) {
StringBuffer resultSb = new StringBuffer();
for (int i = 0; i < b.length; i++)
resultSb.append(byteToHexString(b[i]));
return resultSb.toString();
}
private static String byteToHexString(byte b) {
int n = b;
if (n < 0)
n += 256;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];
}
public static String MD5Encode(String origin, String charsetname) {
String resultString = null;
try {
resultString = new String(origin);
MessageDigest md = MessageDigest.getInstance("MD5");
if (charsetname == null || "".equals(charsetname))
resultString = byteArrayToHexString(md.digest(resultString
.getBytes()));
else
resultString = byteArrayToHexString(md.digest(resultString
.getBytes(charsetname)));
} catch (Exception exception) {
}
return resultString;
}
private static final String hexDigits[] = { "0", "1", "2", "3", "4", "5",
"6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
} }
...@@ -47,8 +47,6 @@ ...@@ -47,8 +47,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
...@@ -78,6 +76,8 @@ ...@@ -78,6 +76,8 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" /> <orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......
...@@ -19,4 +19,6 @@ public interface PayRecordMapper extends BaseMapper<PayRecord> { ...@@ -19,4 +19,6 @@ public interface PayRecordMapper extends BaseMapper<PayRecord> {
int count(Map<String,Object> map); int count(Map<String,Object> map);
List<PayRecord> getById(@Param("userId") Integer userId); List<PayRecord> getById(@Param("userId") Integer userId);
} }
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<result column="card_id" property="cardId"/> <result column="card_id" property="cardId"/>
<result column="money" property="money"/> <result column="money" property="money"/>
<result column="result" property="result"/> <result column="result" property="result"/>
<result column="trade_no" property="tradeNo"/>
<result column="pay_limit" property="payLimit"/> <result column="pay_limit" property="payLimit"/>
<result column="create_time" property="createTime"/> <result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/> <result column="update_time" property="updateTime"/>
...@@ -24,11 +25,11 @@ ...@@ -24,11 +25,11 @@
</sql> </sql>
<sql id="cols_exclude_id"> <sql id="cols_exclude_id">
user_id,type, card_id,money,result,pay_limit, create_time,update_time user_id,type, card_id,trade_no,money,result,pay_limit, create_time,update_time
</sql> </sql>
<sql id="vals"> <sql id="vals">
#{userId},#{type},#{cardId},#{money},#{result},#{payLimit},now(),now() #{userId},#{type},#{cardId},#{tradeNo},#{money},#{result},#{payLimit},now(),now()
</sql> </sql>
<sql id="updateCondition"> <sql id="updateCondition">
...@@ -100,4 +101,5 @@ ...@@ -100,4 +101,5 @@
</where> </where>
</select> </select>
</mapper> </mapper>
...@@ -51,8 +51,6 @@ ...@@ -51,8 +51,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
...@@ -82,6 +80,8 @@ ...@@ -82,6 +80,8 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" /> <orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......
...@@ -42,6 +42,12 @@ public class PayRecord implements Serializable { ...@@ -42,6 +42,12 @@ public class PayRecord implements Serializable {
@ApiModelProperty(value = "充值用户id",name = "userId") @ApiModelProperty(value = "充值用户id",name = "userId")
private Integer userId; private Integer userId;
/**
* 支付交易号
*/
@ApiModelProperty(value = "支付交易号",name = "tradeNo")
private String tradeNo;
/** /**
* 充值所花金额 * 充值所花金额
*/ */
......
...@@ -41,4 +41,10 @@ public class AddLimitVo implements Serializable { ...@@ -41,4 +41,10 @@ public class AddLimitVo implements Serializable {
*/ */
@ApiModelProperty(value = "充值卡密码", name = "password") @ApiModelProperty(value = "充值卡密码", name = "password")
private String password; private String password;
/**
* 支付交易号
*/
@ApiModelProperty(value = "支付交易号", name = "tradeNo")
private String tradeNo;
} }
...@@ -46,6 +46,11 @@ public class PayRecordShowVo implements Serializable { ...@@ -46,6 +46,11 @@ public class PayRecordShowVo implements Serializable {
*/ */
@ApiModelProperty(value = "充值时间",name = "payTime") @ApiModelProperty(value = "充值时间",name = "payTime")
private Date payTime; private Date payTime;
/**
* 支付交易号
*/
@ApiModelProperty(value = "支付交易号",name = "tradeNo")
private String tradeNo;
} }
...@@ -49,8 +49,6 @@ ...@@ -49,8 +49,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
...@@ -80,6 +78,8 @@ ...@@ -80,6 +78,8 @@
<orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-test:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" /> <orderEntry type="library" name="Maven: org.xmlunit:xmlunit-core:2.6.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" /> <orderEntry type="library" name="Maven: org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.2" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" /> <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:3.2.0" level="project" />
......
...@@ -24,4 +24,12 @@ public interface AliPayService { ...@@ -24,4 +24,12 @@ public interface AliPayService {
* @return 查询结果 * @return 查询结果
*/ */
R<String> query(PayQueryDto payQueryDto); R<String> query(PayQueryDto payQueryDto);
/***
* 支付宝回调
* @param response
* @param request
* @return
*/
R<String> aliPayCallBack(HttpServletResponse response, HttpServletRequest request);
} }
package cn.wisenergy.service.app;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.dto.PayPageDto;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @author chnegyan
*/
public interface TestWxPayService {
/**
* 测试-微信支付
* @Param
* @return
*/
R<String> wxPay(PayPageDto payPageDto, HttpServletResponse response);
/***
*测试-支付成功回调
* @param request
* @param response
* @return
*/
R<String> wxPayCallBack(HttpServletRequest request, HttpServletResponse response);
}
package cn.wisenergy.service.app.impl; package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.R; import cn.wisenergy.common.utils.R;
import cn.wisenergy.mapper.PayRecordMapper;
import cn.wisenergy.model.app.PayRecord;
import cn.wisenergy.model.app.User;
import cn.wisenergy.model.dto.PayPageDto; import cn.wisenergy.model.dto.PayPageDto;
import cn.wisenergy.model.dto.PayQueryDto; import cn.wisenergy.model.dto.PayQueryDto;
import cn.wisenergy.model.vo.AddLimitVo; import cn.wisenergy.model.vo.AddLimitVo;
...@@ -9,13 +12,19 @@ import cn.wisenergy.service.app.UserLimitService; ...@@ -9,13 +12,19 @@ import cn.wisenergy.service.app.UserLimitService;
import cn.wisenergy.service.common.Common; import cn.wisenergy.service.common.Common;
import com.alipay.api.AlipayClient; import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient; import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.internal.util.AlipaySignature;
import com.alipay.api.request.AlipayTradePagePayRequest; import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.response.AlipayTradePagePayResponse;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
@Slf4j @Slf4j
@Service @Service
...@@ -24,145 +33,116 @@ public class AliPayServiceImpl implements AliPayService { ...@@ -24,145 +33,116 @@ public class AliPayServiceImpl implements AliPayService {
@Autowired @Autowired
private UserLimitService userLimitService; private UserLimitService userLimitService;
@Autowired
private PayRecordMapper payRecordMapper;
@Override @Override
public R<String> doPost(PayPageDto payPageDto, HttpServletRequest request, HttpServletResponse httpResponse) { public R<String> doPost(PayPageDto payPageDto, HttpServletRequest request, HttpServletResponse httpResponse) {
if (null == payPageDto || null == payPageDto.getTotal()) { if (null == payPageDto || null == payPageDto.getTotal()) {
return R.error("人参不能为空!"); return R.error("人参不能为空!");
} }
AlipayClient alipayClient = new DefaultAlipayClient(Common.PAY_URL_CS, Common.APP_ID_CS, Common.PRIVATE_KEY_CS, "json", "GBK", Common.ALIPAY_PUBLIC_KEY_CS, "RSA2"); AlipayClient alipayClient = new DefaultAlipayClient(Common.PAY_URL_CS, Common.APP_ID_CS, Common.PRIVATE_KEY_CS, "json", "UTF-8", Common.ALIPAY_PUBLIC_KEY_CS, "RSA2");
AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest(); AlipayTradePagePayRequest alipayRequest = new AlipayTradePagePayRequest();
String tradeNo = "21" + System.currentTimeMillis(); String tradeNo = "21" + System.currentTimeMillis();
//创建API对应的request //创建API对应的request
alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp"); alipayRequest.setReturnUrl("http://domain.com/CallBack/return_url.jsp");
//在公共参数中设置回跳和通知地址 //在公共参数中设置回跳和通知地址
alipayRequest.setNotifyUrl("http://domain.com/CallBack/notify_url.jsp"); alipayRequest.setNotifyUrl("http://x6kmrr.natappfree.cc/pay/aliPayCallBack.do");
alipayRequest.setBizContent("{" + alipayRequest.setBizContent("{" +
"\"out_trade_no\":\"" + tradeNo + "\"," + "\"out_trade_no\":\"" + tradeNo + "\"," +
"\"product_code\":\"FAST_INSTANT_TRADE_PAY\"," +
"\"total_amount\":" + payPageDto.getTotal() + "," + "\"total_amount\":" + payPageDto.getTotal() + "," +
"\"subject\":\"充值\"," + "\"subject\":\"充值\"," +
"\"body\":\"充值\"," + "\"body\":\"充值\"," +
"\"time_expire\":\"2021-01-30 10:05:01\"," +
" \"goods_detail\":[{" +
" \"goods_id\":\"apple-01\"," +
"\"alipay_goods_id\":\"20010001\"," +
"\"goods_name\":\"ipad\"," +
"\"quantity\":1," +
"\"price\":2000," +
"\"goods_category\":\"34543238\"," +
"\"categories_tree\":\"124868003|126232002|126252004\"," +
"\"body\":\"特价手机\"," +
"\"show_url\":\"http://www.alipay.com/xxx.jpg\"" +
" }]," +
"\"passback_params\":\"merchantBizType%3d3C%26merchantBizNo%3d2016010101111\"," +
"\"extend_params\":{" +
"\"sys_service_provider_id\":\"2088511833207846\"," +
"\"hb_fq_num\":\"3\"," +
"\"hb_fq_seller_percent\":\"100\"," +
"\"industry_reflux_info\":\"{\\\\\\\"scene_code\\\\\\\":\\\\\\\"metro_tradeorder\\\\\\\",\\\\\\\"channel\\\\\\\":\\\\\\\"xxxx\\\\\\\",\\\\\\\"scene_data\\\\\\\":{\\\\\\\"asset_name\\\\\\\":\\\\\\\"ALIPAY\\\\\\\"}}\"," +
"\"card_type\":\"S0JP0000\"" +
" }," +
"\"goods_type\":\"0\"," +
"\"timeout_express\":\"90m\"," +
"\"promo_params\":\"{\\\"storeIdType\\\":\\\"1\\\"}\"," +
"\"royalty_info\":{" +
"\"royalty_type\":\"ROYALTY\"," +
" \"royalty_detail_infos\":[{" +
" \"serial_no\":1," +
"\"trans_in_type\":\"userId\"," +
"\"batch_no\":\"123\"," +
"\"out_relation_id\":\"20131124001\"," +
"\"trans_out_type\":\"userId\"," +
"\"trans_out\":\"2088101126765726\"," +
"\"trans_in\":\"2088101126708402\"," +
"\"amount\":0.1," +
"\"desc\":\"分账测试1\"," +
"\"amount_percentage\":\"100\"" +
" }]" +
" }," +
"\"sub_merchant\":{" +
"\"merchant_id\":\"2088000603999128\"," +
"\"merchant_type\":\"alipay: 支付宝分配的间连商户编号, merchant: 商户端的间连商户编号\"" +
" }," +
"\"merchant_order_no\":\"20161008001\"," +
"\"enable_pay_channels\":\"pcredit,moneyFund,debitCardExpress\"," +
"\"store_id\":\"NJ_001\"," +
"\"disable_pay_channels\":\"pcredit,moneyFund,debitCardExpress\"," +
"\"qr_pay_mode\":\"1\"," +
"\"qrcode_width\":100," +
"\"settle_info\":{" +
" \"settle_detail_infos\":[{" +
" \"trans_in_type\":\"cardAliasNo\"," +
"\"trans_in\":\"A0001\"," +
"\"summary_dimension\":\"A0001\"," +
"\"settle_entity_id\":\"2088xxxxx;ST_0001\"," +
"\"settle_entity_type\":\"SecondMerchant、Store\"," +
"\"amount\":0.1" +
" }]," +
"\"settle_period_time\":\"7d\"" +
" }," +
"\"invoice_info\":{" +
"\"key_info\":{" +
"\"is_support_invoice\":true," +
"\"invoice_merchant_name\":\"ABC|003\"," +
"\"tax_num\":\"1464888883494\"" +
" }," +
"\"details\":\"[{\\\"code\\\":\\\"100294400\\\",\\\"name\\\":\\\"服饰\\\",\\\"num\\\":\\\"2\\\",\\\"sumPrice\\\":\\\"200.00\\\",\\\"taxRate\\\":\\\"6%\\\"}]\"" +
" }," +
"\"agreement_sign_params\":{" +
"\"personal_product_code\":\"GENERAL_WITHHOLDING_P\"," +
"\"sign_scene\":\"INDUSTRY|CARRENTAL\"," +
"\"external_agreement_no\":\"test\"," +
"\"external_logon_id\":\"13852852877\"," +
"\"sign_validity_period\":\"2m\"," +
"\"third_party_type\":\"PARTNER\"," +
"\"buckle_app_id\":\"1001164\"," +
"\"buckle_merchant_id\":\"268820000000414397785\"," +
"\"promo_params\":\"{\\\"key\\\",\\\"value\\\"}\"" +
" }," +
"\"integration_type\":\"PCWEB\"," +
"\"request_from_url\":\"https://\"," +
"\"business_params\":\"{\\\"data\\\":\\\"123\\\"}\"," +
"\"ext_user_info\":{" +
"\"name\":\"李明\"," +
"\"mobile\":\"16587658765\"," +
"\"cert_type\":\"IDENTITY_CARD\"," +
"\"cert_no\":\"362334768769238881\"," +
"\"min_age\":\"18\"," +
"\"fix_buyer\":\"F\"," +
"\"need_check_info\":\"F\"" +
" }" +
" }"); " }");
String form = ""; String form = "";
//调用SDK生成表单 //调用SDK生成表单
try { try {
form = alipayClient.pageExecute(alipayRequest).getBody(); AlipayTradePagePayResponse response = alipayClient.pageExecute(alipayRequest);
httpResponse.setContentType("text/html;charset=" + CHARSET); form = response.getBody();
httpResponse.setContentType("text/html;charset=UTF-8");
//直接将完整的表单html输出到页面 //直接将完整的表单html输出到页面
httpResponse.getWriter().write(form); httpResponse.getWriter().write(form);
httpResponse.getWriter().flush(); httpResponse.getWriter().flush();
httpResponse.getWriter().close(); httpResponse.getWriter().close();
if(response.isSuccess()){
//增加用户查询次数和充值记录 System.out.println("调用成功");
AddLimitVo addLimitVo = new AddLimitVo(); //生成预支付订单,充值结果设为失败(result=1)
addLimitVo.setPayMoney(payPageDto.getTotal()); PayRecord payRecord = new PayRecord();
addLimitVo.setPayType(1); payRecord.setMoney(payPageDto.getTotal());
addLimitVo.setUserId(payPageDto.getUserId()); payRecord.setResult(1);
R<Boolean> booleanR = userLimitService.addLimit(addLimitVo); payRecord.setTradeNo(tradeNo);
if (booleanR.getCode()==1) { payRecord.setType(payPageDto.getPayType());
return R.error("用户查询次数添加失败"); payRecord.setUserId(payPageDto.getUserId());
payRecordMapper.add(payRecord);
return R.ok(0,form);
} else {
System.out.println("调用失败");
return R.error("调用失败");
} }
return R.ok(0,"充值成功");
} catch (Exception e) { } catch (Exception e) {
return R.ok(1,"充值失败"); return R.ok(1,"调用失败");
} }
} }
@Override @Override
public R<String> query(PayQueryDto payQueryDto) { public R<String> query(PayQueryDto payQueryDto) {
return null; return null;
} }
@Override
public R<String> aliPayCallBack(HttpServletResponse response, HttpServletRequest request) {
System.out.println("支付宝回调成功");
try {
//获取支付宝POST过来反馈信息
Map<String,String> params = new HashMap<String,String>();
Map requestParams = request.getParameterMap();
for (Iterator iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = (String) iter.next();
String[] values = (String[]) requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i]
: valueStr + values[i] + ",";
}
//乱码解决,这段代码在出现乱码时使用。
//valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8");
params.put(name, valueStr);
}
boolean flag = AlipaySignature.rsaCheckV1(params, Common.ALIPAY_PUBLIC_KEY_CS, CHARSET,"RSA2");
// 获取支付宝的通知返回参数
String order_no = request.getParameter("out_trade_no"); // 获取订单号
if (flag==true) {// 验证成功
try{
//返回成功后修改订单充值结果为0,保存查询次数
QueryWrapper<PayRecord> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("trade_no",order_no);
PayRecord payRecord = payRecordMapper.selectOne(queryWrapper);
AddLimitVo addLimitVo = new AddLimitVo();
addLimitVo.setTradeNo(order_no);
addLimitVo.setPayMoney(payRecord.getMoney());
addLimitVo.setPayType(2);
addLimitVo.setUserId(payRecord.getUserId());
R<Boolean> booleanR = userLimitService.addLimit(addLimitVo);
if (booleanR.getCode()==1) {
return R.error("用户查询次数添加失败");
}
return R.ok(0,"充值成功");
}catch (Exception e)
{
System.out.println("支付宝支付异常");
e.printStackTrace();
return R.error("支付宝支付异常");
}
}
response.getWriter().write("success");
return R.ok(0,"支付宝订单支付成功");
} catch (Exception e) {
e.printStackTrace();
return R.error("支付宝支付异常");
}
}
} }
package cn.wisenergy.service.app.impl;
import cn.wisenergy.common.utils.Md5Util;
import cn.wisenergy.common.utils.R;
import cn.wisenergy.mapper.PayRecordMapper;
import cn.wisenergy.mapper.PriceMapper;
import cn.wisenergy.model.app.PayRecord;
import cn.wisenergy.model.dto.PayPageDto;
import cn.wisenergy.model.vo.AddLimitVo;
import cn.wisenergy.service.app.TestWxPayService;
import cn.wisenergy.service.app.UserLimitService;
import cn.wisenergy.service.util.MapToXmlUtils;
import cn.wisenergy.service.wxpay.WxCommon;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.models.auth.In;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.RandomStringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.*;
/**
* @author chengyan
*/
@Service
@Slf4j
public class TestWxPayServiceImpl implements TestWxPayService {
public static String basePath = "https://api.mch.weixin.qq.com/pay/unifiedorder";
@Autowired
private UserLimitService userLimitService;
@Autowired
private PayRecordMapper payRecordMapper;
/***
* 支付
* @param payPageDto
* @param response
* @return
*/
@Override
public R<String> wxPay(PayPageDto payPageDto, HttpServletResponse response) {
if(null==payPageDto || null==payPageDto.getTotal()){
return R.error("入参不能为空");
}
ServletOutputStream sos = null;
String tradeNo = "21" + System.currentTimeMillis();
//生成预支付订单,充值结果设为失败(result=1)
PayRecord payRecord = new PayRecord();
payRecord.setMoney(payPageDto.getTotal());
payRecord.setResult(1);
payRecord.setTradeNo(tradeNo);
payRecord.setType(payPageDto.getPayType());
payRecord.setUserId(payPageDto.getUserId());
payRecordMapper.add(payRecord);
try {
String orderInfo = createOrderInfo(payPageDto,tradeNo);//生成【统一下单API】所需参数的接口
System.out.println(orderInfo);
String code_url = unifiedOrder(orderInfo);//调用统一下单接口
sos = response.getOutputStream();
//QRCodeUtil.encode(code_url, sos);//调用生成二维码的方法
System.out.println("code_url:"+code_url);
return R.ok("0",code_url);
} catch (Exception e) {
e.printStackTrace();
return R.error("获取code_url失败");
}
}
/***
* 生成统一下单格式的订单,生成一个XML格式的字符串
* @return
* @throws UnsupportedEncodingException
*/
public String createOrderInfo(PayPageDto payPageDto,String tradeNo) throws UnsupportedEncodingException {
String nonce_str = RandomStringUtils.randomAlphanumeric(16);
SortedMap<String,String> parameters = new TreeMap<String,String>();
parameters.put("appid", WxCommon.APP_ID);
parameters.put("mch_id", WxCommon.MCHID);
parameters.put("body", "充值");
parameters.put("out_trade_no", tradeNo);
parameters.put("nonce_str", nonce_str);
DecimalFormat df = new DecimalFormat("#");
parameters.put("total_fee", df.format((payPageDto.getTotal())*100));
parameters.put("notify_url",WxCommon.NOTIFY_URL);
parameters.put("trade_type","NATIVE");
String characterEncoding = "UTF-8";
String sign = createSign(characterEncoding,parameters);
parameters.put("sign", sign);//签名
//将订单对象转为xml格式
String s = null;
try {
return MapToXmlUtils.mapToXml(parameters);//maptoXml方法是微信sdk自带的方法
} catch (Exception e) {
e.printStackTrace();
}
return new String(s.getBytes("UTF-8"));
}
/***
* 统一下单
* @param info
* @return
* @throws Exception
*/
public String unifiedOrder(String info) throws Exception {
HttpURLConnection conn = (HttpURLConnection) new URL(basePath).openConnection();
//加入数据
conn.setRequestMethod("POST");
conn.setDoOutput(true);
BufferedOutputStream buffOutStr = new BufferedOutputStream(conn.getOutputStream());
buffOutStr.write(info.getBytes("UTF-8"));
buffOutStr.flush();
buffOutStr.close();
//获取输入流
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line = null;
StringBuffer sb = new StringBuffer();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
Map<String, String> map = MapToXmlUtils.xmlToMap(sb.toString());
//返回的部分字段
String return_msg = map.get("return_msg");//返回信息
String return_code = map.get("return_code");//状态码
String result_code = map.get("result_code");//业务结果
String code_url = map.get("code_url");
//根据微信文档return_code 和result_code都为SUCCESS的时候才会返回code_url
if (null != map && "SUCCESS".equals(return_code) && "SUCCESS".equals(result_code)) {
return code_url;
} else {
System.out.println(return_msg);
return null;
}
}
/***
* 生成签名
* @param characterEncoding
* @param parameters
* @return
*/
public static String createSign(String characterEncoding, SortedMap<String,String> parameters){
StringBuffer sb = new StringBuffer();
Set es = parameters.entrySet();//所有参与传参的参数按照accsii排序(升序)
Iterator it = es.iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
String k = (String)entry.getKey();
Object v = entry.getValue();
if(null != v && !"".equals(v)
&& !"sign".equals(k) && !"key".equals(k)) {
sb.append(k + "=" + v + "&");
}
}
sb.append("key=" + WxCommon.PRIVATE_KEY);
String sign = Md5Util.MD5Encode(sb.toString(), characterEncoding).toUpperCase();
System.out.println("签名:"+sign);
return sign;
}
/***
* 支付成功回调
* @param request
* @param response
* @return
*/
@Override
public R<String> wxPayCallBack(HttpServletRequest request, HttpServletResponse response) {
System.out.println("回调成功");
try {
InputStream inStream = request.getInputStream();
ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outSteam.write(buffer, 0, len);
}
outSteam.close();
inStream.close();
String result = new String(outSteam.toByteArray(), "utf-8");// 获取微信调用我们notify_url的返回信息
Map<String, String> map = MapToXmlUtils.xmlToMap(result);
if (map.get("result_code").equalsIgnoreCase("SUCCESS")) {
//返回成功后修改订单充值结果为0,保存查询次数
QueryWrapper<PayRecord> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("trade_no",map.get("out_trade_no"));
PayRecord payRecord = payRecordMapper.selectOne(queryWrapper);
AddLimitVo addLimitVo = new AddLimitVo();
addLimitVo.setTradeNo(map.get("out_trade_no"));
addLimitVo.setPayMoney(payRecord.getMoney());
addLimitVo.setPayType(2);
addLimitVo.setUserId(payRecord.getUserId());
R<Boolean> booleanR = userLimitService.addLimit(addLimitVo);
if (booleanR.getCode()==1) {
return R.error("用户查询次数添加失败");
}
return R.ok(0,"充值成功");
}
return R.ok(1,"充值失败");
} catch (Exception e) {
return R.ok(1,"充值失败");
}
}
}
...@@ -56,7 +56,6 @@ public class VolunteerServiceImpl extends ServiceImpl<VolunteerMapper, Volunteer ...@@ -56,7 +56,6 @@ public class VolunteerServiceImpl extends ServiceImpl<VolunteerMapper, Volunteer
StringUtils.isBlank(fileUrl)) { StringUtils.isBlank(fileUrl)) {
throw new BaseException("操作错误"); throw new BaseException("操作错误");
} }
//判断文件类型= //判断文件类型=
boolean valid = this.validContentType(file.getOriginalFilename()); boolean valid = this.validContentType(file.getOriginalFilename());
if (!valid) { if (!valid) {
......
...@@ -36,55 +36,64 @@ public class Common { ...@@ -36,55 +36,64 @@ public class Common {
public static final String PAY_URL = "https://openapi.alipay.com/gateway.do"; public static final String PAY_URL = "https://openapi.alipay.com/gateway.do";
public static final String APP_ID = "2021002126609937"; public static final String APP_ID = "2021002126609937";
public static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAk3F1VulieP0smmNEyEHLWS0l" + public static final String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA2cUDFyw7sLp" +
"wKOlaLA3xMkfbNK4Hn1D6MtLvU58IBboh0JkZbcBPCVEK9Ma6VT3Q0wofYwy2dosHskTNIuBi4N8EuHvss7f1/x/rb7nI7QbuSlualx5MlD" + "TpICDURNefRfzr7I7qO5Spq6HwdyFbVv5m6wVzt3fXYTcDrVUuzfbV7+rrXqnvk7LNOp10qPtUyHyZKO2jTBBcUK5H0RPNz" +
"3cLIRm84QqEMeF1ndVAIDA3mA24BdxIuCmS7THHn46wZ9/KaudNq84XxRmy+JHAnQxj5+8pvCAdpA12hP7gTfj0ySRZDVvA3gks8yjlf4SGK" + "s1XInKaSTAznGH8dEAk6yQiwhSDpQzwoOq1Ool2MQocdkcBWwAMEcEUByIbJ4ABsrwXdmkgu2hDHR/GgLvarUp1zOXfZkaTK//L" +
"TqNDhM3AewWlwygEHUJPlL04JUm/lG3Q9viaqZv4SGv/MeUw0qXqpPuq9JzJUCmZjYq1gKXsqP3FMg8zBrLiZCjpoLa2ra7f6PbdtIwIDAQAB"; "1GUI5uCI+/omcqMPDIOwd8DfcNr0TKlXfAEixp9eVuU/b09b7vW7O9Vh+w0gmy5FN+BWX/JaRRL1DhRqbHl7Sl4/oGu1yjfQA5U" +
"8jXBgd+QjwdUiAXVwPdESS/AUbPWE517eH5FtQIDAQAB";
public static final String PRIVATE_KEY = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCTcXVW6WJ4/" + public static final String PRIVATE_KEY = "MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDAzZQsv" +
"SyaY0TIQctZLSXAo6VosDfEyR9s0rgefUPoy0u9TnwgFuiHQmRltwE8JUQr0xrpVPdDTCh9jDLZ2iweyRM0i4GLg3wS4e+yzt/" + "7wKd/01D8YPqrMcevfi0rS81H4NObDkF/Y37ii+/V1vlzODiTQajeCWOM42kijTSFHiietwx7PRa57GI/BzhRbs3MeK" +
"X/H+tvucjtBu5KW5qXHkyUPdwshGbzhCoQx4XWd1UAgMDeYDbgF3Ei4KZLtMcefjrBn38pq502rzhfFGbL4kcCdDGPn7ym8IB2kDXaE/" + "fvOkFVhUHklfOb9vT9E/y9TE7oWmbQVJThcytXerJbC95LDchJtBxQula/wmp0pwgkwFHM5IxNbT1Oh9UWKBn6" +
"uBN+PTJJFkNW8DeCSzzKOV/hIYpOo0OEzcB7BaXDKAQdQk+UvTglSb+UbdD2+Jqpm/hIa/8x5TDSpeqk+6r0nMlQKZmNirWApeyo/" + "OoOuHhgFhO19l9+X4hJtb/rjKl8/K4ULrlxPfrnX75tbJryBS1VnkxiWyHTara1WkRDIKmLRSrHeDG1hh1NKMOA" +
"cUyDzMGsuJkKOmgtratrt/o9t20jAgMBAAECggEAHTjmdbRJ1QrwlSTJlBseL214RwboGKicVP87oDjfTwOquu/" + "5jc2sfNOEuMhsgC1FY9sxd/Ap3dBp3TP3drAYpshaweYQwK9PyQ8b/TYgccIclgsJJ0BxMtAgMBAAECggEAD6sl" +
"X8gwlI8MGkRBCj7pGn2IPcdQkSEyTuR3WBJQN3AmWpv9ZNBfWNA16QM/QzxKbYNZlg80LSJNAz2D7xk7Pon5TnF1eig+8U20CAMTJzgWcDUs" + "VZWnZHpn234SrIdE0xWzO33ALnBeZhjAJWlFGzqBmTPh+gWhrBjkYRwSmmK3b3vlUXZZIT3wIlQ4ataCKrwU+G" +
"+k8KMUxEHcE7Mfp8KkG0sRPwZa9DqfuC4WOQuik9L6OphhVDrxnCGBKTW/KC1k2HfU25dMUDoirqY7fMbASJBkT14JO6o/" + "5idJFkrf6vMjCB4yQq9lAtHJCyAqs/+VkhB2touJJeFELnHMONX4FMVj94lpm63pCuBz4lMIuGPgwfP46Lgiuy4" +
"I0BBJU++ddfYpXTd2X6Lywy4PqJdstllHxzLxSJqPKgjk9Qd/iVozuHDDSuBvEp1a1DBOsjFHz0TGxmCoP2mrEN4e6WsQKBgQD6GnTuVUcI4" + "xOhcczcr3jwUmaVJvvDVtDJ477gsr/P/HhidCVwBE+vPovFmZ/cbI8ud31Ta2P7VFvrJKheL36GEJ1c1cHE7gcS" +
"UxaeHrj6sSiWTsBOXsXYrrmk380RTUEwzPdExFfvV4wkf48BQsUqCl6R+CdWSbcbRriXTJ6hlZ37IPuqmJ4me++LlDE9MrfRg1m0qkOFyVC" + "P7KsuzXfQP/6KjqM6QhWHem0s0vOUaplPrPhEArhmfhjqukD/U2lBTHzmE7iUlmPHEQRbQdwJIk4SQKBgQDgjd" +
"1ysAw+0i0EPjj5eeXguvoZ6RarDPI9hWM6m2dAGclkwFq2FBN3yzGQKBgQCW62DEh6eTmnyzBiQcojyEhY44Vp3y6RebXqlS/O1kpEn1sT1" + "+VxxJ8pYigvyDK+OiXwA8hKwMiQGhA1XexjBnf2rTEimBwMNU87lKmsgCRsv26DAiVyPqiA5R2nPL3N4Sk8k7f" +
"U6xBwE2na1udDv9PFzA6SapDw9ZRJWxbxgL07tG3A6V9p6MdjeCh/IR1OqO9STH8xag+YNwS28rSf+IEuM7bRUl6ESp9EXIt/jxh3syjYl" + "KD6gRBzC1/91XtI2HsljdGZemW1V/4D5o2Su9lmsPl3UV8U54izp5JzerXB+5sULpfKyKf5iVJtb+a7adwKBgQ" +
"j9ecdXypJNWFeOFmwKBgQCR4PCnO1JtmYwBkRiM7Bi5YTaLZk2nvEyrxQiDIoLkPj94CXEu2LOhvOX/eCmYaOWYj2gyHxgNpg3yTs3srYKt/" + "DbzXJXGMGc052StU4CwKeKElhTdB8uYbeML2Em0bwh1jZXwD/s2X7m8LAkOB2xaKQqrxjipcArIeAylI7xeEx24" +
"GSPxw4crh0qXrV5zBaw2JlkiidVMqbnL73DeoRMtBGFH/Idy1khnjFxPDvY9l1vGj85TrzJ6th4zheyBH1VsQKBgDSXdbNG6pi/PzFLtI3d" + "MVDk3C3BnZaZoiuvvWr0caGQHE0JHvtpCrs2xoXm7wMNsVLjc345ssEQM0ytVXsx/PcA1WwwrBAQNFiH4fEewK" +
"42Ty/aqYVJZvr/BOvobS6Q8nSTa7Ovo6qBHGUh8WwKSVVoEZKQLQ7A1sJu6hNY+XI1qI965AJSXNHp6FIueabJIawLtXOQPJSAHtOlFepp8" + "BgQDKBbm+lYADViXKgMlu8mrHg8nYzEqgeROSKLrrqCDrLWduXxQOO1DM5ZjEUeaDLmZpCER9BXi/Y7sgz2kjk" +
"QhEPLdavgHlvPfUzfSyV6gjZEUrmXMiIBXWMfAtD+87h9AoGANzOybVuH7XaPJfGFuKAMLSdsDUFFEAVkC37XF6nl5k1bC1LmHM2iJltmSh" + "vYqM7lTuXBGXaEGhq9Ul/9FI4OJj4I934jnUtxlO2PsqMPaW62syV4uClbgAoZDLATGlrV2GlFziqZLLtUq9UI" +
"N2nwJavbtbvycOFhLxRNNkhBDj3oZ8F/93vzyn1M/s0/y7ONUtBIqLdLAT9Q84xxVBFdOvVdja20J1NuQ8yYD4qInO/WcX2MOLXeCaGfMOg1XWaa0="; "jVwKBgQCmZGSGYotO+TNz+CRSGR27fB+5LVLdfcPBL6zQAj31L4B79WFvH0bd9J6jDIgN4TVFyr9/9BIBlOdv4t5" +
"DFdpss8MhYOAW7aFy1ePqxUydAXTT9Ly9yFC4mWqVW1fpP0+fv2ajx3mBTtWpJpUwKe4eDVAh4bRg10EtouPe8B" +
"eLOQKBgQCwsHZbrfgm8qrAhhoqPkxHHUDcQVhWpcBrv49ghpPLTsEPrOnYsFMCKb0nJc2goJ" +
"BQIT4QMu62i1jOInaIZyrf/1H3WuWhjI3SjObHiz1a0rmuCrFMPCpnAVlIYJvmAyrGJIvSSLEN33mUZnq1z4REgjn0FlzS0FMOVDRVAeMm7w==";
/** /**
* 沙箱 --支付宝支付app_id * 沙箱 --支付宝支付app_id
*/ */
public static final String APP_ID_CS = "2021000117607483"; public static final String APP_ID_CS = "2016101300675128";
public static final String ALIPAY_PUBLIC_KEY_CS = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAh5uAe8quhr05KrOnJ5Jrrp" + public static final String ALIPAY_PUBLIC_KEY_CS = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQE" +
"TphjEoFR4VnHFy9QDRoHK6ouFIz7ksCw6LS7A/S3Yhe3+bZbcvmJSKN1pVO6ssa8iuai81NAnylMZm5tOTaMl945OuqmC8qvIk9wg4AkYd" + "AovyCboYeJzNSUjBJmMss2NHo4JgAnn+cqnEUZFEeIO0u1JDGsxE3NLYwU54fM8OQunf3S6RxzIjZ/9jAaUtu" +
"TWSFRxDmQ1aZ711iyDUDtSYi0bQeS5s2OR9cGowwAsqyrMPYCT47f/+VmyftJcn3k3rS1+fo2dJTEmoeSCrg3oAMV5dL5iTzi5ehvWUWJR" + "LjVmJBAa3ac5leHpm5LKWl0olKYER3qZTJQFgoRymfZHzVqqDoVsnFJScfsNR7XDD9bsFiHa9R+c+fI+pPapHK" +
"YejyOi54Qtxjz5Nsp1I68BxHT2d8QFeKBgad0w83975tKauHgKHsQE3+TnQzOgyQo8XQB/5dWq3COO7ACNwK1TlPcyxKO1QRX1egW6bysySQIDAQAB"; "26o5IUvKWjPpjLTeTUuEV0grORLzxrH+R5IiabAlTBySvzi0fB9LGbrTtUh32VBDRnRuIIzPw97wLmp3WduhhAD" +
"L6pfoUYNNiKcT7rEJ0ac2p/Er0CLQCN6OzlpTVz58tMJoKQ0easCXh6MPCANBfWltnnb19JwncwUYzTerPVeQIDAQAB";
public static final String PRIVATE_KEY_CS = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCHm4B7yq6GvTkqs6cnkmu" + public static final String PRIVATE_KEY_CS = "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"; "qBfQXnbuplRrbyX3FJgVmHL8xC8CnflMnAoGAM/8aUAsEymAykirrZ32B5ZQL0lqJAfpjA30K1AfyjR3Skga" +
"moG+T6GCLiWxxT3z1gnzvAHKtmCdo7dyB68fuT5Mq18izGPvEYUNbjMCG89GsHxcXA3QtHNwwYab8KvWLTELV" +
"bIgEXjIyahTWbogGJ6qDohPRlswxbriPmnISkzkCgYEAz6Ce1GzA2Zf8EIc9G3zujO9BSKJEKHc30mN4LxlOhr" +
"TFmmjrgNNXMiqhVZBxVf+GwwHdI0Rz8OukagIHeCHdG6nwu2aW+B9NsDhusiXjwU1rb28l6KNHRZqQ74PVREYyU" +
"hTc2T2fobY0qmPBy2CIrO3gL4skn+ZZLHaUeK3sinQ=";
public static final String PAY_URL_CS = "https://openapi.alipaydev.com/gateway.do"; public static final String PAY_URL_CS = "https://openapi.alipaydev.com/gateway.do";
} }
package cn.wisenergy.service.common; package cn.wisenergy.service.common;
import cn.wisenergy.common.utils.R; import cn.wisenergy.common.utils.R;
import cn.wisenergy.common.utils.StringUtil;
import cn.wisenergy.mapper.*; import cn.wisenergy.mapper.*;
import cn.wisenergy.model.app.*; import cn.wisenergy.model.app.*;
import cn.wisenergy.model.enums.CardStatus; import cn.wisenergy.model.enums.CardStatus;
...@@ -11,7 +12,9 @@ import cn.wisenergy.model.vo.UserInfoVo; ...@@ -11,7 +12,9 @@ import cn.wisenergy.model.vo.UserInfoVo;
import cn.wisenergy.service.app.UserLimitService; import cn.wisenergy.service.app.UserLimitService;
import cn.wisenergy.service.app.UserVolunteerService; import cn.wisenergy.service.app.UserVolunteerService;
import cn.wisenergy.service.app.VolunteerService; import cn.wisenergy.service.app.VolunteerService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -161,7 +164,16 @@ public class VolunteerManager { ...@@ -161,7 +164,16 @@ public class VolunteerManager {
payRecord.setResult(0); payRecord.setResult(0);
payRecord.setType(addLimitVo.getPayType()); payRecord.setType(addLimitVo.getPayType());
payRecord.setUserId(addLimitVo.getUserId()); payRecord.setUserId(addLimitVo.getUserId());
int pay = payRecordMapper.add(payRecord); payRecord.setTradeNo(addLimitVo.getTradeNo());
QueryWrapper<PayRecord> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("trade_no",payRecord.getTradeNo());
PayRecord byTradeNo = payRecordMapper.selectOne(queryWrapper);
int pay =0;
if(null!=byTradeNo){
pay = payRecordMapper.updateById(payRecord);
}else{
pay = payRecordMapper.add(payRecord);
}
if (pay == 0) { if (pay == 0) {
return false; return false;
} }
......
package cn.wisenergy.service.util;
import com.itextpdf.text.DocumentException;
import org.apache.poi.util.DocumentHelper;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.management.Attribute;
import javax.swing.text.Document;
import javax.swing.text.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringWriter;
import java.util.*;
public class MapToXmlUtils {
/**
* map 对象转换成 xml 字符串
**//*
public static String mapToXml(Map map) throws Exception{
if (null == map) return null;
System.out.println("转换前的Map对象数据:" + map.toString());
StringBuffer sb = new StringBuffer();
*//** 添加xml 的公共头信息 *//*
sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
mapToXmlHelp(map, sb);
System.out.println("将map转成xml后的数据:" + sb.toString());
return sb.toString();
}
*//**
* 转换帮助方法
**//*
private static void mapToXmlHelp(Map map, StringBuffer str) throws Exception{
Set set = map.keySet();
*//** 遍历key *//*
for (Iterator it = set.iterator(); it.hasNext();) {
String key = (String) it.next();
Object value = map.get(key);
if (null == value)
value = "";
*//** 如果对象是集合 *//*
if (value.getClass().getName().equals("java.util.ArrayList")) {
ArrayList list = (ArrayList) map.get(key);
str.append("<" + key + ">");
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
mapToXmlHelp(hm, str);
}
str.append("</" + key + ">");
*//** 如果该集合对象的长度只有1,那么默认重复添加集合下节点 *//*
if (null !=list && !list.isEmpty() && list.size() <= 1) {
str.append("<" + key + ">");
for (int i = 0; i < list.size(); i++) {
HashMap hm = (HashMap) list.get(i);
mapToXmlHelp(hm, str);
}
str.append("</" + key + ">");
}
*//** 对象非集合时 *//*
} else {
if (value instanceof HashMap) {
str.append("<" + key + ">");
mapToXmlHelp((HashMap) value, str);
str.append("</" + key + ">");
} else {
str.append("<" + key + ">" + value + "</" + key + ">");
}
}
}
}*/
/**
* XML格式字符串转换为Map
*
* @param strXML XML字符串
* @return XML数据转换后的Map
* @throws Exception
*/
public static Map<String, String> xmlToMap(String strXML) throws Exception {
try {
Map<String, String> data = new HashMap<String, String>();
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
InputStream stream = new ByteArrayInputStream(strXML.getBytes("UTF-8"));
org.w3c.dom.Document doc = documentBuilder.parse(stream);
doc.getDocumentElement().normalize();
NodeList nodeList = doc.getDocumentElement().getChildNodes();
for (int idx = 0; idx < nodeList.getLength(); ++idx) {
Node node = nodeList.item(idx);
if (node.getNodeType() == Node.ELEMENT_NODE) {
org.w3c.dom.Element element = (org.w3c.dom.Element) node;
data.put(element.getNodeName(), element.getTextContent());
}
}
try {
stream.close();
} catch (Exception ex) {
// do nothing
}
return data;
} catch (Exception ex) {
throw ex;
}
}
/**
* 将Map转换为XML格式的字符串
*
* @param data Map类型数据
* @return XML格式的字符串
* @throws Exception
*/
public static String mapToXml(Map<String, String> data) throws Exception {
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder= documentBuilderFactory.newDocumentBuilder();
org.w3c.dom.Document document = documentBuilder.newDocument();
org.w3c.dom.Element root = document.createElement("xml");
document.appendChild(root);
for (String key: data.keySet()) {
String value = data.get(key);
if (value == null) {
value = "";
}
value = value.trim();
org.w3c.dom.Element filed = document.createElement(key);
filed.appendChild(document.createTextNode(value));
root.appendChild(filed);
}
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
String output = writer.getBuffer().toString(); //.replaceAll("\n|\r", "");
try {
writer.close();
}
catch (Exception ex) {
}
return output;
}
}
...@@ -49,8 +49,6 @@ ...@@ -49,8 +49,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
...@@ -116,10 +114,8 @@ ...@@ -116,10 +114,8 @@
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.36.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.36.Final" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.2.9.RELEASE" level="project" /> <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.2.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" /> <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.54" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" /> <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
...@@ -131,8 +127,6 @@ ...@@ -131,8 +127,6 @@
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" /> <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" /> <orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" /> <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" /> <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
...@@ -153,6 +147,28 @@ ...@@ -153,6 +147,28 @@
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:20.1.0" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains:annotations:20.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.3" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5" level="project" />
<orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.11.33.ALL" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.6.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" /> <orderEntry type="library" name="Maven: org.apache.commons:commons-lang3:3.8.1" level="project" />
<orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" /> <orderEntry type="library" name="Maven: commons-lang:commons-lang:2.6" level="project" />
<orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" /> <orderEntry type="library" name="Maven: commons-pool:commons-pool:1.6" level="project" />
...@@ -178,7 +194,6 @@ ...@@ -178,7 +194,6 @@
<orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" /> <orderEntry type="library" name="Maven: stax:stax-api:1.0.1" level="project" />
<orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" /> <orderEntry type="library" name="Maven: cglib:cglib:3.1" level="project" />
<orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" /> <orderEntry type="library" name="Maven: org.ow2.asm:asm:4.2" level="project" />
<orderEntry type="library" name="Maven: org.slf4j:slf4j-api:1.7.26" level="project" />
<orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" /> <orderEntry type="library" name="Maven: org.ehcache:ehcache:3.6.3" level="project" />
</component> </component>
</module> </module>
\ No newline at end of file
...@@ -4,12 +4,12 @@ import cn.wisenergy.common.utils.R; ...@@ -4,12 +4,12 @@ import cn.wisenergy.common.utils.R;
import cn.wisenergy.model.dto.PayPageDto; import cn.wisenergy.model.dto.PayPageDto;
import cn.wisenergy.model.dto.PayQueryDto; import cn.wisenergy.model.dto.PayQueryDto;
import cn.wisenergy.service.app.AliPayService; import cn.wisenergy.service.app.AliPayService;
import cn.wisenergy.service.app.TestWxPayService;
import cn.wisenergy.service.app.WxPayService; import cn.wisenergy.service.app.WxPayService;
import cn.wisenergy.service.common.Common; import cn.wisenergy.service.common.Common;
import com.alipay.api.AlipayApiException; import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient; import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient; import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayTradePagePayRequest;
import com.alipay.api.request.AlipayTradeQueryRequest; import com.alipay.api.request.AlipayTradeQueryRequest;
import com.alipay.api.response.AlipayTradeQueryResponse; import com.alipay.api.response.AlipayTradeQueryResponse;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
...@@ -18,10 +18,7 @@ import io.swagger.annotations.ApiOperation; ...@@ -18,10 +18,7 @@ import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.crypto.IllegalBlockSizeException; import javax.crypto.IllegalBlockSizeException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
...@@ -47,17 +44,23 @@ public class PayController { ...@@ -47,17 +44,23 @@ public class PayController {
@Autowired @Autowired
private WxPayService wxPayService; private WxPayService wxPayService;
@Autowired
private TestWxPayService testWxPayService;
@Autowired @Autowired
private AliPayService aliPayService; private AliPayService aliPayService;
@ApiOperation(value = "PC支付宝-支付接口", notes = "PC支付宝-支付接口", httpMethod = "POST") @ApiOperation(value = "PC支付宝-支付接口", notes = "PC支付宝-支付接口", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "参数", dataType = "PayPageDto") @ApiImplicitParam(name = "payPageDto", value = "参数", dataType = "PayPageDto")
@PostMapping("/page") @PostMapping("/page")
public R<String> doPost(@RequestBody PayPageDto payPageDto, HttpServletRequest request, HttpServletResponse httpResponse) { //public R<String> doPost(@RequestBody PayPageDto payPageDto, HttpServletRequest request, HttpServletResponse httpResponse) {
public R<String> doPost(Integer userId,Integer payType,Integer total_amount, HttpServletRequest request, HttpServletResponse httpResponse) {
PayPageDto payPageDto = new PayPageDto();
payPageDto.setTotal(total_amount);
payPageDto.setUserId(userId);
payPageDto.setPayType(payType);
return aliPayService.doPost(payPageDto,request,httpResponse); return aliPayService.doPost(payPageDto,request,httpResponse);
} }
@ApiOperation(value = "PC支付宝-交易查询", notes = "PC支付宝-交易查询", httpMethod = "POST") @ApiOperation(value = "PC支付宝-交易查询", notes = "PC支付宝-交易查询", httpMethod = "POST")
...@@ -75,11 +78,21 @@ public class PayController { ...@@ -75,11 +78,21 @@ public class PayController {
return R.ok(response.getBody()); return R.ok(response.getBody());
} }
/**
* 支付宝回调函数
* 支付成功后服务器会调用此方法
*/
@ApiOperation(value = "支付回调", notes = "支付回调", httpMethod = "POST")
@RequestMapping(value = "/aliPayCallBack.do")
public R<String> aliPayCallBack(HttpServletResponse response, HttpServletRequest request) {
return aliPayService.aliPayCallBack(response,request);
}
@ApiOperation(value = "微行支付-统一下单", notes = "微行支付-统一下单", httpMethod = "POST")
@ApiOperation(value = "微行支付-统一下单测试", notes = "微行支付-统一下单", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto") @ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto")
@PostMapping("/wxPay") @PostMapping("/wxPayTest")
public R<String> wxPay(@RequestBody PayPageDto payPageDto) throws AlipayApiException, UnsupportedEncodingException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException { public R<String> wxPayTest(@RequestBody PayPageDto payPageDto) throws AlipayApiException, UnsupportedEncodingException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException {
return wxPayService.wxPay(payPageDto); return wxPayService.wxPay(payPageDto);
} }
...@@ -101,4 +114,23 @@ public class PayController { ...@@ -101,4 +114,23 @@ public class PayController {
public R<String> wx_Pay(@RequestBody PayPageDto payPageDto) throws AlipayApiException, IOException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, IllegalBlockSizeException { public R<String> wx_Pay(@RequestBody PayPageDto payPageDto) throws AlipayApiException, IOException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, SignatureException, IllegalBlockSizeException {
return wxPayService.wx_Pay(payPageDto); return wxPayService.wx_Pay(payPageDto);
} }
@ApiOperation(value = "微行支付-统一下单", notes = "微行支付-统一下单", httpMethod = "POST")
@ApiImplicitParam(name = "payPageDto", value = "支付入参", dataType = "PayPageDto")
@PostMapping("/wxPay")
public R<String> wxPay(@RequestBody PayPageDto payPageDto,HttpServletResponse response){
return testWxPayService.wxPay(payPageDto, response);
}
/**
* 微信回调函数
* 支付成功后微信服务器会调用此方法
*/
@ApiOperation(value = "微信回调函数", notes = "微信回调函数", httpMethod = "POST")
@RequestMapping(value = "/wxPayCallBack.do")
public R<String> wxPayCallBack(HttpServletRequest request, HttpServletResponse response) {
return testWxPayService.wxPayCallBack(request,response);
}
} }
...@@ -4,6 +4,7 @@ spring: ...@@ -4,6 +4,7 @@ spring:
druid: druid:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://192.168.110.165:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8 url: jdbc:mysql://192.168.110.165:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
#url: jdbc:mysql://localhost:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=GMT%2B8
username: root username: root
password: adm4HYservice$ password: adm4HYservice$
initial-size: 10 initial-size: 10
......
...@@ -7,9 +7,9 @@ spring: ...@@ -7,9 +7,9 @@ spring:
type: com.alibaba.druid.pool.DruidDataSource type: com.alibaba.druid.pool.DruidDataSource
druid: druid:
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/dydb?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8 url: jdbc:mysql://localhost:3306/volunteer?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
username: root username: root
password: root password: adm4HYservice$
initial-size: 10 initial-size: 10
max-active: 100 max-active: 100
min-idle: 10 min-idle: 10
......
...@@ -51,8 +51,6 @@ ...@@ -51,8 +51,6 @@
<orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.1.7.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-undertow:2.1.5.RELEASE" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-core:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.xnio:xnio-api:3.3.8.Final" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.jboss.xnio:xnio-nio:3.3.8.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-servlet:2.0.20.Final" level="project" />
<orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" /> <orderEntry type="library" name="Maven: org.jboss.spec.javax.annotation:jboss-annotations-api_1.2_spec:1.0.2.Final" level="project" />
<orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" /> <orderEntry type="library" name="Maven: io.undertow:undertow-websockets-jsr:2.0.20.Final" level="project" />
...@@ -118,10 +116,8 @@ ...@@ -118,10 +116,8 @@
<orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.36.Final" level="project" /> <orderEntry type="library" name="Maven: io.netty:netty-resolver:4.1.36.Final" level="project" />
<orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.2.9.RELEASE" level="project" /> <orderEntry type="library" name="Maven: io.projectreactor:reactor-core:3.2.9.RELEASE" level="project" />
<orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" /> <orderEntry type="library" name="Maven: org.reactivestreams:reactive-streams:1.0.2" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.54" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-swagger2:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" /> <orderEntry type="library" name="Maven: io.swagger:swagger-models:1.5.20" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-spi:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-core:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-schema:2.9.2" level="project" />
...@@ -133,8 +129,6 @@ ...@@ -133,8 +129,6 @@
<orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.2.0.Final" level="project" />
<orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" /> <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.9.2" level="project" />
<orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" /> <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.9.1" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" /> <orderEntry type="library" name="Maven: joda-time:joda-time:2.10.2" level="project" />
<orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.7" level="project" /> <orderEntry type="library" name="Maven: cn.hutool:hutool-all:4.6.7" level="project" />
<orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.23" level="project" /> <orderEntry type="library" name="Maven: io.swagger:swagger-annotations:1.5.23" level="project" />
...@@ -142,6 +136,27 @@ ...@@ -142,6 +136,27 @@
<orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-core:1.2.3" level="project" />
<orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" /> <orderEntry type="library" name="Maven: ch.qos.logback:logback-classic:1.2.3" level="project" />
<orderEntry type="library" name="Maven: org.jetbrains:annotations:20.1.0" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains:annotations:20.1.0" level="project" />
<orderEntry type="library" name="Maven: com.aliyun:aliyun-java-sdk-core:4.5.3" level="project" />
<orderEntry type="library" name="Maven: com.google.code.gson:gson:2.8.5" level="project" />
<orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" />
<orderEntry type="library" name="Maven: javax.xml.bind:jaxb-api:2.3.1" level="project" />
<orderEntry type="library" name="Maven: javax.activation:javax.activation-api:1.2.0" level="project" />
<orderEntry type="library" name="Maven: org.jacoco:org.jacoco.agent:runtime:0.8.5" level="project" />
<orderEntry type="library" name="Maven: org.ini4j:ini4j:0.5.4" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-api:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-util:0.33.0" level="project" />
<orderEntry type="library" name="Maven: io.opentracing:opentracing-noop:0.33.0" level="project" />
<orderEntry type="library" name="Maven: com.alipay.sdk:alipay-sdk-java:4.11.33.ALL" level="project" />
<orderEntry type="library" name="Maven: org.bouncycastle:bcprov-jdk15on:1.62" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okhttp3:okhttp:3.6.0" level="project" />
<orderEntry type="library" name="Maven: com.squareup.okio:okio:1.11.0" level="project" />
<orderEntry type="library" name="Maven: com.github.wechatpay-apiv3:wechatpay-apache-httpclient:0.2.1" level="project" />
<orderEntry type="library" scope="RUNTIME" name="Maven: org.apache.httpcomponents:httpmime:4.5.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-annotations:2.9.0" level="project" />
<orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-core:2.9.8" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itextpdf:5.5.13" level="project" />
<orderEntry type="library" name="Maven: com.itextpdf:itext-asian:5.2.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" /> <orderEntry type="library" name="Maven: org.apache.shiro:shiro-spring:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" /> <orderEntry type="library" name="Maven: org.apache.shiro:shiro-core:1.4.0" level="project" />
<orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" /> <orderEntry type="library" name="Maven: org.apache.shiro:shiro-lang:1.4.0" level="project" />
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment