调试支付接口
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 d8e4f13..600d773 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 @@
   @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 2d09e9d..937e116 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 @@
 
     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 4da560f..c14ee51 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 @@
 
 @Service
 public class QrcodePatternServiceImpl implements QrcodePatternService {
-  private final QrcodePatternDao qrcodePatternDao;
+    private final QrcodePatternDao qrcodePatternDao;
 
-  public QrcodePatternServiceImpl(QrcodePatternDao qrcodePatternDao) {
-    this.qrcodePatternDao = qrcodePatternDao;
-  }
-
-  @Override
-  @Cacheable(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern')")
-  public List<QrcodePattern> 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());
+    public QrcodePatternServiceImpl(QrcodePatternDao qrcodePatternDao) {
+        this.qrcodePatternDao = qrcodePatternDao;
     }
-    return qrcodePatternDao.save(pattern);
-  }
 
-  @Override
-  @Cacheable(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern', #sourceType)")
-  public List<QrcodePattern> findAllBySourcetype(String sourceType) {
-    return qrcodePatternDao.findBySourceTypeAndTenantid(sourceType, TenantContext.getTenantSchema());
-  }
+    @Override
+    @Cacheable(cacheNames = "qrcode_pattern_cache", key = "@tenantHolder.genKey('qrcode_pattern')")
+    public List<QrcodePattern> 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<QrcodePattern> 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 a4767f2..c961f32 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 @@
   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 cc19440..ccae15f 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 @@
                 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 @@
                 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 @@
             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 @@
             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 @@
                 }
             } 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 @@
         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 @@
             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 94cd031..1f3b6d1 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.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 @@
             }
             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 @@
                 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 @@
                 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 @@
             //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 @@
             }
             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 @@
             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 @@
                 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 8de5cfe..f07cf84 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 @@
     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 4e3c906..ecc5f3b 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 @@
     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 e47701b..483efd1 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 @@
         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 @@
                             "支付方式<${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 @@
             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 a20638d..64f9033 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 @@
     }
 
     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 @@
                     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 7c5abc8..2bca5e2 100644
--- a/payapi/src/main/resources/data.sql
+++ b/payapi/src/main/resources/data.sql
@@ -588,6 +588,6 @@
 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