Browse Source

fix 修复支付渠道处理错误

robin 4 years ago
parent
commit
670989d82a
1 changed files with 18 additions and 4 deletions
  1. 18 4
      app/src/main/java/com/doverfuelingsolutions/issp/api/SystemApi.kt

+ 18 - 4
app/src/main/java/com/doverfuelingsolutions/issp/api/SystemApi.kt

@@ -73,12 +73,26 @@ object SystemApi {
     suspend fun paymentParam() = suspendCoroutine<DFSResult<ResultPaymentParam>> {
         serviceTrx.paymentParam().enqueue(object : Callback<ResultObj<List<ResultPaymentParam>>> {
             override fun onResponse(call: Call<ResultObj<List<ResultPaymentParam>>>, response: Response<ResultObj<List<ResultPaymentParam>>>) {
+                // {"StatusCode":200,"Message":"OK","Data":[{"PaymentId":2,"DispalyName":"支付宝支付"},{"PaymentId":3,"DispalyName":"微信支付"}]}
+                // {"StatusCode":200,"Message":"OK","Data":[{"PaymentId":13,"DispalyName":"通联"}]}
                 val code = response.code()
                 val body = response.body()
-                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, "移动支付")))
+                if (code != 200 || body?.Data.isNullOrEmpty()) {
+                    it.resume(DFSResult.fail(R.string.fail_get_pay_param))
+                    return
+                }
+                // 目前就三种支付渠道:通联、微信、支付宝
+                // 由于实际使用只有两种方案:通联 OR 微信+支付宝,不存在单独使用的情况
+                // 对于微信+支付宝,pay 方法会根据付款码来判断区分究竟是微信还是支付宝,因此本地化一个支付类型
+                body!!.Data.let { channels ->
+                    val combine = channels.find { type -> type.PaymentId == 13 }
+                    if (combine != null) {
+                        it.resume(DFSResult.success(combine))
+                        return
+                    } else {
+                        it.resume(DFSResult.success(ResultPaymentParam(0, "移动支付")))
+                        return
+                    }
                 }
             }