From: qiaowei Date: Wed, 24 Jul 2019 09:26:22 +0000 (+0800) Subject: 调试支付接口 X-Git-Tag: 1.0.0^2~4 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=3d0b5b5a04217c944e6a8d4fa8d1e015e635570c;p=epayment%2Ffood_payapi.git 调试支付接口 --- diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QrcodePayParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QrcodePayParam.java index d8e4f13b..600d773c 100644 --- a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QrcodePayParam.java +++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QrcodePayParam.java @@ -47,11 +47,22 @@ public class QrcodePayParam extends APIRequestParam { @Sign @NotNull(message = "必须指定是否匿名支付", groups = ConfirmAction.class) private Boolean anonymous; + @Sign + @NotEmpty(message = "流水类型不能为空", groups = {InitAction.class, ConfirmAction.class}) + private String dtltype; /**请求IP*/ @Sign private String spip; + public String getDtltype() { + return dtltype; + } + + public void setDtltype(String dtltype) { + this.dtltype = dtltype; + } + public String getSpip() { return spip; } diff --git a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java index 2d09e9dc..937e116d 100644 --- a/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java +++ b/payapi-sdk/src/test/java/com/supwisdom/dlpay/paysdktest/CitizenCardPayProxyTest.java @@ -154,20 +154,22 @@ public class CitizenCardPayProxyTest { QrcodePayParam param = new QrcodePayParam(); param.setAmount(1); - param.setAnonymous(true); + param.setAnonymous(false); param.setBillno(DateUtil.getNow()); param.setQrcodeFormat("origin"); param.setTransdate(DateUtil.getNow("yyyyMMdd")); param.setTranstime(DateUtil.getNow("HHmmss")); - param.setTenantid("default"); + //param.setTenantid("default"); param.setShopaccno("2000000012"); - param.setQrcode("286972142340737770"); + param.setQrcode("134869374484110144"); + param.setDtltype("canteen"); + param.setSpip("172.28.43.3"); QrcodePayResponse response = consumePropxy.qrcodePayInit(param); assertThat("qrcodeInit " + response.getRetmsg() + response.getException(), response.getRetcode(), equalTo(0)); response = consumePropxy.qrcodePayConfirm(param); - assertThat("qrcodeConfirm " + response.getRetmsg() + response.getException(), + assertThat("qrcodeConfirm:" + response.getRetmsg() + response.getException()+",query="+response.isRequireQuery(), response.getRetcode(), equalTo(0)); } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/agent/service/impl/QrcodePatternServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/agent/service/impl/QrcodePatternServiceImpl.java index 4da560f6..c14ee51e 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/agent/service/impl/QrcodePatternServiceImpl.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/agent/service/impl/QrcodePatternServiceImpl.java @@ -13,36 +13,36 @@ import java.util.List; @Service public class QrcodePatternServiceImpl implements QrcodePatternService { - private final QrcodePatternDao qrcodePatternDao; - - public QrcodePatternServiceImpl(QrcodePatternDao qrcodePatternDao) { - this.qrcodePatternDao = qrcodePatternDao; - } - - @Override - @Cacheable(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern')") - public List getAllQrcodePattern() { - return qrcodePatternDao.findByTenantid(TenantContext.getTenantSchema()); - } - - @Override - @CacheEvict(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern') + '.*'") - public void deleteAllQrcodePattern() { - qrcodePatternDao.deleteByTenantid(TenantContext.getTenantSchema()); - } - - @Override - @CacheEvict(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern') + '.*'") - public QrcodePattern saveOrUpdateQrcodePattern(@NotNull QrcodePattern pattern) { - if (pattern.getTenantid() == null || pattern.getTenantid().isEmpty()) { - pattern.setTenantid(TenantContext.getTenantSchema()); + private final QrcodePatternDao qrcodePatternDao; + + public QrcodePatternServiceImpl(QrcodePatternDao qrcodePatternDao) { + this.qrcodePatternDao = qrcodePatternDao; + } + + @Override + @Cacheable(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern')") + public List getAllQrcodePattern() { + return qrcodePatternDao.findByTenantid(TenantContext.getTenantSchema()); + } + + @Override + @CacheEvict(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern') + '.*'", allEntries = true) + public void deleteAllQrcodePattern() { + qrcodePatternDao.deleteByTenantid(TenantContext.getTenantSchema()); + } + + @Override + @CacheEvict(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern') + '.*'", allEntries = true) + public QrcodePattern saveOrUpdateQrcodePattern(@NotNull QrcodePattern pattern) { + if (pattern.getTenantid() == null || pattern.getTenantid().isEmpty()) { + pattern.setTenantid(TenantContext.getTenantSchema()); + } + return qrcodePatternDao.save(pattern); + } + + @Override + @Cacheable(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern', #sourceType)") + public List findAllBySourcetype(String sourceType) { + return qrcodePatternDao.findBySourceTypeAndTenantid(sourceType, TenantContext.getTenantSchema()); } - return qrcodePatternDao.save(pattern); - } - - @Override - @Cacheable(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern', #sourceType)") - public List findAllBySourcetype(String sourceType) { - return qrcodePatternDao.findBySourceTypeAndTenantid(sourceType, TenantContext.getTenantSchema()); - } } diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java index a4767f2e..c961f323 100644 --- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java +++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java @@ -23,7 +23,6 @@ public class TPersondtl { private String accdate; //记账日期 @Column(name = "USERID", length = 32) - @NotNull private String userid; //用户ID,或账号 @Column(name = "ACCNO", length = 32) diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/alipay_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/alipay_service_impl.kt index cc19440d..ccae15f9 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/alipay_service_impl.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/alipay_service_impl.kt @@ -66,24 +66,27 @@ class AlipayServiceImpl(val sourceTypeService: SourceTypeService, val response = alipayClient.execute(request) if ("10000" == response.code) { if (response.isSuccess) { - agentResponse.agentRefno = response.tradeNo agentResponse.code = AgentCode.SUCCESS - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS + agentResponse.agentRefno = response.tradeNo + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code + qrcodePayTrans.agentRefno = response.tradeNo + agentServiceProxy.qrcodePayTransSaveOrUpdate(qrcodePayTrans) } else { agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = response.subMsg + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code logger.error { "支付宝:${response.code},${response.msg},${response.subCode},${response.subMsg}" } } } else if ("10003" == response.code || "20000" == response.code) { agentResponse.code = AgentCode.REQUIRE_QUERY - agentResponse.agentMsg = "支付请求已提交,等待用户支付" - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code logger.error { "支付宝:${response.code},${response.msg},${response.subCode},${response.subMsg}" } } else { agentResponse.code = AgentCode.FAIL agentResponse.agentMsg = response.msg - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL + agentResponse.agentCode = response.code logger.error { "支付宝:${response.code},${response.msg},${response.subCode},${response.subMsg}" } } } catch (e: AlipayApiException) { @@ -132,21 +135,19 @@ class AlipayServiceImpl(val sourceTypeService: SourceTypeService, val response = alipayClient.sdkExecute(request) if (response.isSuccess) { agentResponse.agentRefno = response.tradeNo - agentResponse.code = AgentCode.REQUIRE_QUERY - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code //body 为APP agentResponse.agentBody = response.body } else { agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = response.subMsg + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code logger.error { "支付宝:${response.code},${response.msg},${response.subCode},${response.subMsg}" } } } catch (e: AlipayApiException) { logger.error { "支付宝:${e.message}" } agentResponse.code = AgentCode.FAIL - agentResponse.agentMsg = "调用支付宝异常" - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL } } return agentResponse @@ -169,12 +170,13 @@ class AlipayServiceImpl(val sourceTypeService: SourceTypeService, val response = alipayClient.execute(request) if (response.isSuccess) { agentResponse.code = AgentCode.SUCCESS - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code agentResponse.dtlStatus = DtlStatus.REFUND } else { agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = "支付宝退款失败" + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code } } return agentResponse @@ -197,7 +199,8 @@ class AlipayServiceImpl(val sourceTypeService: SourceTypeService, if (response.isSuccess) { //check response.totalAmount agentResponse.code = AgentCode.SUCCESS - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code when (response.tradeStatus) { "TRADE_SUCCESS", "TRADE_FINISHED" -> agentResponse.dtlStatus = DtlStatus.SUCCESS "TRADE_CLOSED" -> agentResponse.dtlStatus = DtlStatus.REFUND @@ -205,8 +208,8 @@ class AlipayServiceImpl(val sourceTypeService: SourceTypeService, } } else { agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = "支付宝查询失败" + agentResponse.agentMsg = response.msg + agentResponse.agentCode = response.code } } return agentResponse @@ -217,27 +220,20 @@ class AlipayServiceImpl(val sourceTypeService: SourceTypeService, var agentResponse = AgentResponse() if (refno.isNullOrEmpty()) { agentResponse.code = AgentCode.FAIL - agentResponse.agentMsg = "返回流水号为空" - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL return agentResponse } var transaction = consumePayService.getTransactionMainDtl(refno, null, null) if (transaction == null) { agentResponse.code = AgentCode.REFNO_NOT_EXISTS - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL return agentResponse } if (transaction.status == TradeDict.DTL_STATUS_SUCCESS) { agentResponse.code = AgentCode.SUCCESS - agentResponse.agentMsg = "流水已成功,不能重复入账" - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL return agentResponse } val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_ALIPAY, transaction.shopDtl.shopaccno, false, false) if (config[PaytypeUtil.CFG_ALIPAY_PUBLICKEY].isNullOrEmpty()) { agentResponse.code = AgentCode.CONFIG_ERROR - agentResponse.agentMsg = "商户公钥未配置" - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL return agentResponse } var flag = AlipaySignature.rsaCheckV1(param, config[PaytypeUtil.CFG_ALIPAY_PUBLICKEY], "UTF-8", "RSA2") @@ -245,20 +241,17 @@ class AlipayServiceImpl(val sourceTypeService: SourceTypeService, true -> { //total amt 校验 map["total_amount"] var tradeno = param["trade_no"] - if(tradeno.isNullOrEmpty()){ + if (tradeno.isNullOrEmpty()) { transactionService.success(transaction.refno) - }else{ - transactionService.success(transaction.refno,tradeno, true) + } else { + transactionService.success(transaction.refno, tradeno, true) } agentResponse.code = AgentCode.SUCCESS - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS agentResponse } false -> { logger.error { "支付宝签名校验错误" } agentResponse.code = AgentCode.FAIL - agentResponse.agentMsg = "签名校验错误" - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL agentResponse } } 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 94cd0312..1f3b6d11 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 @@ -16,8 +16,10 @@ import com.supwisdom.dlpay.framework.util.* import com.supwisdom.dlpay.util.PaytypeUtil import mu.KotlinLogging import org.apache.commons.lang.StringUtils +import org.springframework.http.converter.StringHttpMessageConverter import org.springframework.stereotype.Service import org.springframework.web.client.RestTemplate +import java.nio.charset.StandardCharsets @Service @@ -61,6 +63,7 @@ class WechatServiceImpl(val sourceTypeService: SourceTypeService, } bean.generalCheckSign() var xml = bean.generalCheckXML() + restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8) var res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_OAUTHCODE, xml, String::class.java) var eleMap = XmlUtils.parseXml(res.body) var retcode = eleMap["return_code"] @@ -71,16 +74,17 @@ class WechatServiceImpl(val sourceTypeService: SourceTypeService, qrcodeTrans.agentUserId = openid var ip = personIdentityDao.getByThirdUid(openid) if (ip != null) { - qrcodeTrans.agentUserId = ip.person.userid + qrcodeTrans.userid = ip.person.userid } agentServiceProxy.qrcodePayTransSaveOrUpdate(qrcodeTrans) agentResponse.code = AgentCode.SUCCESS - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS + agentResponse.agentCode = retcode + agentResponse.agentMsg = eleMap["return_msg"] } else { logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" } agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = "二维码身份查询失败" + agentResponse.agentCode = eleMap["err_code"] + agentResponse.agentMsg = eleMap["err_code_des"] } } return agentResponse @@ -104,25 +108,40 @@ class WechatServiceImpl(val sourceTypeService: SourceTypeService, this.out_trade_no = transaction.refno this.total_fee = MoneyUtil.YuanToFen(transaction.shopDtl.amount) this.spbill_create_ip = qrcodeTrans.spip + this.body = "POS扫微信二维码支付" } bean.generalPaySign() var xml = bean.generaPayXML() + restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8) var res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_QRCODEPAY, xml, String::class.java) var eleMap = XmlUtils.parseXml(res.body) var retcode = eleMap["return_code"] var resultCode = eleMap["result_code"] var openid = eleMap["openid"] + var errorCode = eleMap["err_code"] if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode && !openid.isNullOrEmpty()) { agentResponse.code = AgentCode.SUCCESS - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS + agentResponse.agentCode = resultCode agentResponse.dtlStatus = DtlStatus.SUCCESS - } else { - logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" } + agentResponse.agentMsg = eleMap["return_msg"] + agentResponse.agentRefno = eleMap["transaction_id"] + qrcodeTrans.agentRefno = eleMap["transaction_id"] + agentServiceProxy.qrcodePayTransSaveOrUpdate(qrcodeTrans) + } else if("SYSTEMERROR"==errorCode||"BANKERROR"==errorCode||"USERPAYING"==errorCode){ + logger.error { "code=${errorCode},des=${eleMap["err_code_des"]}" } agentResponse.code = AgentCode.REQUIRE_QUERY - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = "请查询支付结果" + agentResponse.agentCode = eleMap["err_code"] + agentResponse.agentMsg = eleMap["err_code_des"] + agentResponse.agentRefno = eleMap["transaction_id"] + qrcodeTrans.agentRefno = eleMap["transaction_id"] + agentServiceProxy.qrcodePayTransSaveOrUpdate(qrcodeTrans) + }else{ + agentResponse.code = AgentCode.FAIL + agentResponse.agentCode = eleMap["err_code"] + agentResponse.agentMsg = eleMap["err_code_des"] + logger.error { "code=${errorCode},des=${eleMap["err_code_des"]}" } } } return agentResponse @@ -148,22 +167,24 @@ class WechatServiceImpl(val sourceTypeService: SourceTypeService, //TODO IP 问题 bean.generaSign() val xml = bean.generaXML() + restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8) var res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_UNIONPAY, xml, String::class.java) var eleMap = XmlUtils.parseXml(res.body) var retcode = eleMap["return_code"] var resultCode = eleMap["result_code"] - val mweb_url = eleMap["mweb_url"] + val mwebUrl = eleMap["mweb_url"] if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode - && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode && !mweb_url.isNullOrEmpty()) { + && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode && !mwebUrl.isNullOrEmpty()) { agentResponse.code = AgentCode.REQUIRE_QUERY - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS - agentResponse.agentBody = mweb_url + agentResponse.agentCode =resultCode + agentResponse.agentMsg = eleMap["return_msg"] + agentResponse.agentBody = mwebUrl agentResponse.agentRefno = eleMap["prepay_id"] } else { logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" } agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = "预下单失败" + agentResponse.agentCode = eleMap["err_code"] + agentResponse.agentMsg = eleMap["err_code_des"] } } return agentResponse @@ -182,26 +203,28 @@ class WechatServiceImpl(val sourceTypeService: SourceTypeService, } bean.generalQuerySign() val xml = bean.generalQueryXML() + restTemplate.messageConverters[1] = StringHttpMessageConverter(StandardCharsets.UTF_8) var res = restTemplate.postForEntity(PaytypeUtil.CFG_WECHAT_QUERY, xml, String::class.java) var eleMap = XmlUtils.parseXml(res.body) var retcode = eleMap["return_code"] var resultCode = eleMap["result_code"] - val trade_state = eleMap["trade_state"] + val tradeState = eleMap["trade_state"] if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) { agentResponse.code = AgentCode.REQUIRE_QUERY - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS - when (trade_state) { + 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"]}" } + logger.error { "code=${eleMap["err_code"]}},des=${eleMap["err_code_des"]}" } agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = "查询失败" + agentResponse.agentCode = eleMap["err_code"] + agentResponse.agentMsg = eleMap["err_code_des"] } } return agentResponse @@ -230,13 +253,14 @@ class WechatServiceImpl(val sourceTypeService: SourceTypeService, if (!retcode.isNullOrEmpty() && "SUCCESS" == retcode && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode ) { agentResponse.code = AgentCode.REQUIRE_QUERY - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS + agentResponse.agentCode =resultCode agentResponse.agentRefno = eleMap["refund_id"] + agentResponse.agentMsg = eleMap["return_msg"] } else { logger.error { "code=${eleMap["err_code"]},des=${eleMap["err_code_des"]}" } agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = "退款申请失败失败:${eleMap["err_code_des"]}" + agentResponse.agentCode = eleMap["err_code"] + agentResponse.agentMsg = eleMap["err_code_des"] } } return agentResponse @@ -287,11 +311,11 @@ class WechatServiceImpl(val sourceTypeService: SourceTypeService, transactionService.success(transaction.refno,transid, true) } agentResponse.code = AgentCode.SUCCESS - agentResponse.agentCode = AgentResponse.AGENTCODE_SUCCESS + agentResponse.agentCode = resultCode } else { agentResponse.code = AgentCode.FAIL - agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL - agentResponse.agentMsg = "${param["err_code"]}:${param["err_code_des"]}" + agentResponse.agentCode = param["err_code"] + agentResponse.agentMsg = param["err_code_des"] logger.error { "code=${param["err_code"]},des=${param["err_code_des"]}" } } return agentResponse diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/wechat_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/wechat_service.kt index 8de5cfe0..f07cf845 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/wechat_service.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/wechat_service.kt @@ -29,7 +29,7 @@ interface WechatService { fun downloadBill(shopacc:String,accdate:String):BaseResp } -@Component("wechatpayAgent") +@Component("wechatAgent") class WeChatPayAgentService(val consumePayService: ConsumePayService, val wechatService: WechatService) : AgentPayService { override fun auth(shopaccno: String?, billno: String?): AgentResponse { diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt index 4e3c906b..ecc5f3b0 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/advices.kt @@ -118,7 +118,7 @@ class RestControllerAspect { fun logPostMethods(joinPoint: ProceedingJoinPoint, body: Any): Any { return try { if (body is APIRequestParam) { - TenantContext.setTenantSchema(body.tenantid) + //TenantContext.setTenantSchema(body.tenantid) body.checkParam() if (requestSignCheck && 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 e47701ba..483efd1f 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 @@ -532,7 +532,7 @@ class ConsumeAPIController { val qrcodeTrans = agentServiceProxy.qrcodePayTransFindByMerchIdAndBillno(param.shopaccno, param.billno) ?: return ResponseEntity.ok(ResponseBodyBuilder.create() .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR, "未找到billno")) - if (qrcodeTrans.refno.isNotEmpty()) { + if (!qrcodeTrans.refno.isNullOrEmpty()) { return ResponseEntity.ok(ResponseBodyBuilder.create() .fail(apiResponse, TradeErrorCode.BUSINESS_DEAL_ERROR, "该交易已确认,请查询结果")) } @@ -558,7 +558,7 @@ class ConsumeAPIController { "支付方式<${qrcodeTrans.sourceType}>不支持匿名支付")) } qrcodeTrans.spip = param.spip - + val dtlType = consumePayService.getDtltypeDictionary(param.dtltype, Dictionary.DTLTYPES) //2. 初始化交易流水 // sourcetype 资产类科目 val stSubject = accountUtilServcie.readSubject(sourceType.paySubjno) @@ -567,6 +567,8 @@ class ConsumeAPIController { setTransInfo(param.transdate, param.transtime, TradeCode.TRANSCODE_QRCODE, qrcodeTrans.sourceType) setOutTransInfo(qrcodeTrans.agentMerchId, qrcodeTrans.billno) payinfo = qrcodeSummary(sourceType) + description = dtlType.dictcaption + dtltype = param.dtltype } val shopacc = accountUtilServcie.readShopbyShopaccno(qrcodeTrans.agentMerchId) diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt index a20638db..64f9033a 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt @@ -34,11 +34,11 @@ open class SubTransactionBuilder>(val parent: Trans } fun oppositeAccNo(): String { - return this.oppAccno + return if (hasOpposite()) this.oppAccno else "" } fun oppositeAccName(): String { - return this.oppAccName + return if (hasOpposite()) this.oppAccName else "" } fun setOpposite(accno: String, accName: String) { @@ -383,9 +383,11 @@ class TransactionBuilder { throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "商户交易金额不正确") } - if (!it.hasOpposite()) { - throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, - "商户交易对方账户未设置") + if (hasPerson()) { + if (!person().isAnonymous() && !it.hasOpposite()) { + throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, + "商户交易对方账户未设置") + } } } } diff --git a/payapi/src/main/resources/data.sql b/payapi/src/main/resources/data.sql index 7c5abc82..2bca5e24 100644 --- a/payapi/src/main/resources/data.sql +++ b/payapi/src/main/resources/data.sql @@ -588,6 +588,6 @@ VALUES (30, 'shopmarket', 'dtltypeList', '商超消费', '流水类型', '{tenan INSERT INTO TB_QRCODE_PATTERN(ID, PATTERN, SOURCETYPE, TENANTID) VALUES(1, '28\d{16}', 'alipay', '{tenantid}'); INSERT INTO TB_QRCODE_PATTERN(ID, PATTERN, SOURCETYPE, TENANTID) -VALUES(2, '13\d{16}', 'wechatpay', '{tenantid}'); +VALUES(2, '13\d{16}', 'wechat', '{tenantid}'); ---------------------------------------------------- commit; \ No newline at end of file