获取支付方式
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