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

import android.content.Intent
import android.os.Bundle
import android.widget.Toast
zhaopengxiang's avatar
zhaopengxiang committed
6
import androidx.appcompat.app.AppCompatActivity
jiangjiantao's avatar
jiangjiantao committed
7 8 9
import androidx.lifecycle.ViewModelProvider
import com.alibaba.fastjson.JSON
import com.blankj.utilcode.util.LogUtils
10
import com.miya.fastcashier.config.IntentExtra
jiangjiantao's avatar
jiangjiantao committed
11 12 13 14
import com.miya.fastcashier.databinding.ActivityAliPayCodeBinding
import com.miya.fastcashier.utils.CenterToasty
import com.miya.fastcashier.utils.StringPriceFormat
import com.miya.fastcashier.utils.clickWithTrigger
15
import com.miya.fastcashier.utils.manage.OrderRecordManageKit
jiangjiantao's avatar
jiangjiantao committed
16 17 18 19 20 21 22 23 24 25 26
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.*

/***
 * 支付宝付款码
 */
class AliPayCodeActivity : AppCompatActivity() {
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
        extra?.let {
            val payServiceResponse = it as PayServiceResponse
            LogUtils.e(JSON.toJSONString(payServiceResponse))
            tvPrice.text = "¥".plus(StringPriceFormat.transStringPriceToDecimalString( payServiceResponse.tradPrice))
            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()
    }

}