Эх сурвалжийг харах

fix 未设置通联支付时,也需要支持支付宝+微信

robin 4 жил өмнө
parent
commit
c5ba750439

+ 13 - 7
app/src/main/java/com/doverfuelingsolutions/issp/api/SystemApi.kt

@@ -10,9 +10,9 @@ import com.doverfuelingsolutions.issp.api.service.*
 import com.doverfuelingsolutions.issp.data.GlobalData
 import com.doverfuelingsolutions.issp.utils.AppUtil
 import com.doverfuelingsolutions.issp.utils.StringUtil
-import com.doverfuelingsolutions.issp.utils.thread.ThreadUtil
+import com.doverfuelingsolutions.issp.utils.ValidateUtil
 import com.doverfuelingsolutions.issp.utils.log.DFSLog
-import com.doverfuelingsolutions.issp.utils.sp.SPUtil
+import com.doverfuelingsolutions.issp.utils.thread.ThreadUtil
 import com.wayne.www.waynelib.fdc.message.DeviceClass
 import com.wayne.www.waynelib.webservice.entity.*
 import org.json.JSONArray
@@ -75,10 +75,10 @@ object SystemApi {
             override fun onResponse(call: Call<ResultObj<List<ResultPaymentParam>>>, response: Response<ResultObj<List<ResultPaymentParam>>>) {
                 val code = response.code()
                 val body = response.body()
-                if (code == 200 && body != null && body.StatusCode == 200 && body.Data.isNotEmpty()) {
-                    it.resume(DFSResult.success(body.Data[0]))
-                } else {
-                    it.resume(DFSResult.fail(R.string.fail_get_pay_param))
+                when {
+                    code != 200 -> it.resume(DFSResult.fail(R.string.fail_get_pay_param))
+                    body != null && body.StatusCode == 200 && body.Data.isNotEmpty() -> it.resume(DFSResult.success(body.Data[0]))
+                    else -> it.resume(DFSResult.success(ResultPaymentParam(0, "移动支付")))
                 }
             }
 
@@ -137,7 +137,13 @@ object SystemApi {
         val posTrxMop = PosTrxMop().apply {
             setPayBack(0f)
             authCode = code
-            posMopPaymentId = GlobalData.paymentId.get()
+            // 支付类型
+            val paymentId = GlobalData.paymentId.get()
+            posMopPaymentId = when {
+                paymentId > 0 -> paymentId
+                ValidateUtil.isAliPaymentCode(code) -> 2 // 支付宝支付
+                else -> 3 // 微信支付
+            }
             paid = if (BuildConfig.DEBUG) {
                 0.01f
             } else {

+ 2 - 0
app/src/main/java/com/doverfuelingsolutions/issp/utils/ValidateUtil.kt

@@ -14,5 +14,7 @@ class ValidateUtil {
         fun isUrl(url: String): Boolean = regexUrl.matches(url)
         fun isIPHost(url: String): Boolean = regexIPHost.matches(url)
         fun isPort(port: String): Boolean = isPositiveInt(port) && port.length < 6 && port.toInt() < 65535
+        // 判断付款码是否为支付宝的
+        fun isAliPaymentCode(code: String) = code.startsWith("25") ||code.startsWith("26") ||code.startsWith("27") ||code.startsWith("28") ||code.startsWith("29") ||code.startsWith("30")
     }
 }

+ 12 - 0
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentNozzle.kt

@@ -8,13 +8,17 @@ import androidx.databinding.DataBindingUtil
 import androidx.lifecycle.lifecycleScope
 import androidx.recyclerview.widget.GridLayoutManager
 import com.doverfuelingsolutions.issp.R
+import com.doverfuelingsolutions.issp.api.SystemApi
 import com.doverfuelingsolutions.issp.api.entity.PumpInfo
+import com.doverfuelingsolutions.issp.data.GlobalData
 import com.doverfuelingsolutions.issp.databinding.FragmentNozzleBinding
 import com.doverfuelingsolutions.issp.fusion.FusionManager
+import com.doverfuelingsolutions.issp.utils.DFSToastUtil
 import com.doverfuelingsolutions.issp.utils.StringUtil
 import com.doverfuelingsolutions.issp.view.MainActivity
 import com.doverfuelingsolutions.issp.view.adapter.ChooseListAdapter
 import com.scwang.smart.refresh.header.ClassicsHeader
+import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
 
 class FragmentNozzle private constructor(private val pumpList: List<PumpInfo>) : FragmentBasic() {
@@ -68,6 +72,14 @@ class FragmentNozzle private constructor(private val pumpList: List<PumpInfo>) :
     }
 
     private fun select(nozzleList: String) {
+        if (GlobalData.paymentId.get() == -1) {
+            DFSToastUtil.fail(R.string.fail_get_pay_param_retry)
+            GlobalScope.launch {
+                SystemApi.paymentParam()
+            }
+            return
+        }
+
         pumpList.find {
             it.nozzleList.joinToString(", ") { nozzleInfo ->
                 nozzleInfo.physicalId.toString()

+ 12 - 1
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentSelect.kt

@@ -8,14 +8,17 @@ import androidx.databinding.DataBindingUtil
 import androidx.fragment.app.viewModels
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
-import com.doverfuelingsolutions.issp.DFSApplication
 import com.doverfuelingsolutions.issp.R
+import com.doverfuelingsolutions.issp.api.SystemApi
 import com.doverfuelingsolutions.issp.data.GlobalData
 import com.doverfuelingsolutions.issp.databinding.FragmentSearchTypeBinding
 import com.doverfuelingsolutions.issp.fusion.FusionManager
 import com.doverfuelingsolutions.issp.utils.AppUtil
+import com.doverfuelingsolutions.issp.utils.DFSToastUtil
 import com.doverfuelingsolutions.issp.view.MainActivity
 import com.doverfuelingsolutions.issp.view.PreferenceActivity
+import kotlinx.coroutines.GlobalScope
+import kotlinx.coroutines.launch
 
 class FragmentSelect : FragmentBasic(),
     View.OnLongClickListener,
@@ -40,6 +43,14 @@ class FragmentSelect : FragmentBasic(),
     }
 
     override fun onClick(v: View?) {
+        if (GlobalData.paymentId.get() == -1) {
+            DFSToastUtil.fail(R.string.fail_get_pay_param_retry)
+            GlobalScope.launch {
+                SystemApi.paymentParam()
+            }
+            return
+        }
+
         when (v) {
             binding.chooseNozzle -> {
                 (activity as MainActivity).fragmentRouter.push(FragmentNozzle.build(FusionManager.pumpList))

+ 1 - 0
app/src/main/res/values/strings.xml

@@ -118,6 +118,7 @@
     <string name="unlock_order">解锁订单</string>
     <string name="lock_order">锁定订单</string>
     <string name="fail_get_pay_param">获取支付配置信息失败</string>
+    <string name="fail_get_pay_param_retry">获取支付配置信息失败,请稍候重试</string>
     <string name="no_unpaid_order">没有待支付的订单</string>
     <string name="fail_get_accumulation">获取累计数信息失败</string>
     <string name="order_info_oil">油品:%1$s</string>