fix: 重构优化代码
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
index 149c3ae..9f450a9 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/AgentResponse.java
@@ -72,4 +72,14 @@
public AgentResponse() {
}
+
+ public AgentResponse<T> copyFrom(AgentResponse<?> src) {
+ this.agentBody = src.agentBody;
+ this.agentCode = src.agentCode;
+ this.agentMsg = src.agentMsg;
+ this.agentRefno = src.agentRefno;
+ this.code = src.code;
+ this.dtlStatus = src.dtlStatus;
+ return this;
+ }
}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
index d355f13..4b8b1c9 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/wechat_service_impl.kt
@@ -361,97 +361,97 @@
override fun dopayInit(transaction: TTransactionMain): AgentResponse<QrcodePayTrans> {
val agentResponse = AgentResponse<QrcodePayTrans>()
- //H5 支付
- // val trans = agentServiceProxy.qrcodePayTransFindByRefno(transaction.refno)
- // agentResponse.payload = trans
- val bean = WechatReqResp().apply {
- this.appid = "wx03d12be843cdadd9"
- this.mch_id = "1513444041"
- this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
- this.out_trade_no = transaction.refno
- this.total_fee = 1
- this.spbill_create_ip = "14.23.150.211"
- this.body = "充值测试"
- this.notify_url = "http://ykt.supwisdom.com:10201/payapi/api/notify/inapp/wechat/100010"
- this.trade_type = "MWEB"
- this.scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \" https://pay.qq.com\",\"wap_name\": \"微信支付\"}}"
- }
- bean.generaSign()
- val xml = bean.generaXML()
- restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
- val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_UNIONPAY, xml, String::class.java)
- val eleMap = XmlUtils.parseXml(res.body)
- val retcode = eleMap["return_code"]
- val resultCode = eleMap["result_code"]
+ //H5 支付
+ // val trans = agentServiceProxy.qrcodePayTransFindByRefno(transaction.refno)
+ // agentResponse.payload = trans
+ val bean = WechatReqResp().apply {
+ this.appid = "wx03d12be843cdadd9"
+ this.mch_id = "1513444041"
+ this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+ this.out_trade_no = transaction.refno
+ this.total_fee = 1
+ this.spbill_create_ip = "14.23.150.211"
+ this.body = "充值测试"
+ this.notify_url = "http://ykt.supwisdom.com:10201/payapi/api/notify/inapp/wechat/100010"
+ this.trade_type = "MWEB"
+ this.scene_info = "{\"h5_info\": {\"type\":\"Wap\",\"wap_url\": \" https://pay.qq.com\",\"wap_name\": \"微信支付\"}}"
+ }
+ bean.generaSign()
+ val xml = bean.generaXML()
+ restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
+ val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_UNIONPAY, xml, String::class.java)
+ val eleMap = XmlUtils.parseXml(res.body)
+ val retcode = eleMap["return_code"]
+ val resultCode = eleMap["result_code"]
- if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
- && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
- agentResponse.code = AgentCode.REQUIRE_QUERY
- agentResponse.agentCode = resultCode
- agentResponse.agentMsg = eleMap["return_msg"]
- when {
- transaction.transCode == TradeCode.TRANSCODE_H5PAY -> agentResponse.agentBody = eleMap["mweb_url"]
- transaction.transCode == TradeCode.TRANSCODE_APPPAY -> {
- bean.prepay_id = eleMap["prepay_id"]
- bean.timestamp = DateUtil.getNowSecond().toString()
- bean.nonce_str = getRandomString(30)
- bean.wpackage = "Sign=WXPay"
- bean.generaAPPSign()
- agentResponse.agentBody = bean.generaAPPParamters()
- }
- transaction.transCode == TradeCode.TRANSCODE_JSPAY || transaction.transCode == TradeCode.TRANSCODE_SMPAY -> {
- bean.prepay_id = eleMap["prepay_id"]
- bean.timestamp = DateUtil.getNowSecond().toString()
- bean.nonce_str = getRandomString(30)
- bean.generaJSAPISign()
- agentResponse.agentBody = bean.generaJSAPIParamters()
- }
+ if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
+ && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
+ agentResponse.code = AgentCode.REQUIRE_QUERY
+ agentResponse.agentCode = resultCode
+ agentResponse.agentMsg = eleMap["return_msg"]
+ when {
+ transaction.transCode == TradeCode.TRANSCODE_H5PAY -> agentResponse.agentBody = eleMap["mweb_url"]
+ transaction.transCode == TradeCode.TRANSCODE_APPPAY -> {
+ bean.prepay_id = eleMap["prepay_id"]
+ bean.timestamp = DateUtil.getNowSecond().toString()
+ bean.nonce_str = getRandomString(30)
+ bean.wpackage = "Sign=WXPay"
+ bean.generaAPPSign()
+ agentResponse.agentBody = bean.generaAPPParamters()
}
- agentResponse.agentRefno = eleMap["prepay_id"]
- } else {
- logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" }
- agentResponse.code = AgentCode.FAIL
- agentResponse.agentCode = eleMap["err_code"]
- agentResponse.agentMsg = eleMap["err_code_des"]
+ transaction.transCode == TradeCode.TRANSCODE_JSPAY || transaction.transCode == TradeCode.TRANSCODE_SMPAY -> {
+ bean.prepay_id = eleMap["prepay_id"]
+ bean.timestamp = DateUtil.getNowSecond().toString()
+ bean.nonce_str = getRandomString(30)
+ bean.generaJSAPISign()
+ agentResponse.agentBody = bean.generaJSAPIParamters()
+ }
}
+ agentResponse.agentRefno = eleMap["prepay_id"]
+ } else {
+ logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" }
+ agentResponse.code = AgentCode.FAIL
+ agentResponse.agentCode = eleMap["err_code"]
+ agentResponse.agentMsg = eleMap["err_code_des"]
+ }
return agentResponse
}
override fun doPayQuery(transaction: TTransactionMain): AgentResponse<QrcodePayTrans> {
val agentResponse = AgentResponse<QrcodePayTrans>()
- //H5 支付
- val bean = WechatReqResp().apply {
- this.appid = "wx03d12be843cdadd9"
- this.mch_id = "1513444041"
- this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
- this.out_trade_no = transaction.refno
+ //H5 支付
+ val bean = WechatReqResp().apply {
+ this.appid = "wx03d12be843cdadd9"
+ this.mch_id = "1513444041"
+ this.key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+ this.out_trade_no = transaction.refno
+ }
+ bean.generalQuerySign()
+ val xml = bean.generalQueryXML()
+ restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
+ val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_QUERY, xml, String::class.java)
+ val eleMap = XmlUtils.parseXml(res.body)
+ val retcode = eleMap["return_code"]
+ val resultCode = eleMap["result_code"]
+ val tradeState = eleMap["trade_state"]
+ if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
+ && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
+ agentResponse.code = AgentCode.REQUIRE_QUERY
+ agentResponse.agentCode = resultCode
+ agentResponse.agentMsg = eleMap["return_msg"]
+ when (tradeState) {
+ "SUCCESS" -> agentResponse.dtlStatus = DtlStatus.SUCCESS
+ "REFUND" -> agentResponse.dtlStatus = DtlStatus.REFUND
+ "NOTPAY", "CLOSED", "REVOKED", "PAYERROR" -> agentResponse.dtlStatus = DtlStatus.FAIL
+ "USERPAYING" -> agentResponse.dtlStatus = DtlStatus.WAIT
}
- bean.generalQuerySign()
- val xml = bean.generalQueryXML()
- restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8)
- val res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_QUERY, xml, String::class.java)
- val eleMap = XmlUtils.parseXml(res.body)
- val retcode = eleMap["return_code"]
- val resultCode = eleMap["result_code"]
- val tradeState = eleMap["trade_state"]
- if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode
- && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
- agentResponse.code = AgentCode.REQUIRE_QUERY
- agentResponse.agentCode = resultCode
- agentResponse.agentMsg = eleMap["return_msg"]
- when (tradeState) {
- "SUCCESS" -> agentResponse.dtlStatus = DtlStatus.SUCCESS
- "REFUND" -> agentResponse.dtlStatus = DtlStatus.REFUND
- "NOTPAY", "CLOSED", "REVOKED", "PAYERROR" -> agentResponse.dtlStatus = DtlStatus.FAIL
- "USERPAYING" -> agentResponse.dtlStatus = DtlStatus.WAIT
- }
- } else {
- logger.error { "code=${eleMap["err_code"]}},des=${eleMap["err_code_des"]}" }
- agentResponse.code = AgentCode.FAIL
- agentResponse.agentCode = eleMap["err_code"]
- agentResponse.agentMsg = eleMap["err_code_des"]
- }
+ } else {
+ logger.error { "code=${eleMap["err_code"]}},des=${eleMap["err_code_des"]}" }
+ agentResponse.code = AgentCode.FAIL
+ agentResponse.agentCode = eleMap["err_code"]
+ agentResponse.agentMsg = eleMap["err_code_des"]
+ }
return agentResponse
}
@@ -478,8 +478,8 @@
}
val temp = StringUtil.paraFilter(param)
var signStr = StringUtil.createLinkString(temp)
- // val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_WECHAT, transaction.shopDtl.shopaccno, false, false)
- val key ="3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
+ // val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_WECHAT, transaction.shopDtl.shopaccno, false, false)
+ val key = "3VVhvjD2F0kHzayrjgLM81qcz39FgAv1"
signStr += "&key=$key"
val signRet = MD5.encodeByMD5(signStr)
logger.error("*******signStr=$signStr")
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
index 10579ca..841d411 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/inapp_wechatpay.kt
@@ -6,6 +6,7 @@
import com.supwisdom.dlpay.api.domain.TShopdtl
import com.supwisdom.dlpay.api.domain.TTransactionMain
import com.supwisdom.dlpay.api.service.SourceTypeService
+import mu.KotlinLogging
import org.dom4j.Element
import org.dom4j.io.SAXReader
import org.springframework.stereotype.Component
@@ -17,22 +18,15 @@
class WechatInAppService(private val sourceTypeService: SourceTypeService,
private val wechatService: WechatService)
: InAppPayService<TTransactionMain> {
- val APIUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder"
+
+ private val logger = KotlinLogging.logger { }
override fun init(transation: TTransactionMain): AgentResponse<TTransactionMain> {
val wechatPayResponse = AgentResponse<TTransactionMain>();
- System.err.println("#########");
- val shopDtlTemp = TShopdtl();
- transation.shopDtl = shopDtlTemp; //transaction.shopDtl must not be null
val agentResponse = wechatService.dopayInit(transation);
- System.err.println(agentResponse);
- wechatPayResponse.agentBody = agentResponse.agentBody;
- wechatPayResponse.agentCode = agentResponse.agentCode;
- wechatPayResponse.agentMsg = agentResponse.agentMsg;
- wechatPayResponse.agentRefno = agentResponse.agentRefno;
- wechatPayResponse.code = agentResponse.code;
- wechatPayResponse.dtlStatus = agentResponse.dtlStatus;
- wechatPayResponse.payload = transation
+ logger.debug { agentResponse }
+ wechatPayResponse.copyFrom(agentResponse)
+ .payload = transation
return wechatPayResponse;
}
@@ -40,38 +34,29 @@
val wechatPayResponse = AgentResponse<TTransactionMain>();
// 解析结果存储在HashMap
val map = HashMap<String, String>()
- val inputStream = request.inputStream
// 读取输入流
val reader = SAXReader()
- val document = reader.read(inputStream)
- // 得到xml根元素
- val root = document.rootElement
- // 得到根元素的所有子节点
- val elementList = root.elements() as MutableList<Element>
+ val document = reader.read(request.inputStream)
// 遍历所有子节点
- for (e in elementList) {
+ for (e in document.rootElement.elements()) {
map[e.name] = e.text
}
// 释放资源
- inputStream.close()
+ request.inputStream.close()
val resp = wechatService.doPayNotify(map)
if (resp.code == AgentCode.SUCCESS) {
wechatPayResponse.agentBody = "<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"
} else {
wechatPayResponse.agentBody = "<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[" + resp.agentMsg + "]]></return_msg></xml>"
}
- return wechatPayResponse;
+ return wechatPayResponse
}
override fun query(transation: TTransactionMain): AgentResponse<TTransactionMain> {
- val wechatPayResponse = AgentResponse<TTransactionMain>();
- val agentResponse = wechatService.doPayQuery(transation);
- wechatPayResponse.agentMsg = agentResponse.agentMsg;
- wechatPayResponse.agentCode = agentResponse.agentCode;
- wechatPayResponse.agentBody = agentResponse.agentBody;
- wechatPayResponse.agentRefno = agentResponse.agentRefno;
- wechatPayResponse.code = agentResponse.code;
- wechatPayResponse.dtlStatus = agentResponse.dtlStatus;
- return wechatPayResponse;
+ val wechatPayResponse = AgentResponse<TTransactionMain>()
+ val agentResponse = wechatService.doPayQuery(transation)
+ wechatPayResponse.copyFrom(agentResponse)
+ .payload = transation
+ return wechatPayResponse
}
}
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
index 93e305d..cfccf8d 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/consume_api_controller.kt
@@ -30,6 +30,7 @@
@RestController
@RequestMapping("/api/consume")
+@Validated
class ConsumeAPIController(private val qrCodeService: QRCodeService,
private val accountUtilServcie: AccountUtilServcie,
private val userService: UserService,
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
index 95e6e03..a87324f 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/transaction_controller.kt
@@ -232,7 +232,6 @@
TenantContextHolder.getContext().tenant = tenantDetails.get()
val agent = agentPayServiceContext.findInAppPayService<Any>(sourcetype)
?: return ResponseBodyBuilder.badRequest("请求支付类型错误 <$sourcetype> 不存在")
- TenantContextHolder.getContext().tenant = tenantDetails.get()
val agentResponse = agent.notify(request)
return ResponseBodyBuilder.ok(agentResponse.agentBody)