Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ym.com.home.payment
- import android.content.Intent
- import android.graphics.Color
- import android.graphics.drawable.ColorDrawable
- import android.os.Bundle
- import android.view.LayoutInflater
- import android.view.View
- import android.widget.TextView
- import androidx.core.content.ContextCompat
- import androidx.fragment.app.Fragment
- import androidx.fragment.app.FragmentManager
- import androidx.fragment.app.FragmentPagerAdapter
- import androidx.viewpager.widget.ViewPager
- import base.app.core.base.BaseActivity
- import com.google.android.material.tabs.TabLayout
- import base.app.core.util.showToast
- import kotlinx.android.synthetic.main.activity_payment_method.*
- import androidx.databinding.adapters.TextViewBindingAdapter.setText
- import androidx.lifecycle.Observer
- import base.app.core.constant.Payment
- import base.app.core.routing.HomeRoute
- import base.app.core.util.intentTo
- import base.app.core.util.showAlertSimple
- import com.midtrans.sdk.corekit.core.Constants
- import com.midtrans.sdk.corekit.core.MidtransSDK
- import com.midtrans.sdk.corekit.core.PaymentMethod
- import com.midtrans.sdk.uikit.views.alfamart.payment.AlfamartPaymentActivity
- import com.midtrans.sdk.uikit.views.banktransfer.payment.BankTransferPaymentActivity
- import com.midtrans.sdk.uikit.views.creditcard.saved.SavedCreditCardActivity
- import com.midtrans.sdk.uikit.views.indomaret.payment.IndomaretPaymentActivity
- import org.koin.android.viewmodel.ext.android.viewModel
- import org.koin.ext.getFullName
- import ym.com.home.R
- import ym.com.home.payment.model.PaymentViewModel
- class PaymentMethodActivity : BaseActivity(),
- PaymentMethodFragment.PaymentMethodListener,
- PaymentCodeReferalDialogFragment.DialogCallback {
- private var referralCode:String? = null
- private val viewModel: PaymentViewModel by viewModel()
- private var adapter: ViewPagerAdapter? = null
- private var paymentMethodSelected:String? = null
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_payment_method)
- window.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
- setupViewPager(viewPager)
- initView()
- initListener()
- setObserver()
- }
- private fun initView() {
- //custom ViewPager
- viewPager.offscreenPageLimit = 2
- viewPager.disableScroll(true)
- //custom TabLayout
- tabLayout.setupWithViewPager(viewPager)
- tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.white))
- tabLayout.getTabAt(0)?.setCustomView(R.layout.tab_payment_state)//sementara pakai static view
- tabLayout.getTabAt(1)?.setCustomView(R.layout.tab_payment_state_two)
- //adapter?.initTabView()//didn't work using child view (dynamic)
- }
- private fun initListener() {
- imageBack.setOnClickListener {
- super.onBackPressed()
- }
- buttonLanjut.setOnClickListener {
- val pos = viewPager.currentItem
- if(pos == 0){
- viewPager.currentItem = 1
- } else if (pos == 1 && viewModel.paymentChannel != "" || !referralCode.isNullOrEmpty()){
- //viewModel.paymentChannel = paymentMethodSelected!!
- //intentPayment(paymentMethodSelected)
- // send request
- showLoading()
- viewModel.submitPayMidtrans(this, config.token())
- } else {
- }
- }
- tabLayout.addOnTabSelectedListener(object : TabLayout.OnTabSelectedListener {
- override fun onTabSelected(tab: TabLayout.Tab) {
- val view = tab.customView
- val textNomor = view?.findViewById<View>(R.id.textNomor) as TextView
- val textJudul = view.findViewById<View>(R.id.textJudul) as TextView
- textNomor.setTextColor(ContextCompat.getColor(this@PaymentMethodActivity, R.color.colorGreyDark))
- textNomor.background = ContextCompat.getDrawable(this@PaymentMethodActivity, R.drawable.bg_payment_method_circle_active)
- textJudul.setTextColor(ContextCompat.getColor(this@PaymentMethodActivity, R.color.colorGreyDark))
- }
- override fun onTabUnselected(tab: TabLayout.Tab) {
- val view = tab.customView
- val textNomor = view?.findViewById<View>(R.id.textNomor) as TextView
- val textJudul = view.findViewById<View>(R.id.textJudul) as TextView
- textNomor.setTextColor(ContextCompat.getColor(this@PaymentMethodActivity, R.color.grey_500))
- textNomor.background = ContextCompat.getDrawable(this@PaymentMethodActivity, R.drawable.bg_payment_method_circle_unactive)
- textJudul.setTextColor(ContextCompat.getColor(this@PaymentMethodActivity, R.color.grey_500))
- }
- override fun onTabReselected(tab: TabLayout.Tab) {
- }
- })
- // set default position
- viewPager.currentItem = 0
- }
- private fun setupViewPager(viewPager: ViewPager) {
- var adapter = ViewPagerAdapter(supportFragmentManager)
- adapter.addFrag(PaymentPackageDetailFragment(), "Paket Pembayaran")
- adapter.addFrag(PaymentMethodFragment(), "Payment Method")
- viewPager.adapter = adapter
- adapter = ViewPagerAdapter(supportFragmentManager)
- adapter?.addFrag(PaymentPackageDetailFragment(), "Paket Pembayaran")
- adapter?.addFrag(PaymentMethodFragment(this@PaymentMethodActivity), "Payment Method")
- viewPager.setAdapter(adapter)
- }
- inner class ViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager) {
- private val mFragmentList = ArrayList<Fragment>()
- private val mFragmentTitleList = ArrayList<String>()
- override fun getCount(): Int {
- return mFragmentList.size
- }
- override fun getItem(position: Int): Fragment {
- if (position == 0) {
- }
- return mFragmentList.get(position)
- }
- fun addFrag(fragment: Fragment, title: String) {
- mFragmentList.add(fragment)
- mFragmentTitleList.add(title)
- }
- override fun getPageTitle(position: Int): CharSequence {
- return mFragmentTitleList.get(position)
- }
- fun getTabView(position: Int): View {
- val v = LayoutInflater.from(applicationContext).inflate(R.layout.tab_payment_state, null)
- val textNomor = v.findViewById(R.id.textNomor) as TextView
- val textJudul = v.findViewById(R.id.textJudul) as TextView
- textJudul.isAllCaps = false
- //textNomor.setText((position+1).toString())
- textNomor.text = "1"
- textJudul.text = mFragmentTitleList.get(position)
- return v
- }
- }
- override fun onBackPressed() {
- val currentPos = viewPager.currentItem
- if(currentPos == 1){
- viewPager.currentItem = 0
- } else {
- super.onBackPressed()
- }
- }
- fun intentPayment(payMethod:String?){
- when(payMethod){
- Payment.TELOMSEL_CASH ->{
- // val intent = Intent(this@PaymentMethodActivity, TelkomselCashPaymentActivity::class.java)
- // startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
- // if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
- // overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
- // }
- MidtransSDK.getInstance().startPaymentUiFlow(this@PaymentMethodActivity, PaymentMethod.TELKOMSEL_CASH, "snap_token")
- }
- Payment.INDOMARET ->{
- val intent = Intent(this@PaymentMethodActivity, IndomaretPaymentActivity::class.java)
- startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
- if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
- overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
- }
- }
- Payment.ALFAMART ->{
- val intent = Intent(this@PaymentMethodActivity, AlfamartPaymentActivity::class.java)
- startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
- if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
- overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
- }
- }
- Payment.BANK_TRANSFER ->{
- val intent = Intent(this@PaymentMethodActivity, BankTransferPaymentActivity::class.java)
- startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
- if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
- overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
- }
- }
- Payment.GOPAY ->{
- }
- Payment.CREDIT_CARD ->{
- val intent = Intent(this@PaymentMethodActivity, SavedCreditCardActivity::class.java)
- startActivityForResult(intent, Constants.RESULT_CODE_PAYMENT_TRANSFER)
- if (MidtransSDK.getInstance().uiKitCustomSetting != null && MidtransSDK.getInstance().uiKitCustomSetting.isEnabledAnimation) {
- overridePendingTransition(R.anim.slide_in, R.anim.slide_out)
- }
- }
- else ->{
- showAlertSimple(this, "Pilih payment channel terlebih dahulu atau isi referral code")
- }
- }
- }
- override fun doPaymentMethodSelected(paymentMethod: String?) {
- paymentMethodSelected = paymentMethod
- viewModel.paymentChannel = paymentMethodSelected!!
- }
- override fun doOpenReferralCodeDialog() {
- val dialog = PaymentCodeReferalDialogFragment()
- dialog.show(supportFragmentManager!!, "PaymentCodeReferalDialogFragment")
- }
- override fun onSubmitReferralCode(refCode: String) {
- this.referralCode = refCode
- viewModel.refCode = referralCode!!
- }
- private fun setObserver() {
- viewModel.isSubmitSuccess.observe(this, Observer {
- dismissLoading()
- viewModel.callAfterSubmit()
- })
- viewModel.isPaymentCallback.observe(this, Observer {
- intentTo(this, routingView.getRoute(HomeRoute.RoutePaymentResult)!!, true, false)
- })
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement