@@ -5,12 +5,14 @@ import android.content.Intent
55import android.os.Bundle
66import androidx.fragment.app.FragmentActivity
77import com.farsitel.bazaar.callback.PaymentCallback
8+ import ir.cafebazaar.poolakey.exception.DynamicPriceNotSupportedException
89import ir.cafebazaar.poolakey.request.PurchaseRequest
910import java.security.InvalidParameterException
1011
1112class PaymentActivity : FragmentActivity () {
1213 private var productId: String? = null
1314 private var payload: String? = null
15+ private var dynamicPriceToken: String? = null
1416 private var command: Command ? = null
1517
1618 override fun onCreate (savedInstanceState : Bundle ? ) {
@@ -23,18 +25,30 @@ class PaymentActivity : FragmentActivity() {
2325 }
2426 }
2527
28+ private fun initArgs () {
29+ productId = intent.extras?.getString(KEY_PRODUCT_ID )
30+ payload = intent.extras?.getString(KEY_PAYLOAD )
31+ dynamicPriceToken = intent.extras?.getString(KEY_DYNAMIC_PRICE_TOKEN )
32+ command = Command .valueOf(requireNotNull(intent.extras?.getString(KEY_COMMAND )))
33+ }
34+
2635 private fun purchaseProduct () {
2736 PoolakeyKotlinBridge .payment.purchaseProduct(
2837 this @PaymentActivity,
29- PurchaseRequest (productId!! , REQUEST_CODE , payload)
38+ PurchaseRequest (productId!! , REQUEST_CODE , payload, dynamicPriceToken )
3039 ) {
3140 purchaseFlowBegan {
3241 // Bazaar's billing screen has opened successfully
3342 paymentCallback?.onStart()
3443 }
3544 failedToBeginFlow { throwable ->
3645 // Failed to open Bazaar's billing screen
37- paymentCallback?.onFailure(throwable.message, throwable.stackTrace.joinToString(" \n " ))
46+ if (throwable is DynamicPriceNotSupportedException ) {
47+ dynamicPriceToken = null
48+ purchaseProduct()
49+ } else {
50+ paymentCallback?.onFailure(throwable.message, throwable.stackTrace.joinToString(" \n " ))
51+ }
3852 finish()
3953 }
4054 }
@@ -43,26 +57,28 @@ class PaymentActivity : FragmentActivity() {
4357 private fun subscribeProduct () {
4458 PoolakeyKotlinBridge .payment.subscribeProduct(
4559 this @PaymentActivity,
46- PurchaseRequest (productId!! , REQUEST_CODE , payload)
60+ PurchaseRequest (productId!! , REQUEST_CODE , payload, dynamicPriceToken )
4761 ) {
4862 purchaseFlowBegan {
4963 // Bazaar's billing screen has opened successfully
5064 paymentCallback?.onStart()
5165 }
5266 failedToBeginFlow { throwable ->
5367 // Failed to open Bazaar's billing screen
54- paymentCallback?.onFailure(throwable.message, throwable.stackTrace.joinToString(" \n " ))
55- finish()
68+ if (throwable is DynamicPriceNotSupportedException ) {
69+ dynamicPriceToken = null
70+ subscribeProduct()
71+ } else {
72+ paymentCallback?.onFailure(
73+ throwable.message,
74+ throwable.stackTrace.joinToString(" \n " )
75+ )
76+ finish()
77+ }
5678 }
5779 }
5880 }
5981
60- private fun initArgs () {
61- productId = intent.extras?.getString(KEY_PRODUCT_ID )
62- payload = intent.extras?.getString(KEY_PAYLOAD )
63- command = Command .valueOf(requireNotNull(intent.extras?.getString(KEY_COMMAND )))
64- }
65-
6682 override fun onActivityResult (requestCode : Int , resultCode : Int , data : Intent ? ) {
6783 super .onActivityResult(requestCode, resultCode, data)
6884 PoolakeyKotlinBridge .payment.onActivityResult(requestCode, resultCode, data) {
@@ -103,6 +119,7 @@ class PaymentActivity : FragmentActivity() {
103119 private const val REQUEST_CODE : Int = 1000
104120 private const val KEY_PRODUCT_ID = " productId"
105121 private const val KEY_PAYLOAD = " payload"
122+ private const val KEY_DYNAMIC_PRICE_TOKEN = " dynamicPriceToken"
106123 private const val KEY_COMMAND = " command"
107124 var paymentCallback: PaymentCallback ? = null
108125
@@ -112,12 +129,14 @@ class PaymentActivity : FragmentActivity() {
112129 command : Command ,
113130 productId : String ,
114131 callback : PaymentCallback ,
115- payload : String?
132+ payload : String? ,
133+ dynamicPriceToken : String?
116134 ) {
117135 paymentCallback = callback
118136 val intent = Intent (activity, PaymentActivity ::class .java)
119137 intent.putExtra(KEY_PRODUCT_ID , productId)
120138 intent.putExtra(KEY_PAYLOAD , payload)
139+ intent.putExtra(KEY_DYNAMIC_PRICE_TOKEN , dynamicPriceToken)
121140 intent.putExtra(KEY_COMMAND , command.name)
122141 activity.startActivity(intent)
123142 }
0 commit comments