diff --git a/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeDao.java b/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeDao.java
index f782db4..0b0b998 100644
--- a/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeDao.java
+++ b/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeDao.java
@@ -1,6 +1,8 @@
 package com.supwisdom.dlpay.api.dao;
 
 import com.supwisdom.dlpay.api.domain.TPaytype;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
@@ -10,4 +12,6 @@
 @Repository
 public interface PaytypeDao extends JpaRepository<TPaytype, String> {
   TPaytype getByPaytype(String paytype);
+
+  Page<TPaytype> findByPaytypeContaining(String paytype, Pageable pageable);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TUserdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TUserdtl.java
index aa195a7..694e7a9 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TUserdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TUserdtl.java
@@ -33,7 +33,10 @@
   private Double befbal;
 
   @Column(name = "AMOUNT", precision = 9, scale = 2)
-  private Double amount;
+  private Double amount; //实际付款金额
+
+  @Column(name = "TOTAL_AMOUNT", precision = 9, scale = 2)
+  private Double totalAmount; //订单总金额
 
   @Column(name = "AFTBAL", precision = 9, scale = 2)
   private Double aftbal;
diff --git a/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java b/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
index 50ab6a2..0313df1 100644
--- a/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
+++ b/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.system.controller;
 
 import com.supwisdom.dlpay.api.bean.JsonResult;
+import com.supwisdom.dlpay.api.domain.TPaytype;
 import com.supwisdom.dlpay.framework.domain.TApiClient;
 import com.supwisdom.dlpay.framework.domain.TBusinesspara;
 import com.supwisdom.dlpay.framework.domain.TSyspara;
@@ -346,5 +347,30 @@
     }
   }
 
+  /**
+   * ====================================================
+   *            支付能力配置
+   * ====================================================
+   */
+  @GetMapping("/param/paytype")
+  public String paytypeView() {
+    return "system/param/paytype";
+  }
+
+  @GetMapping("/param/paytypelist")
+  @PreAuthorize("hasPermission('/param/paytype','')")
+  @ResponseBody
+  public PageResult<TPaytype> getPaytypeDataList(@RequestParam("page") Integer pageNo,
+                                                 @RequestParam("limit") Integer pageSize,
+                                                 @RequestParam(value = "paytype", required = false) String paytype) {
+    try {
+      if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
+      if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
+      return paramService.getPaytypePage(paytype, pageNo, pageSize);
+    } catch (Exception e) {
+      e.printStackTrace();
+      return new PageResult<>(99, "系统查询错误");
+    }
+  }
 
 }
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java b/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
index 3097754..aa5f7ea 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.system.service;
 
+import com.supwisdom.dlpay.api.domain.TPaytype;
 import com.supwisdom.dlpay.framework.domain.TApiClient;
 import com.supwisdom.dlpay.framework.domain.TBusinesspara;
 import com.supwisdom.dlpay.framework.domain.TSyspara;
@@ -42,4 +43,7 @@
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
   boolean deleteApiClient(TApiClient apiClient);
 
+  @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
+  PageResult<TPaytype> getPaytypePage(String paytype, int pageNo, int pageSize);
+
 }
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
index 8d63932..5ed8ca9 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
@@ -1,5 +1,7 @@
 package com.supwisdom.dlpay.system.service.impl;
 
+import com.supwisdom.dlpay.api.dao.PaytypeDao;
+import com.supwisdom.dlpay.api.domain.TPaytype;
 import com.supwisdom.dlpay.framework.dao.ApiClientDao;
 import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
 import com.supwisdom.dlpay.framework.dao.SysparaDao;
@@ -34,6 +36,8 @@
   private BusinessparaDao businessparaDao;
   @Autowired
   private ApiClientDao apiClientDao;
+  @Autowired
+  private PaytypeDao paytypeDao;
 
   @Override
   public PageResult<TSyspara> getSysparaPage(Integer paraid, String paraname, int pageNo, int pageSize) {
@@ -139,4 +143,13 @@
     return false;
   }
 
+  @Override
+  public PageResult<TPaytype> getPaytypePage(String paytype, int pageNo, int pageSize) {
+    Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("paytype"));
+    if (!StringUtil.isEmpty(paytype)) {
+      return new PageResult<>(paytypeDao.findByPaytypeContaining(paytype.trim(), pageable));
+    }
+    return new PageResult<>(paytypeDao.findAll(pageable));
+  }
+
 }
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt b/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
index 2cb6caa..32ced96 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/transaction_builder.kt
@@ -6,7 +6,6 @@
 class PersonTranactionBuilder(val parent: TransactionBuilder) {
     var userid: String = ""
     var userName: String = ""
-    var payCode: String = ""
     var amount: Double = 0.0
     var summary: String = ""
     var oppositeAccno: String = ""
@@ -27,8 +26,6 @@
     var oppositeName: String = ""
     var oppositeType: String = ""
 
-
-    var payCode: String = ""
     fun and(): TransactionBuilder {
         return parent
     }
@@ -53,8 +50,11 @@
 
     var transDate: String = ""
     var transTime: String = ""
-    var payCode: String = ""
+    var transCode: Int = 0 //交易码,各明细流水统一
     var refno: String = ""
+    var outtradeno:String="" //第三方流水号
+    val extendMap = mutableMapOf<String, String>() //存调第三方需要的参数信息，存数据库 TB_USERDTL_BUSINESS
+    val resultMap = mutableMapOf<String, String>() //存调第三方结果数据
 
     fun person(): PersonTranactionBuilder {
         return PersonTranactionBuilder(this).also {
@@ -92,7 +92,7 @@
             val builder = TransactionBuilder().apply {
                 this.transDate = transDate
                 this.transTime = transTime
-                this.payCode = "3001"
+                this.transCode = 3001
             }.person().apply {
                 this.userid = userid // 可以再优化，直接用 person 对象
                 this.userName = person.accname
@@ -104,7 +104,6 @@
                 this.amount = amount / 100.0 // 金额考虑减和加
                 this.summary = "POS消费"
             }.and()
-
             if (manageFee > 0) {
                 builder.subject().apply {
                     val subject = accountUtilServcie.readSubject("2001")
diff --git a/src/main/resources/templates/system/param/paytype.html b/src/main/resources/templates/system/param/paytype.html
new file mode 100644
index 0000000..8f9883a
--- /dev/null
+++ b/src/main/resources/templates/system/param/paytype.html
@@ -0,0 +1,191 @@
+<div class="layui-card">
+    <div class="layui-card-header">
+        <h2 class="header-title">支付能力配置</h2>
+        <span class="layui-breadcrumb pull-right">
+          <a href="#">参数管理</a>
+          <a><cite>支付能力配置</cite></a>
+        </span>
+    </div>
+    <div class="layui-card-body">
+        <div class="layui-form toolbar">
+            搜索：
+            <input id="search-paytype" class="layui-input search-input" type="text" maxlength="40" style="width: 300px;"
+                   placeholder="输入支付方式查询"/>
+            <button id="btn-search" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
+            </button>
+            <button id="btn-add" class="layui-btn icon-btn" data-type="add"><i class="layui-icon">&#xe654;</i>新 增</button>
+            <button id="btn-reset" class="layui-btn layui-btn-primary" data-type="reset"><i class="layui-icon"></i>清 空</button>
+        </div>
+        <table class="layui-table" id="paytypeTable" lay-filter="paytypeTable-filter"></table>
+    </div>
+</div>
+
+<!-- 表格操作列 -->
+<script type="text/html" id="paytype-table-bar">
+    {{# if(d.paytype == 'balance') { }}
+        <span></span>
+    {{# }else{ }}
+        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
+    {{# } }}
+</script>
+
+<!-- 表格状态列 -->
+<script type="text/html" id="enable-tpl-state">
+    <input type="checkbox" lay-filter="enable-tpl-state" value="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+           {{d.enable=='yes'?'checked':''}} />
+</script>
+<script type="text/html" id="chargeenable-tpl-state">
+    <input type="checkbox" lay-filter="chargeenable-tpl-state" value="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+           {{(d.enable=='yes' && d.chargeEnable=='yes')?'checked':''}} />
+</script>
+<script type="text/html" id="consumeenable-tpl-state">
+    <input type="checkbox" lay-filter="consumeenable-tpl-state" value="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+           {{(d.enable=='yes' && d.consumeEnable=='yes')?'checked':''}} />
+</script>
+<script type="text/html" id="anonymousenable-tpl-state">
+    <input type="checkbox" lay-filter="anonymousenable-tpl-state" value="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+           {{(d.enable=='yes' && d.anonymousEnable=='yes')?'checked':''}} />
+</script>
+
+<script>
+    layui.use(['form', 'table', 'layer', 'admin', 'element'], function () {
+        var form = layui.form;
+        var table = layui.table;
+        var admin = layui.admin;
+        // 渲染表格
+        table.render({
+            elem: '#paytypeTable',
+            url: '/param/paytypelist',
+            page: true,
+            cols: [
+                [
+                    {field: 'paytype', title: '支付方式', width: 200, align: 'center', fixed: 'left', sort: true},
+                    {field: 'paydesc', title: '名称', align: 'center', sort: true},
+                    {field: 'enable', title: '状态', align: 'center', templet: '#enable-tpl-state',sort: true},
+                    {field: 'chargeEnable', title: '能否充值', align: 'center', templet: '#chargeenable-tpl-state',sort: true},
+                    {field: 'consumeEnable', title: '能否消费', align: 'center', templet: '#consumeenable-tpl-state',sort: true},
+                    {field: 'anonymousEnable', title: '匿名消费', align: 'center', templet: '#anonymousenable-tpl-state',sort: true},
+                    {align: 'center', title: '操作', width: 100, fixed: 'right', templet: function(item){
+                        if(item.paytype!='balance') {
+                           return '<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
+                        }else{
+                            return '';
+                        }
+                    }}
+                ]
+            ]
+        });
+        // 搜索按钮点击事件
+        $('#btn-search').click(function () {
+            var paytype = $("#search-paytype").val();
+            table.reload('paytypeTable', {where: {paytype: paytype}, page: {curr: 1}});
+        });
+
+        $('#btn-add').click(function () {
+            showEditModel();
+        });
+
+        $('#btn-reset').click(function () {
+            $("#search-paytypeTable").val("");
+        });
+
+        // function showEditModel(data) {
+        //     var title = data ? '修改角色' : '新增应用';
+        //     admin.putTempData('t_appclient', data);
+        //     admin.popupCenter({
+        //         title: title,
+        //         path: '/param/load4addapiclient',
+        //         finish: function () {
+        //             table.reload('apiClientTable');
+        //         }
+        //     });
+        // }
+        //
+        // // 修改user状态
+        // form.on('switch(api-tpl-state)', function (obj) {
+        //     var token = $("meta[name='_csrf_token']").attr("value");
+        //     admin.go('/param/updateapiclientstate', {
+        //         appid: obj.elem.value,
+        //         state: obj.elem.checked ? 'normal' : 'closed',
+        //         _csrf: token
+        //     }, function (data) {
+        //         if (data.code == 200) {
+        //             layer.msg(data.msg, {icon: 1});
+        //         } else if (data.code == 401) {
+        //             layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+        //                 location.replace('/login');
+        //             }, 1000);
+        //             return;
+        //         } else {
+        //             layer.msg(data.msg, {icon: 2});
+        //             $(obj.elem).prop('checked', !obj.elem.checked);
+        //             form.render('checkbox');
+        //         }
+        //     },function () {
+        //         layer.msg('请求失败了，请稍后再试', {icon: 2});
+        //         $(obj.elem).prop('checked', !obj.elem.checked);
+        //         form.render('checkbox');
+        //     });
+        // });
+        //
+        // //监听单元格
+        // table.on('tool(apiClientTable-filter)', function (obj) {
+        //     var data = obj.data;
+        //     if('del' == obj.event){
+        //         if(confirm("确定要删除应用参数["+data.appid+"]吗？")){
+        //             layer.load(2);
+        //             admin.go('/param/deleteapiclient', {
+        //                 appid: data.appid,
+        //                 _csrf: $("meta[name='_csrf_token']").attr("value")
+        //             }, function (data) {
+        //                 console.log(data.code);
+        //                 layer.closeAll('loading');
+        //                 if (data.code == 200) {
+        //                     layer.msg(data.msg, {icon: 1});
+        //                 } else if (data.code == 401) {
+        //                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+        //                         location.replace('/login');
+        //                     }, 1000);
+        //                     return;
+        //                 } else {
+        //                     layer.msg(data.msg, {icon: 2});
+        //                 }
+        //                 table.reload('apiClientTable');
+        //             }, function (ret) {
+        //                 console.log(ret);
+        //                 layer.closeAll('loading');
+        //                 layer.msg('请求失败了，请稍后再试', {icon: 2});
+        //             });
+        //         }
+        //     }else if('editRole' ==obj.event){
+        //         showEditModel(data);
+        //     }
+        // });
+        //
+        // table.on('edit(apiClientTable-filter)', function (obj) {
+        //     var row = obj.data; //得到所在行所有键值
+        //     var newval = obj.value; //得到修改后的值
+        //     admin.go('/param/updateapiclientpara', {
+        //         appid: row.appid,
+        //         secret: newval,
+        //         _csrf: $("meta[name='_csrf_token']").attr("value"),
+        //     }, function (data) {
+        //         if (data.code == 200) {
+        //             layer.msg("修改成功", {icon: 1});
+        //         } else if (data.code == 401) {
+        //             layer.msg(data.msg, {icon: 2, time: 1500}, function () {
+        //                 location.replace('/login');
+        //             }, 1000);
+        //             return;
+        //         } else {
+        //             layer.msg(data.msg, {icon: 2});
+        //             table.reload('apiClientTable');
+        //         }
+        //     },function () {
+        //         layer.msg('修改失败了，请稍后再试', {icon: 2});
+        //         table.reload('apiClientTable');
+        //     });
+        // })
+
+    });
+</script>
\ No newline at end of file
diff --git a/src/main/resources/templates/system/role/func.html b/src/main/resources/templates/system/role/func.html
index d838bb5..61cc1b1 100755
--- a/src/main/resources/templates/system/role/func.html
+++ b/src/main/resources/templates/system/role/func.html
@@ -1,5 +1,5 @@
 <div style="padding: 0 20px">
-    <div class="layui-form-item">
+    <div class="layui-form-item" style="max-height: 490px;overflow: auto;">
         <ul id="funclist" class="ztree"></ul>
     </div>
     <div class="layui-form-item model-form-footer">
diff --git a/src/main/resources/templates/system/role/index.html b/src/main/resources/templates/system/role/index.html
index 93c755d..5dcd1f7 100644
--- a/src/main/resources/templates/system/role/index.html
+++ b/src/main/resources/templates/system/role/index.html
@@ -72,6 +72,7 @@
             admin.putTempData('roleId', data.roleId);
             admin.popupCenter({
                 title: title,
+                area:['400px','600px'],
                 path: '/role/loadfunc'
             });
         };
