diff --git a/config/application-devel-pg-local.properties b/config/application-devel-pg-local.properties
index b6561aa..4c0364a 100644
--- a/config/application-devel-pg-local.properties
+++ b/config/application-devel-pg-local.properties
@@ -20,3 +20,12 @@
 jwt.expiration=3600
 # user password
 auth.password.bcrypt.seed=
+spring.jackson.serialization.fail-on-empty-beans=false
+
+
+payapi.url=https://yy.dlsmk.cn/payapi
+
+payapi.appid=200001
+
+cron.offlinedtl=0/30 * * * * ?
+payapi.logintime=0 0/20 * * * ? 
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
index 2d99bcc..0451c78 100644
--- a/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/service/impl/PosPayServiceImpl.java
@@ -9,7 +9,9 @@
 import com.supwisdom.dlpay.framework.util.DateUtil;
 import com.supwisdom.dlpay.api.util.ErrorCode;
 import com.supwisdom.dlpay.framework.service.SystemUtilService;
+import com.supwisdom.dlpay.framework.util.MoneyUtil;
 import com.supwisdom.dlpay.framework.util.StringUtil;
+import com.supwisdom.dlpay.paysdk.proxy.CitizenCardPayProxy;
 import com.supwisdom.dlpay.restaurant.bean.ManageFeeAmtBean;
 import com.supwisdom.dlpay.restaurant.bean.SalesAmtBean;
 import com.supwisdom.dlpay.restaurant.dao.DevparaBindDao;
@@ -52,6 +54,8 @@
     private BusinessparaDao businessparaDao;
     @Autowired
     private PayApiService payApiService;
+    @Autowired
+    private CitizenCardPayProxy citizenCardPayProxy;
 
 
 
@@ -205,14 +209,6 @@
 
         TTransDtl dtl=transDtlService.saveTransdtl(tTransdtl);
 
-/*        CitizenCardPayinitParam param=new CitizenCardPayinitParam();
-        param.setBillno(dtl.getBillno());
-        param.setShopaccno(dtl.getShopid());
-        param.setTransdate(dtl.getTransdate());
-        param.setTranstime(dtl.getTranstime());
-        param.setCardNo(dtl.getCardno());
-        param.setAmount(0);
-        CitizenPayResponse response=payApiService.citizencardPayinit(param);*/
         resp.setBillno(tTransdtl.getBillno());
         resp.setRetcode(ErrorCode.ERRIF_OK);
         resp.setAnonymous(false);
@@ -253,20 +249,37 @@
         }
 
         Integer posamount=req.getAmount();
-
-
-
         tTransdtl.setAmount(req.getAmount() / 100.0);
         tTransdtl.setManagefee(extamount / 100.0); //managefeetype :mealer discount
         tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_WAIT);
         transDtlService.saveTransdtl(tTransdtl);
 
-
-
-        //TODO:调核心平台初始化确认 逻辑缺！！！
-        tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
-        transDtlService.saveTransdtl(tTransdtl);
-
+        CitizenCardPayinitParam param=new CitizenCardPayinitParam();
+        param.setBillno(tTransdtl.getBillno());
+        param.setShopaccno(tTransdtl.getShopid());
+        param.setTransdate(tTransdtl.getTransdate());
+        param.setTranstime(tTransdtl.getTranstime());
+        param.setCardNo(tTransdtl.getCardno());
+        param.setAmount(MoneyUtil.YuanToFen(tTransdtl.getAmount()));
+        param.setDtltype("canteen");
+        CitizenPayResponse response=citizenCardPayProxy.citizencardPayinit(param);
+        if(response.getRetcode() == 0){
+            CitizenCardPayfinishParam confirmParam=new CitizenCardPayfinishParam();
+            confirmParam.setRefno(response.getRefno());
+            CitizenPayResponse confirmResp = citizenCardPayProxy.citizencardPayFinish(confirmParam);
+            if(confirmResp.getRetcode() == 0){
+                tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_SUCCESS);
+                transDtlService.saveTransdtl(tTransdtl);
+            }else{
+                tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+                tTransdtl.setAttr1(confirmResp.getRetmsg());
+                transDtlService.saveTransdtl(tTransdtl);
+            }
+        }else{
+            tTransdtl.setStatus(RestaurantConstant.STATUS_TRANSDTL_FAIL);
+            tTransdtl.setAttr1(response.getRetmsg());
+            transDtlService.saveTransdtl(tTransdtl);
+        }
 
         resp.setBillno(req.getBillno());
         Double retAmount=tTransdtl.getAmount()*100;
diff --git a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCard.java b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCard.java
index 85d3174..14ec99a 100644
--- a/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCard.java
+++ b/src/main/java/com/supwisdom/dlpay/restaurant/domain/TCard.java
@@ -11,7 +11,7 @@
     private String custid;
     private String cardphyid;
     private String  status;
-    private Integer transstatus;
+    private String transstatus;
     private String opendate;
     private String closedate;
     private String cardverno;
@@ -55,12 +55,13 @@
     public void setStatus(String status) {
         this.status = status;
     }
-    @Column(name = "transstatus" ,length = 1)
-    public Integer getTransstatus() {
+
+    @Column(name = "transstatus" ,length = 32)
+    public String getTransstatus() {
         return transstatus;
     }
 
-    public void setTransstatus(Integer transstatus) {
+    public void setTransstatus(String transstatus) {
         this.transstatus = transstatus;
     }
 
