diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index c6c5cb2..870bce8 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -36,6 +36,7 @@
 import org.springframework.web.multipart.MultipartFile
 import java.time.Duration
 import java.util.*
+import kotlin.collections.HashMap
 
 
 @RestController
@@ -620,7 +621,7 @@
      * 查询账单
      * */
     @RequestMapping("/bills")
-    fun bills(pageno: Int): JsonResult {
+    fun bills(pageno: Int,platform: String?): JsonResult {
         val p = SecurityContextHolder.getContext().authentication
         val user = mobileApiService.findUserById(p.name)
                 ?: return JsonResult.error("用户不存在，请注册")
@@ -665,6 +666,46 @@
                 signed = TradeDict.STATUS_YES
             }
         }
+        var version:String?=""
+        var minversion:String?=""
+        var versionmsg:String?=""
+        var versionurl:String?=""
+        if(!platform.isNullOrEmpty()){
+            var map= mutableMapOf<String,Any>()
+            if(platform.toLowerCase().contains("android")){
+                dictionaryProxy.refreshDictionary("androidapp")
+                map = dictionaryProxy.getDictionaryAsMap("androidapp")
+                if(map["androidversion"]!=null){
+                    version = map["androidversion"] as String
+                }
+                if(map["androidminversion"]!=null){
+                    minversion = map["androidminversion"] as String
+                }
+                if(map["androidversionmsg"]!=null){
+                    versionmsg = map["androidversionmsg"] as String
+                }
+                if(map["androidversionurl"]!=null){
+                    versionurl = map["androidversionurl"] as String
+                }
+
+            }else if(platform.toLowerCase().contains("iphone")){
+                map = dictionaryProxy.getDictionaryAsMap("iosapp")
+                if(map["iosversion"]!=null){
+                    version = map["iosversion"] as String
+                }
+                if(map["iosminversion"]!=null){
+                    minversion = map["iosminversion"] as String
+                }
+                if(map["androidversionmsg"]!=null){
+                    versionmsg = map["androidversionmsg"] as String
+                }
+                if(map["androidversionurl"]!=null){
+                    versionurl = map["androidversionurl"] as String
+                }
+            }
+
+        }
+
         var name = person.name
         val page = userService.findPersondtlByUserid(user.userid!!, no)
         return JsonResult.ok("OK").put("page", page)
@@ -676,9 +717,10 @@
                 ?.put("name", name)
                 ?.put("needrebind", needrebind)
                 ?.put("signed", signed)
-                ?.put("version","1")
-                ?.put("minversion","1")
-                ?.put("versionmsg","1")
+                ?.put("version",version)
+                ?.put("minversion",minversion)
+                ?.put("versionmsg",versionmsg)
+                ?.put("versionurl",versionurl)
                 ?.put("userid", if (user.userid.isNullOrEmpty()) "" else user.userid)!!.put("t", t)!!
     }
 
