diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/YnrccPaySignQueryParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/YnrccPaySignQueryParam.java
new file mode 100644
index 0000000..5d52f38
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/YnrccPaySignQueryParam.java
@@ -0,0 +1,30 @@
+package com.supwisdom.dlpay.api.bean;
+
+import com.supwisdom.dlpay.api.APIRequestParam;
+import com.supwisdom.dlpay.api.annotation.Sign;
+import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+
+@Getter
+@Setter
+public class YnrccPaySignQueryParam extends APIRequestParam {
+  @Sign
+  @NotEmpty(message = "用户ID不能为空")
+  private String userid;
+
+  @Sign
+  @NotEmpty(message = "银行卡号不能为空")
+  private String bankcardno;
+
+  @Sign
+  @NotEmpty(message = "签约商户不能为空")
+  private String shopaccno;
+
+  @Override
+  public boolean checkParam() throws RequestParamCheckException {
+    return true;
+  }
+}
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/YnrccPaySignQueryResponse.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/YnrccPaySignQueryResponse.java
new file mode 100644
index 0000000..e3a30fa
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/YnrccPaySignQueryResponse.java
@@ -0,0 +1,12 @@
+package com.supwisdom.dlpay.api.bean;
+
+import lombok.*;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString
+public class YnrccPaySignQueryResponse extends ApiResponse {
+  private boolean signFlag = false; //是否已签约，默认:否
+}
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 e1a5991..01f8fd4 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
@@ -79,6 +79,9 @@
   @PostMapping("/api/user/queryCitizenCard")
   DoorQrcodeResponse queryCitizenCard(@RequestParam("uid") String uid);
 
+  @PostMapping("/api/user/ynrccpaySignQuery")
+  YnrccPaySignQueryResponse queryYnrccPaySign(@RequestBody YnrccPaySignQueryParam param);
+
   @PostMapping("/api/user/ynrccpaySignApply")
   YnrccPaySignApplyResponse applyYnrccPaySign(@RequestBody YnrccPaySignApplyParam param);
 
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TYnrccPaySign.java b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TYnrccPaySign.java
new file mode 100644
index 0000000..b286057
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/citizencard/domain/TYnrccPaySign.java
@@ -0,0 +1,134 @@
+package com.supwisdom.dlpay.citizencard.domain;
+
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "TB_YNRCCPAY_SIGN",
+    indexes = {@Index(name = "idx1_ynrccpay_sign", columnList = "bankcardno,shopaccno,status")})
+public class TYnrccPaySign {
+  @Id
+  @GenericGenerator(name = "midGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "midGenerator")
+  @Column(name = "id", nullable = false, length = 32)
+  private String id;
+
+  @Column(name="bankcardno", nullable = false, length = 32)
+  private String bankcardno;
+
+  @Column(name="shopaccno", nullable = false, length = 10)
+  private String shopaccno;
+
+  @Column(name="userid", nullable = false, length = 32)
+  private String userid;
+
+  @Column(name="status", nullable = false, length = 10)
+  private String status;
+
+  @Column(name="sign_flag", nullable = false, length = 10)
+  private boolean signFlag;
+
+  @Column(name="customer_sign_no", length = 60)
+  private String customerSignNo;
+
+  @Column(name="sign_time", length = 14)
+  private String signTime;
+
+  @Column(name="cancel_time", length = 14)
+  private String cancelTime;
+
+  @Column(name="remark", length = 600)
+  private String remark;
+
+  @Column(name="createtime", length = 14)
+  private String createtime;
+
+  public String getId() {
+    return id;
+  }
+
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  public String getBankcardno() {
+    return bankcardno;
+  }
+
+  public void setBankcardno(String bankcardno) {
+    this.bankcardno = bankcardno;
+  }
+
+  public String getShopaccno() {
+    return shopaccno;
+  }
+
+  public void setShopaccno(String shopaccno) {
+    this.shopaccno = shopaccno;
+  }
+
+  public String getUserid() {
+    return userid;
+  }
+
+  public void setUserid(String userid) {
+    this.userid = userid;
+  }
+
+  public String getStatus() {
+    return status;
+  }
+
+  public void setStatus(String status) {
+    this.status = status;
+  }
+
+  public boolean isSignFlag() {
+    return signFlag;
+  }
+
+  public void setSignFlag(boolean signFlag) {
+    this.signFlag = signFlag;
+  }
+
+  public String getCustomerSignNo() {
+    return customerSignNo;
+  }
+
+  public void setCustomerSignNo(String customerSignNo) {
+    this.customerSignNo = customerSignNo;
+  }
+
+  public String getSignTime() {
+    return signTime;
+  }
+
+  public void setSignTime(String signTime) {
+    this.signTime = signTime;
+  }
+
+  public String getCancelTime() {
+    return cancelTime;
+  }
+
+  public void setCancelTime(String cancelTime) {
+    this.cancelTime = cancelTime;
+  }
+
+  public String getRemark() {
+    return remark;
+  }
+
+  public void setRemark(String remark) {
+    this.remark = remark;
+  }
+
+  public String getCreatetime() {
+    return createtime;
+  }
+
+  public void setCreatetime(String createtime) {
+    this.createtime = createtime;
+  }
+}
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 90cbd5c..ec9624c 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
@@ -450,6 +450,24 @@
 
     /**
      * ============================================================================
+     *                           农商行快捷支付【签约状态查询】
+     * ============================================================================
+     * */
+    @PostMapping("/ynrccpaySignQuery")
+    fun queryYnrccPaySign(@Valid @RequestBody param: YnrccPaySignQueryParam): ResponseEntity<Any> {
+        val success=true
+        if(success){
+            return ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .success(YnrccPaySignQueryResponse(), "交易初始化成功"))
+        }
+
+        return ResponseEntity.ok(ResponseBodyBuilder.create()
+                .fail(TradeErrorCode.BUSINESS_PAYTYPE_NOSUPPORT, "不支持支付方式<市民卡代扣>"))
+
+    }
+
+    /**
+     * ============================================================================
      *                           农商行快捷支付【签约申请】
      * ============================================================================
      * */
