获取支付方式
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/SourceTypeResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/SourceTypeResponse.java
new file mode 100644
index 0000000..8a25097
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/SourceTypeResponse.java
@@ -0,0 +1,20 @@
+package com.supwisdom.dlpay.api.bean;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+
+import java.util.List;
+
+@Getter
+@Setter
+@AllArgsConstructor
+@NoArgsConstructor
+public class SourceTypeResponse extends ApiResponse {
+  private String name;
+  private String type;
+  private String value;
+  private List<SourceTypeResponse> sourceTypeList;
+
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/TransactionProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/TransactionProxy.java
index 045ba98..aa5123e 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/TransactionProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/TransactionProxy.java
@@ -6,6 +6,7 @@
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 @FeignClient(name = "payTransactionProxy", url = "${payapi.url}")
 public interface TransactionProxy {
@@ -31,7 +32,7 @@
 
   @GetMapping("/api/transaction/inapp/query")
   @JwtMethod
-  TransactionQueryResponse query(@RequestBody String param);
+  TransactionQueryResponse query(@RequestParam("refno")String refno);
 
   @PostMapping("/api/transaction/inapp/payinit")
   @JwtMethod
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
index 7ba2336..cfe3381 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
@@ -50,4 +50,8 @@
   @RequestMapping(value = "/api/user/biz_query", method = RequestMethod.GET)
   @JwtMethod
   CardBizResponse bizQuery(@RequestParam("refno") String refno);
+
+  @GetMapping("/api/user/getpaytypeList")
+  @JwtMethod
+  SourceTypeResponse getpaytypeList(@RequestParam("depositeSubjno") String depositeSubjno);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SourceTypeDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SourceTypeDao.java
index 718841a..5ed3e04 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SourceTypeDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SourceTypeDao.java
@@ -25,4 +25,6 @@
 
   @Query("from TSourceType t where t.enable=true  and t.checkable=true and t.tenantid=?1 order by t.sourceType ")
   List<TSourceType> findNeedChecks(String tenantid);
+
+  List<TSourceType> findTSourceTypesByDepositeSubjno(String depositeSubjno);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/service/SourceTypeService.java b/payapi/src/main/java/com/supwisdom/dlpay/api/service/SourceTypeService.java
index 8e4048b..066ad15 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/service/SourceTypeService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/service/SourceTypeService.java
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.api.service;
 
+import com.supwisdom.dlpay.api.bean.SourceTypeResponse;
 import com.supwisdom.dlpay.api.domain.TSourceType;
 import com.supwisdom.dlpay.api.domain.TSourceTypeCheckStatus;
 import org.springframework.transaction.annotation.Propagation;
@@ -52,4 +53,7 @@
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
   TSourceTypeCheckStatus saveOrUpdateSourceTypeCheckStatus(TSourceTypeCheckStatus s);
 
+  @Transactional(rollbackFor = Exception.class, readOnly = true)
+  SourceTypeResponse findTSourceTypesByDepositeSubjno(String depositeSubjno);
+
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
index 5c6b1ea..fa34964 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.api.service.impl;
 
+import com.supwisdom.dlpay.api.bean.SourceTypeResponse;
 import com.supwisdom.dlpay.api.dao.*;
 import com.supwisdom.dlpay.api.domain.*;
 import com.supwisdom.dlpay.api.service.SourceTypeService;
@@ -11,6 +12,7 @@
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -210,4 +212,20 @@
     }
     return sourceTypeCheckDao.save(s);
   }
+
+  @Override
+  public SourceTypeResponse findTSourceTypesByDepositeSubjno(String depositeSubjno) {
+    SourceTypeResponse sourceTypeResponseR = new SourceTypeResponse();
+    List<TSourceType> tSourceTypes = sourceTypeDao.findTSourceTypesByDepositeSubjno(depositeSubjno);
+    List<SourceTypeResponse> sourceTypeList = new ArrayList<SourceTypeResponse>();
+    for(TSourceType tSourceType:tSourceTypes){
+      SourceTypeResponse sourceTypeResponse = new SourceTypeResponse();
+      sourceTypeResponse.setName(tSourceType.getPaydesc());
+      sourceTypeResponse.setType(tSourceType.getSourceType());
+      sourceTypeResponse.setValue(tSourceType.getSourceType());
+      sourceTypeList.add(sourceTypeResponse);
+    }
+    sourceTypeResponseR.setSourceTypeList(sourceTypeList);
+    return sourceTypeResponseR;
+  }
 }
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 25a10ba..d355f13 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
@@ -455,4 +455,59 @@
         return agentResponse
     }
 
+    override fun doPayNotify(param: Map<String, String>): AgentResponse<QrcodePayTrans> {
+        val agentResponse = AgentResponse<QrcodePayTrans>()
+        val transaction = consumePayService.getTransactionMainDtl(param["out_trade_no"], 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 sign = param["sign"]
+        if (StringUtils.isEmpty(sign)) {
+            logger.error("签名错误")
+            agentResponse.code = AgentCode.FAIL
+            agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL
+            agentResponse.agentMsg = "签名错误"
+        }
+        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"
+        signStr += "&key=$key"
+        val signRet = MD5.encodeByMD5(signStr)
+        logger.error("*******signStr=$signStr")
+        if (!signRet.equals(sign, ignoreCase = true)) {
+            logger.error("签名错误:$signRet,$sign")
+            agentResponse.code = AgentCode.FAIL
+            agentResponse.agentCode = AgentResponse.AGENTCODE_FAIL
+            agentResponse.agentMsg = "签名错误"
+        }
+        val returnCode = param["return_code"]
+        val resultCode = param["result_code"]
+        if (!returnCode.isNullOrEmpty() && "SUCCESS" == returnCode
+                && !resultCode.isNullOrEmpty() && "SUCCESS" == resultCode) {
+            val transid = param["transaction_id"]
+            if (transid.isNullOrEmpty()) {
+                transactionService.success(transaction.refno)
+            } else {
+                transactionService.success(transaction.refno, transid, true)
+            }
+            agentResponse.code = AgentCode.SUCCESS
+            agentResponse.agentCode = resultCode
+        } else {
+            agentResponse.code = AgentCode.FAIL
+            agentResponse.agentCode = param["err_code"]
+            agentResponse.agentMsg = param["err_code_des"]
+            logger.error { "code=${param["err_code"]},des=${param["err_code_des"]}" }
+        }
+        return agentResponse
+    }
+
 }
\ No newline at end of file
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 d531da1..97ab8e5 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
@@ -58,7 +58,7 @@
         }
         // 释放资源
         inputStream.close()
-        val resp = wechatService.doNotify(map)
+        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 {
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 30c8850..fc9e813 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
@@ -26,6 +26,8 @@
     fun dopayInit(transaction: TTransactionMain): AgentResponse<QrcodePayTrans>
 
     fun doPayQuery(transaction: TTransactionMain): AgentResponse<QrcodePayTrans>
+
+    fun doPayNotify(param: Map<String, String>): AgentResponse<QrcodePayTrans>
 }
 
 @Component("wechatAgent")
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 30e5a91..d2d190e 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
@@ -218,7 +218,8 @@
     }
 }
 
-@RestController("/api/notify")
+@RestController
+@RequestMapping("/api/notify")
 class TransactionNotifyController(@Lazy private val tenantDetailsRegistrar: TenantDetailsRegistrar,
                                   private val transactionServiceProxy: TransactionServiceProxy,
                                   private val agentPayServiceContext: AgentPayServiceContext) {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
index 4facb76..d98fa18 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
@@ -37,6 +37,9 @@
     @Autowired
     private lateinit var transactionService: TransactionServiceProxy
 
+    @Autowired
+    private lateinit var sourceTypeService: SourceTypeService
+
 
     @PostMapping("/open")
     fun openAccount(@RequestBody param: OpenUserParam): ResponseEntity<Any> {
@@ -371,4 +374,14 @@
         }
         return ResponseBodyBuilder.successEntity(result)
     }
+
+    @GetMapping("/getpaytypeList")
+    fun getpaytypeList(depositeSubjno: String): ResponseEntity<SourceTypeResponse> {
+        val sourceTypeResponse = sourceTypeService.findTSourceTypesByDepositeSubjno(depositeSubjno)
+        if(sourceTypeResponse.sourceTypeList==null||sourceTypeResponse.sourceTypeList.size<1){
+            return ResponseBodyBuilder.failEntity(sourceTypeResponse, TradeErrorCode.BUSINESS_DEAL_ERROR,
+                    "未配置支付方式")
+        }
+        return ResponseBodyBuilder.successEntity(sourceTypeResponse)
+    }
 }
\ No newline at end of file