AliPayCodeActivity.kt 3.27 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
import com.miya.fastcashier.databinding.ActivityAliPayCodeBinding
赵鹏翔's avatar
赵鹏翔 committed
15
import com.miya.fastcashier.util.CenterToasty
jiangjiantao's avatar
jiangjiantao committed
16 17 18 19 20 21 22 23 24 25
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 AliPayCodeActivity : BaseActivity() {
jiangjiantao's avatar
jiangjiantao committed
27

jiangjiantao's avatar
jiangjiantao committed
28 29 30
    private lateinit var viewModel: PayViewModel
    private lateinit var binding: ActivityAliPayCodeBinding

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

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

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

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

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

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

        viewModel.payResultLiveData.observe(this,{ result ->
            result.getOrElse {
                it.message?.let { it1 -> {
                    if(!it1.contains("交易不存在")){
                        CenterToasty.error(this, it1,Toast.LENGTH_LONG).show()
                    }
                }  }
                return@observe
            }

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

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

}