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
}
}
- 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)) {
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
}
}
- 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)) {
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())
?: 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)
}
?: 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)
}
private String oriSn; //原应用系统唯一流水号
private String chkdate; //对账日期
+ private String captcha; //签约验证码
+ private String scenario;//消费场景
/**
* 市民卡绑定请求XML
.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();
.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();
}
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;
+ }
}
@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;
}
@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;
}
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)) {
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);
@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;
}
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);
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) {
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,
}
@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;
}
@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)) {
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;
}
resp.setMessage("请求参数错误[交易金额为空]");
return false;
}
+ if (null == scenario) {
+ resp.setCode(ErrorCode.REQ_PARAM_ERROR);
+ resp.setMessage("请求参数错误[交易场景为空]");
+ return false;
+ }
return true;
}