签约请求报文添加验证码参数;
authorrui.yang <rui.yang@supwisdom.com>
Wed, 18 Mar 2020 07:28:36 +0000 (15:28 +0800)
committerrui.yang <rui.yang@supwisdom.com>
Wed, 18 Mar 2020 07:28:36 +0000 (15:28 +0800)
代扣请求报文添加消费场景参数

payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/citizencard_service.kt
payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/citizencard_service_impl.kt
payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
ynrcc-agent/src/main/java/com/supwisdom/agent/api/bean/DlpayReq.java
ynrcc-agent/src/main/java/com/supwisdom/agent/api/controller/YnrccApiController.java
ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/YnrccParamCheckService.java
ynrcc-agent/src/main/java/com/supwisdom/agent/api/service/impl/YnrccParamCheckServiceImpl.java

index 4278bf0..ba072cc 100644 (file)
@@ -14,11 +14,12 @@ import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Component
 
 interface CitizencardPayService {
-    fun bindCard(bankcardno: String, username: String, idtype: String, idno: String, phone: String): DlpayResp
+    fun bindCard(bankcardno: String, username: String, idtype: String, idno: String,
+            phone: String): DlpayResp
 
-    fun signCard(bankcardno: String, username: String, idtype: String, idno: String, phone: String, transtype: String): DlpayResp
+    fun signCard(bankcardno: String, username: String, idtype: String, idno: String, phone: String, transtype: String,captcha:String): DlpayResp
 
-    fun cardPay(shopaccno: String, userid: String, accdate: String, amount: Int, refno: String): DlpayResp
+    fun cardPay(shopaccno: String, userid: String, accdate: String, amount: Int, scenario: String, refno: String): DlpayResp
 
     fun cardPayRefund(refno: String, accdate: String, orignRefno: String, amount: Int): DlpayResp
 
index 0601599..aa5c0ae 100644 (file)
@@ -101,7 +101,7 @@ class CitizencardPayServiceImpl : CitizencardPayService {
         }
     }
 
-    override fun signCard(bankcardno: String, username: String, idtype: String, idno: String, phone: String, transtype: String): DlpayResp {
+    override fun signCard(bankcardno: String, username: String, idtype: String, idno: String, phone: String, transtype: String,captcha:String): DlpayResp {
         var resp = DlpayResp()
         val config = sourceTypeService.getChargePaytypeConfig(TradeDict.PAYTYPE_CITIZEN_CARD, true)
         if (!checkCitizencardConfig(config, resp)) {
@@ -135,6 +135,7 @@ class CitizencardPayServiceImpl : CitizencardPayService {
         params["idtype"] = idType.toString()
         params["idno"] = idno
         params["phone"] = phone
+        params["captcha"] = captcha
         params["sign_type"] = "MD5"
         val sign = MD5.encodeByMD5(StringUtil.createLinkString(StringUtil.paraFilter(params)) + config[YnrccUtil.YNRCC_SIGNKEY]!!.trim())
         params["sign"] = sign
@@ -161,7 +162,7 @@ class CitizencardPayServiceImpl : CitizencardPayService {
         }
     }
 
-    override fun cardPay(shopaccno: String, userid: String, accdate: String, amount: Int, refno: String): DlpayResp {
+    override fun cardPay(shopaccno: String, userid: String, accdate: String, amount: Int, scenario: String, refno: String): DlpayResp {
         var resp = DlpayResp()
         val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_CITIZEN_CARD, shopaccno, false, false)
         if (!checkCitizencardConfig(config, resp)) {
@@ -216,6 +217,7 @@ class CitizencardPayServiceImpl : CitizencardPayService {
         params["merchant_bankcardno"] = merchantBankcardno!!
         params["merchant_bankaccname"] = merchantBankaccname!!
         params["amount"] = amount.toString()
+        params["scenario"] = scenario
         params["description"] = "市民卡代扣消费"
         params["sign_type"] = "MD5"
         val sign = MD5.encodeByMD5(StringUtil.createLinkString(StringUtil.paraFilter(params)) + config[YnrccUtil.YNRCC_SIGNKEY]!!.trim())
index 0f6f5d6..b977881 100644 (file)
@@ -550,7 +550,8 @@ class ApiV1 {
                     ?: return JsonResult.error("卡片不存在,请重新绑定")
             //call sign api
             val person = userService.findOnePersonByUserid(card.userid)
-            var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, user.phone!!, YnrccUtil.TRANSTYPE_SIGNCARD)
+            val captcha = ""//此处为验证码,暂由此参数代替
+            var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, user.phone!!, YnrccUtil.TRANSTYPE_SIGNCARD,captcha)
             if (resp.code != "0000") {
                 return JsonResult.error(resp.message)
             }
@@ -783,7 +784,8 @@ class ApiV1 {
                     ?: return JsonResult.error("银行卡不存在,不能解除代扣协议")
             //call sign api
             val person = userService.findOnePersonByUserid(card.userid)
-            var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, user.phone!!, YnrccUtil.TRANSTYPE_UNSIGNCARD)
+            val captcha = ""//此处为验证码,暂由此参数代替
+            var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, user.phone!!, YnrccUtil.TRANSTYPE_UNSIGNCARD,captcha)
             if (resp.code != "0000") {
                 return JsonResult.error(resp.message)
             }
index 7fae31a..ed96db6 100644 (file)
@@ -35,6 +35,8 @@ public class DlpayReq {
 
   private String oriSn; //原应用系统唯一流水号
   private String chkdate; //对账日期
+  private String captcha; //签约验证码
+  private String scenario;//消费场景
 
   /**
    * 市民卡绑定请求XML
@@ -49,9 +51,9 @@ public class DlpayReq {
         .append("<CATEGORIE>").append(categorie).append("</CATEGORIE>")
         .append("<SN>").append(sn).append("</SN>")
         .append("<BC_NO>").append(bcNo).append("</BC_NO>")
-        .append("<NAME>").append(name).append("</NAME>")
+       /* .append("<NAME>").append(name).append("</NAME>")
         .append("<ID_TYPE>").append(idType).append("</ID_TYPE>")
-        .append("<ID_NO>").append(idNo).append("</ID_NO>")
+        .append("<ID_NO>").append(idNo).append("</ID_NO>")*/
         .append("<PHONE>").append(phone).append("</PHONE>")
         .append("</root>");
     return String.format("%08d", xml.toString().getBytes("GBK").length) + xml.toString();
@@ -75,7 +77,8 @@ public class DlpayReq {
         .append("<ID_NO>").append(idNo).append("</ID_NO>")
         .append("<PHONE>").append(phone).append("</PHONE>")
         .append("<TRANS_TYPE>").append(transType).append("</TRANS_TYPE>")
-        .append("</root>");
+        .append("<CAPTCHA>").append(captcha).append("<CAPTCHA>")
+            .append("</root>");
     return String.format("%08d", xml.toString().getBytes("GBK").length) + xml.toString();
   }
 
@@ -290,4 +293,20 @@ public class DlpayReq {
   public void setTranscode(String transcode) {
     this.transcode = transcode;
   }
+
+  public String getCaptcha() {
+    return captcha;
+  }
+
+  public void setCaptcha(String captcha) {
+    this.captcha = captcha;
+  }
+
+  public String getScenario() {
+    return scenario;
+  }
+
+  public void setScenario(String scenario) {
+    this.scenario = scenario;
+  }
 }
index 56e4d60..d7dfcb4 100644 (file)
@@ -77,10 +77,12 @@ public class YnrccApiController {
                                 @FormParam("transtime") String transtime, @FormParam("categorie") String categorie,
                                 @FormParam("refno") String refno, @FormParam("bankcardno") String bankcardno,
                                 @FormParam("username") String username, @FormParam("idtype") String idtype,
-                                @FormParam("idno") String idno, @FormParam("phone") String phone,
+                                @FormParam("idno") String idno,
+                                @FormParam("phone") String phone,
                                 @FormParam("sign_type") String sign_type, @FormParam("sign") String sign) {
     DlpayResp resp = new DlpayResp();
-    if (!ynrccParamCheckService.checkBindCardParam(transcode, transdate, transtime, refno, bankcardno, username, idtype, idno, phone, categorie, sign_type, sign, resp)) {
+    if (!ynrccParamCheckService.checkBindCardParam(transcode, transdate, transtime, refno, bankcardno, username, idtype, idno,
+            phone, categorie, sign_type, sign, resp)) {
       logger.error(resp.errPrint());
       return resp;
     }
@@ -136,10 +138,11 @@ public class YnrccApiController {
                                 @FormParam("bankcardno") String bankcardno, @FormParam("username") String username,
                                 @FormParam("idtype") String idtype, @FormParam("idno") String idno,
                                 @FormParam("phone") String phone,
+                                @FormParam("captcha")String captcha,
                                 @FormParam("sign_type") String sign_type, @FormParam("sign") String sign) {
     DlpayResp resp = new DlpayResp();
     if (!ynrccParamCheckService.checkSignCardParam(transcode, transdate, transtime, refno, categorie, bankcardno,
-        username, idtype, idno, phone, transtype, sign_type, sign, resp)) {
+        username, idtype, idno, phone, captcha,transtype, sign_type, sign, resp)) {
       logger.error(resp.errPrint());
       return resp;
     }
@@ -156,6 +159,7 @@ public class YnrccApiController {
     params.put("idno", idno);
     params.put("phone", phone);
     params.put("transtype", transtype);
+    params.put("captcha",captcha);
     params.put("sign_type", sign_type);
     params.put("sign", sign);
     if (!checkYnrccSign(params, resp)) {
@@ -175,6 +179,7 @@ public class YnrccApiController {
       req.setIdNo(idno);
       req.setPhone(phone);
       req.setTransType(transtype);
+      req.setCaptcha(captcha);
       return ynrccApiService.sendToYnrcc(DlpayUtil.OPTYPE_SIGNCARD, req);
     } catch (BussinessException be) {
       resp.setCode(ErrorCode.BUSSINESS_ERROR);
@@ -199,11 +204,12 @@ public class YnrccApiController {
                            @FormParam("merchant_bankcardno") String merchant_bankcardno,
                            @FormParam("merchant_bankaccname") String merchant_bankaccname,
                            @FormParam("amount") Integer amount,
+                           @FormParam("scenario") String scenario,
                            @FormParam("description") String description,
                            @FormParam("sign_type") String sign_type, @FormParam("sign") String sign) {
     DlpayResp resp = new DlpayResp();
     if (!ynrccParamCheckService.checkCardPayParam(transcode, transdate, transtime, refno, categorie, bankcardno,
-        username, idtype, idno, merchant_bankcardno, merchant_bankaccname, amount, description, sign_type, sign, resp)) {
+        username, idtype, idno, merchant_bankcardno, merchant_bankaccname, amount,scenario, description, sign_type, sign, resp)) {
       logger.error(resp.errPrint());
       return resp;
     }
@@ -216,11 +222,12 @@ public class YnrccApiController {
     params.put("categorie", categorie);
     params.put("bankcardno", bankcardno);
     params.put("username", username);
-    params.put("idtype", idtype);
+    //params.put("idtype", idtype);
     params.put("idno", idno);
     params.put("merchant_bankcardno", merchant_bankcardno);
     params.put("merchant_bankaccname", merchant_bankaccname);
     params.put("amount", String.valueOf(amount));
+    params.put("scenario",scenario);
     params.put("description", description);
     params.put("sign_type", sign_type);
     params.put("sign", sign);
@@ -242,6 +249,7 @@ public class YnrccApiController {
       req.setMerchantBcno(merchant_bankcardno);
       req.setMerchantName(merchant_bankaccname);
       req.setAmount(amount);
+      req.setScenario(scenario);
       req.setDescription(description);
       return ynrccApiService.sendToYnrcc(DlpayUtil.OPTYPE_CARDPAY, req);
     } catch (BussinessException be) {
index 4eb674b..9673aff 100644 (file)
@@ -12,10 +12,10 @@ public interface YnrccParamCheckService {
   boolean checkSign(Map<String, String> param);
 
   boolean checkSignCardParam(String transcode, String transdate, String transtime, String refno, String categorie, String bankcardno, String username,
-                             String idtype, String idno, String phone, String transtype, String sign_type, String sign, DlpayResp resp);
+                             String idtype, String idno, String phone, String captcha,String transtype, String sign_type, String sign, DlpayResp resp);
 
   boolean checkCardPayParam(String transcode, String transdate, String transtime, String refno, String categorie, String bankcardno, String username,
-                            String idtype, String idno, String merchant_bankcardno, String merchant_bankaccname, Integer amount, String description,
+                            String idtype, String idno, String merchant_bankcardno, String merchant_bankaccname, Integer amount,String scenario, String description,
                             String sign_type, String sign, DlpayResp resp);
 
   boolean checkPayRefundParam(String transcode, String transdate, String transtime, String refno, String refundRefno, Integer amount, String description,
index 069bf8f..bea60e8 100644 (file)
@@ -58,7 +58,8 @@ public class YnrccParamCheckServiceImpl implements YnrccParamCheckService {
   }
 
   @Override
-  public boolean checkBindCardParam(String transcode, String transdate, String transtime, String refno, String bankcardno, String username, String idtype, String idno, String phone, String categorie, String sign_type, String sign, DlpayResp resp) {
+  public boolean checkBindCardParam(String transcode, String transdate, String transtime, String refno, String bankcardno, String username, String idtype, String idno,
+                                    String phone, String categorie, String sign_type, String sign, DlpayResp resp) {
     if (!checkYnrccBaseParam(transcode, transdate, transtime, refno, sign_type, sign, resp)) {
       return false;
     }
@@ -120,8 +121,9 @@ public class YnrccParamCheckServiceImpl implements YnrccParamCheckService {
 
   @Override
   public boolean checkSignCardParam(String transcode, String transdate, String transtime, String refno, String categorie, String bankcardno, String username,
-                                    String idtype, String idno, String phone, String transtype, String sign_type, String sign, DlpayResp resp) {
-    if (!checkBindCardParam(transcode, transdate, transtime, refno, bankcardno, username, idtype, idno, phone, categorie, sign_type, sign, resp)) {
+                                    String idtype, String idno, String phone, String captcha,String transtype, String sign_type, String sign, DlpayResp resp) {
+    if (!checkBindCardParam(transcode, transdate, transtime, refno, bankcardno, username, idtype, idno,
+             phone, categorie, sign_type, sign, resp)) {
       return false;
     }
     if (StringUtil.isEmpty(transtype)) {
@@ -129,12 +131,17 @@ public class YnrccParamCheckServiceImpl implements YnrccParamCheckService {
       resp.setMessage("请求参数错误[签约标志]");
       return false;
     }
+    if (StringUtil.isEmpty(captcha)) {
+      resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+      resp.setMessage("请求参数错误[验证码为空]");
+      return false;
+    }
 
     return true;
   }
 
   @Override
-  public boolean checkCardPayParam(String transcode, String transdate, String transtime, String refno, String categorie, String bankcardno, String username, String idtype, String idno, String merchant_bankcardno, String merchant_bankaccname, Integer amount, String description, String sign_type, String sign, DlpayResp resp) {
+  public boolean checkCardPayParam(String transcode, String transdate, String transtime, String refno, String categorie, String bankcardno, String username, String idtype, String idno, String merchant_bankcardno, String merchant_bankaccname, Integer amount, String scenario,String description, String sign_type, String sign, DlpayResp resp) {
     if (!checkYnrccBaseParam(transcode, transdate, transtime, refno, sign_type, sign, resp)) {
       return false;
     }
@@ -179,6 +186,11 @@ public class YnrccParamCheckServiceImpl implements YnrccParamCheckService {
       resp.setMessage("请求参数错误[交易金额为空]");
       return false;
     }
+    if (null == scenario) {
+      resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+      resp.setMessage("请求参数错误[交易场景为空]");
+      return false;
+    }
 
     return true;
   }