diff --git a/payapi/build.gradle b/payapi/build.gradle
index de710ba..cdb07b4 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -115,7 +115,7 @@
 //    implementation files('libs/ojdbc6.jar')
     implementation 'commons-dbcp:commons-dbcp:1.4'
     implementation 'commons-beanutils:commons-beanutils:1.9.3'
-    implementation files('libs/ynrcc-mbp-1.1-RELEASE.jar')
+    implementation files('libs/ynrcc-mbp-1.1.0-RELEASE.jar')
 
     implementation 'log4j:log4j:1.2.17'
     implementation 'com.alibaba:fastjson:1.2.60'
diff --git a/payapi/libs/ynrcc-mbp-1.1-RELEASE.jar b/payapi/libs/ynrcc-mbp-1.1-RELEASE.jar
deleted file mode 100644
index 34da472..0000000
--- a/payapi/libs/ynrcc-mbp-1.1-RELEASE.jar
+++ /dev/null
Binary files differ
diff --git a/payapi/libs/ynrcc-mbp-1.1.0-RELEASE.jar b/payapi/libs/ynrcc-mbp-1.1.0-RELEASE.jar
new file mode 100644
index 0000000..0aee6ef
--- /dev/null
+++ b/payapi/libs/ynrcc-mbp-1.1.0-RELEASE.jar
Binary files differ
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/ynrcc_netpay_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/ynrcc_netpay_service_impl.kt
index 3c1c7e7..c1e037b 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/ynrcc_netpay_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/agent/service/impl/ynrcc_netpay_service_impl.kt
@@ -42,7 +42,7 @@
 
     override fun doAnalysisSignature(shopaccno: String, plain: String, signature: String): Map<String, String> {
         val config = sourceTypeService.getConsumePaytypeConfig(TradeDict.PAYTYPE_YNRCC_PAY, shopaccno, false, true)
-        val data = YNRCCFastGateWayPayApi.verify(signature, plain) //调SDK验证签名
+        val data = YNRCCFastGateWayPayApi.verify(signature, plain) /* 调SDK验证签名 */
         val merId = config[YnrccPayUtil.MER_ID]
         if (!merId.isNullOrEmpty() && merId != data["Mer_Id"]) {
             throw TransactionProcessException(TradeErrorCode.BUSINESS_DEAL_ERROR, "参数[Mer_Id]不匹配！")
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/ynrcc_netpay_business_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/ynrcc_netpay_business_service.kt
index da4e581..61e590b 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/ynrcc_netpay_business_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/ynrcc_netpay_business_service.kt
@@ -60,9 +60,9 @@
     }
 
     override fun applyUserYnrccPaySign(param: YnrccPaySignApplyParam): YnrccPaySignApplyResponse {
-        val person = personDao.findByUserid(param.userid)
+        val person = personDao.findByUserid(param.userid?.trim())
                 ?: throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS, "用户<${param.userid}>不存在")
-        val shopacc = shopaccDao.findByShopaccno(param.shopaccno)
+        val shopacc = shopaccDao.findByShopaccno(param.shopaccno?.trim())
                 ?: throw TransactionProcessException(TradeErrorCode.SHOP_NOT_EXISTS, "商户<${param.shopaccno}>不存在")
         val bankCard = cardDao.findCardByCardnoAndCardtype(param.bankcardno.trim(), ConstantUtil.CARDTYPE_BANKCARD)
         if (null != bankCard && person.userid != bankCard.userid) {
@@ -77,7 +77,7 @@
         val isAuthSign = ynrccPaySignDao.countByBankcardnoAndSignStatus(param.bankcardno, shopacc.shopaccno) > 0
         var userSign = ynrccPaySignDao.getUserSign(param.bankcardno, shopacc.shopaccno) ?: TYnrccPaySign().apply {
             this.bankcardno = param.bankcardno.trim()
-            this.bankcardno = shopacc.shopaccno
+            this.shopaccno = shopacc.shopaccno
             this.userid = person.userid
             this.status = TradeDict.STATUS_NORMAL
             this.isSignFlag = false
@@ -238,10 +238,10 @@
             throw TransactionProcessException(TradeErrorCode.BUSINESS_DEAL_ERROR, "支付金额与流水交易金额不匹配！")
         }
 
-        val agentCode = YnrccPayUtil.errcode.firstOrNull{
+        val agentCode = YnrccPayUtil.errcode.firstOrNull {
             it.second.code == respCode
-        }?: org.springframework.data.util.Pair.of(AgentCode.COMMON_ERROR,
-                YnrccRespCode(respCode,  "未知错误[$respCode]"))
+        } ?: org.springframework.data.util.Pair.of(AgentCode.COMMON_ERROR,
+                YnrccRespCode(respCode, "未知错误[$respCode]"))
 
         return AgentResponse<DtlStatus>().also {
             it.code = agentCode.first
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt
index a55845f..6429383 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/controller/framework_controller.kt
@@ -1,8 +1,13 @@
 package com.supwisdom.dlpay.framework.controller
 
+import com.google.gson.Gson
 import com.jcabi.manifests.Manifests
+import com.supwisdom.dlpay.agent.service.YnrccNetPayService
 import com.supwisdom.dlpay.api.bean.ApiVersionResponse
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
+import com.supwisdom.dlpay.framework.util.DateUtil
+import com.supwisdom.dlpay.framework.util.RandomUtils
+import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.ResponseEntity
 import org.springframework.web.bind.annotation.GetMapping
 import org.springframework.web.bind.annotation.RequestMapping
@@ -12,6 +17,9 @@
 @RestController
 @RequestMapping("/api/common")
 class AboutController {
+    @Autowired
+    private lateinit var ynrccNetPayService: YnrccNetPayService
+
     @GetMapping("/version")
     fun version(): ResponseEntity<Any> {
         return try {
@@ -24,4 +32,31 @@
                     .success(ApiVersionResponse("unknown")))
         }
     }
+
+    @GetMapping("/resttest")
+    fun test(): ResponseEntity<Any> {
+        return try {
+            val shopaccno="2000000013"
+            val transDateTime = DateUtil.getNow("yyyyMMddHHmmss")
+            val refno = transDateTime + RandomUtils.randomNumber(6)
+            val amount = 1
+            val productInfo = "农商行快捷支付测试"
+            val extData = refno
+            val custname = ""
+            val email=""
+            val customerSignNo="12345678"
+
+            val resp = ynrccNetPayService.doApplyYnrccPaySign(shopaccno)
+
+//            val resp = ynrccNetPayService.doYnrccPayInit(shopaccno,refno,amount,transDateTime,
+//            productInfo,extData,custname,email,customerSignNo);
+
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .success(Gson().toJson(resp)))
+        } catch (e: Exception) {
+            e.printStackTrace()
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .success(e.message ?: "error!"))
+        }
+    }
 }
\ No newline at end of file
