WxPayCodeActivity.kt 3.34 KB
Newer Older
jiangjiantao's avatar
jiangjiantao committed
1 2 3 4 5 6
package com.miya.fastcashier.ui

import android.content.Intent
import android.os.Bundle
import android.widget.Toast
import androidx.lifecycle.ViewModelProvider
7
import com.blankj.utilcode.util.GsonUtils
jiangjiantao's avatar
jiangjiantao committed
8
import com.blankj.utilcode.util.LogUtils
赵鹏翔's avatar
赵鹏翔 committed
9
import com.fastcashier.lib_common.base.BaseActivity
赵鹏翔's avatar
赵鹏翔 committed
10
import com.fastcashier.lib_common.config.IntentExtra
11 12
import com.fastcashier.lib_common.function.pay.OrderRecordManageKit
import com.fastcashier.lib_common.util.StringPriceFormatUtils
13
import com.fastcashier.lib_common.util.clickWithTrigger
jiangjiantao's avatar
jiangjiantao committed
14 15 16 17 18 19 20 21 22 23 24 25
import com.miya.fastcashier.databinding.ActivityWxPayCodeBinding
import com.miya.fastcashier.utils.CenterToasty
import com.miya.fastcashier.viewmodel.PayViewModel
import com.miya.print.utils.BitmapUtils
import com.sdy.miya.moblie.component.pay.platform.bean.PayServiceResponse
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
import java.util.*

/**
 * 微信付款码
 */
赵鹏翔's avatar
赵鹏翔 committed
26
class WxPayCodeActivity : BaseActivity() {
jiangjiantao's avatar
jiangjiantao committed
27 28 29
    private lateinit var viewModel: PayViewModel
    private lateinit var binding: ActivityWxPayCodeBinding

30 31 32 33 34 35 36 37 38
    companion object {
        fun start(context: BaseActivity, payServiceResponse: PayServiceResponse?) {
            val intent = Intent()
            intent.setClass(context, WxPayCodeActivity::class.java)
            intent.putExtra(IntentExtra.KEY_EXTRA_PAYSERVICERESPONSE, payServiceResponse)
            context.startActivity(intent)
        }
    }

jiangjiantao's avatar
jiangjiantao committed
39 40 41 42 43 44 45 46
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        binding = ActivityWxPayCodeBinding.inflate(layoutInflater)
        setContentView(binding.root)
        viewModel = ViewModelProvider(this).get(PayViewModel::class.java)

        val ivPayCode = binding.ivPayCode
jiangjiantao's avatar
jiangjiantao committed
47
        val llBack = binding.llBack
jiangjiantao's avatar
jiangjiantao committed
48 49
        val tvPrice = binding.tvPrice

jiangjiantao's avatar
jiangjiantao committed
50
        llBack.clickWithTrigger { finish() }
jiangjiantao's avatar
jiangjiantao committed
51

52
        val extra = intent.getSerializableExtra(IntentExtra.KEY_EXTRA_PAYSERVICERESPONSE)
jiangjiantao's avatar
jiangjiantao committed
53 54
        extra?.let {
            val payServiceResponse = it as PayServiceResponse
55 56 57
            LogUtils.e(GsonUtils.toJson(payServiceResponse))
            tvPrice.text =
                "¥".plus(StringPriceFormatUtils.transStringPriceToDecimalString(payServiceResponse.tradPrice))
jiangjiantao's avatar
jiangjiantao committed
58
            runBlocking(Dispatchers.IO) {
59 60
                val qrcode =
                    BitmapUtils.createBarcodeBitmap(payServiceResponse.payQrCode, 9, 453, 453)
jiangjiantao's avatar
jiangjiantao committed
61 62 63 64 65 66 67 68
                runOnUiThread {
                    ivPayCode.setImageBitmap(qrcode)
                    //支付结果查询
                    viewModel.payResultQuery(payServiceResponse)
                }
            }
        }

69
        viewModel.payResultLiveData.observe(this, { result ->
jiangjiantao's avatar
jiangjiantao committed
70
            result.getOrElse {
71 72 73 74 75
                it.message?.let { it1 ->
                    {
                        if (!it1.contains("未付款")) {
                            CenterToasty.error(this, it1, Toast.LENGTH_LONG).show()
                        }
jiangjiantao's avatar
jiangjiantao committed
76
                    }
77
                }
jiangjiantao's avatar
jiangjiantao committed
78 79 80 81 82
                return@observe
            }

            result.getOrNull().also {
                it?.let { it1 ->
83
                    OrderRecordManageKit.setSerialNumber()
84
                    PayResultActivity.start(this@WxPayCodeActivity, it1)
jiangjiantao's avatar
jiangjiantao committed
85 86 87 88 89 90 91 92 93 94 95 96
                }
            }
        })

    }

    override fun onStop() {
        super.onStop()
        viewModel.payResultJob.cancel()
    }

}