Skip to content

Commit a4ce56f

Browse files
committed
Merge branch 'develop' into main
2 parents f8e5b80 + f9da9a0 commit a4ce56f

15 files changed

Lines changed: 395 additions & 46 deletions

File tree

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<img src="https://github.com/manjav/PoolakeyUnitySdk/blob/main/images/Poolakey-unity.jpg?raw=true"/><br/>
1+
<img src="https://github.com/cafebazaar/PoolakeyUnitySdk/blob/main/images/Poolakey-unity.jpg?raw=true"/><br/>
22

3-
[........... راهنمــــــای فـــــــارسی ..........](https://github.com/manjav/PoolakeyUnitySdk/blob/main/README_FA.md)
3+
[........... راهنمــــــای فـــــــارسی ..........](https://github.com/cafebazaar/PoolakeyUnitySdk/blob/main/README_FA.md)
44

55

66
### Unity SDK for [Poolakey](https://github.com/cafebazaar/Poolakey) ( New Cafebazaar IAP ).<br/><br/>
@@ -14,4 +14,4 @@ var consumeResult = await payment.Consume(purchaseResult.data.purchaseToken);
1414
```
1515
<br/><br/>
1616
## How to use?
17-
For more information regarding the usage of Poolakey, please check out the [wiki](https://github.com/manjav/PoolakeyUnitySdk/wiki) page.
17+
For more information regarding the usage of Poolakey, please check out the [wiki](https://github.com/cafebazaar/PoolakeyUnitySdk/wiki) page.

README_FA.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<img src="https://github.com/manjav/PoolakeyUnitySdk/blob/main/images/Poolakey-unity.jpg?raw=true"/><br/>
1+
<img src="https://github.com/cafebazaar/PoolakeyUnitySdk/blob/main/images/Poolakey-unity.jpg?raw=true"/><br/>
22

3-
### [<center>........... English Readme ..........</center>](https://github.com/manjav/PoolakeyUnitySdk/blob/main/README.md)
3+
### [<center>........... English Readme ..........</center>](https://github.com/cafebazaar/PoolakeyUnitySdk/blob/main/README.md)
44
<br/>
55

66
## <div dir="rtl">پولکی (کتابخانه جدید و ساده پرداخت درون‌برنامه کافه بازار)</div><br/>
@@ -13,4 +13,4 @@ var consumeResult = await payment.Consume(purchaseResult.data.purchaseToken);
1313
```
1414
<br/><br/>
1515

16-
## [<center>پیاده سازی گام به گام کتابخانه</center>](https://github.com/manjav/PoolakeyUnitySdk/wiki/%DB%B1.-%D9%86%D8%B5%D8%A8-SDK)
16+
## [<center>پیاده سازی گام به گام کتابخانه</center>](https://github.com/cafebazaar/PoolakeyUnitySdk/wiki/وارد-کردن-پکیج-یونیتی)

android/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ android {
4545

4646

4747
dependencies {
48-
implementation "com.github.cafebazaar.Poolakey:poolakey:1.1.0-beta02"
48+
implementation "com.github.cafebazaar.Poolakey:poolakey:1.2.2"
4949
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
5050
}
5151

@@ -61,7 +61,7 @@ task createJar(type: Copy) {
6161
task updateAAR(type: Copy) {
6262
from('build/outputs/aar')
6363
into('../unity/Assets/Poolakey/Plugins/')
64-
include(project.name + '.aar')
64+
include(project.name + '-release.aar')
6565
}
6666

6767
project.tasks.whenTaskAdded { Task theTask ->

android/src/main/java/com/farsitel/bazaar/PaymentActivity.kt

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import android.content.Intent
55
import android.os.Bundle
66
import androidx.fragment.app.FragmentActivity
77
import com.farsitel.bazaar.callback.PaymentCallback
8+
import ir.cafebazaar.poolakey.exception.DynamicPriceNotSupportedException
89
import ir.cafebazaar.poolakey.request.PurchaseRequest
910
import java.security.InvalidParameterException
1011

1112
class 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
}

android/src/main/java/com/farsitel/bazaar/PoolakeyBridge.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,12 @@
55

66
import com.farsitel.bazaar.callback.ConnectionCallback;
77
import com.farsitel.bazaar.callback.ConsumeCallback;
8+
import com.farsitel.bazaar.callback.OwnedProductsCallback;
89
import com.farsitel.bazaar.callback.PaymentCallback;
910
import com.farsitel.bazaar.callback.SKUDetailsCallback;
1011

1112
import java.lang.reflect.Field;
13+
import java.util.Arrays;
1214

1315
public class PoolakeyBridge {
1416
public static final String TAG = "PoolakeyBridge";
@@ -59,15 +61,19 @@ public void disconnect() {
5961
PoolakeyKotlinBridge.INSTANCE.disconnect();
6062
}
6163

62-
public void getSkuDetails(String type, String productId, SKUDetailsCallback callback) {
63-
PoolakeyKotlinBridge.INSTANCE.getSkuDetails(type, productId, callback);
64+
public void getSkuDetails(String type, String productIds, SKUDetailsCallback callback) {
65+
PoolakeyKotlinBridge.INSTANCE.getSkuDetails(type, Arrays.asList(productIds.split(",")), callback);
6466
}
6567

66-
public void purchase(String type, String productId, String payload, PaymentCallback callback) {
68+
public void getOwnedProducts(String type, OwnedProductsCallback callback) {
69+
PoolakeyKotlinBridge.INSTANCE.getOwnedProducts(type, callback);
70+
}
71+
72+
public void purchase(String type, String productId, String payload, String dynamicPriceToken, PaymentCallback callback) {
6773
PaymentActivity.Command cmd = PaymentActivity.Command.PurchaseProduct;
6874
if (!type.equalsIgnoreCase("inApp"))
6975
cmd = PaymentActivity.Command.Subscribe;
70-
PoolakeyKotlinBridge.INSTANCE.startActivity(getCurrentActivity(), cmd, callback, productId, payload);
76+
PoolakeyKotlinBridge.INSTANCE.startActivity(getCurrentActivity(), cmd, callback, productId, payload, dynamicPriceToken);
7177
}
7278

7379
public void consume(String token, ConsumeCallback callback) {

android/src/main/java/com/farsitel/bazaar/PoolakeyKotlinBridge.kt

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ package com.farsitel.bazaar
22

33
import android.app.Activity
44
import android.content.Context
5-
import com.farsitel.bazaar.callback.ConnectionCallback
6-
import com.farsitel.bazaar.callback.ConsumeCallback
7-
import com.farsitel.bazaar.callback.PaymentCallback
8-
import com.farsitel.bazaar.callback.SKUDetailsCallback
5+
import com.farsitel.bazaar.callback.*
96
import ir.cafebazaar.poolakey.Connection
107
import ir.cafebazaar.poolakey.ConnectionState
118
import ir.cafebazaar.poolakey.Payment
@@ -40,31 +37,58 @@ object PoolakeyKotlinBridge {
4037
}
4138

4239

43-
fun getSkuDetails(type: String, productId: String, callback: SKUDetailsCallback) {
40+
fun getSkuDetails(type: String, productIds: List<String>, callback: SKUDetailsCallback) {
4441
if (connection.getState() != ConnectionState.Connected) {
4542
callback.onFailure("Connection not found.", "In order to getting ske details, connect to Poolakey!")
4643
return
4744
}
4845
when (type) {
4946
"inApp" ->
50-
payment.getInAppSkuDetails(skuIds = listOf(productId)) {
47+
payment.getInAppSkuDetails(skuIds = productIds) {
5148
getSkuDetailsSucceed(callback::onSuccess)
5249
getSkuDetailsFailed{ throwable -> callback.onFailure(throwable.message, throwable.stackTrace.joinToString { "\n" }) }
5350
}
5451
else ->
55-
payment.getSubscriptionSkuDetails(skuIds = listOf(productId)) {
52+
payment.getSubscriptionSkuDetails(skuIds = productIds) {
5653
getSkuDetailsSucceed(callback::onSuccess)
5754
getSkuDetailsFailed{ throwable -> callback.onFailure(throwable.message, throwable.stackTrace.joinToString { "\n" }) }
5855
}
5956
}
6057
}
6158

59+
fun getOwnedProducts(type:String, callback: OwnedProductsCallback) {
60+
if (connection.getState() != ConnectionState.Connected) {
61+
callback.onFailure("Connection not found.", "In order to getting purchases, connect to Poolakey!")
62+
return
63+
}
64+
when (type) {
65+
"inApp" -> payment.getPurchasedProducts {
66+
querySucceed(callback::onSuccess)
67+
queryFailed { throwable ->
68+
callback.onFailure(
69+
throwable.message,
70+
throwable.stackTrace.joinToString { "\n" })
71+
}
72+
}
73+
else ->
74+
payment.getSubscribedProducts {
75+
querySucceed(callback::onSuccess)
76+
queryFailed { throwable ->
77+
callback.onFailure(
78+
throwable.message,
79+
throwable.stackTrace.joinToString { "\n" })
80+
}
81+
}
82+
}
83+
}
84+
6285
fun startActivity(
6386
activity: Activity,
6487
command: PaymentActivity.Command,
6588
callback: PaymentCallback,
6689
productId: String,
67-
payload: String
90+
payload: String?,
91+
dynamicPriceToken: String?
6892
) {
6993
if (connection.getState() != ConnectionState.Connected) {
7094
callback.onFailure("Connection not found.", "In order to purchasing, connect to Poolakey!")
@@ -75,7 +99,8 @@ object PoolakeyKotlinBridge {
7599
command,
76100
productId,
77101
callback,
78-
payload
102+
payload,
103+
dynamicPriceToken
79104
)
80105
}
81106

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.farsitel.bazaar.callback;
2+
3+
import java.util.List;
4+
5+
import ir.cafebazaar.poolakey.entity.PurchaseInfo;
6+
import ir.cafebazaar.poolakey.entity.SkuDetails;
7+
8+
public interface OwnedProductsCallback {
9+
void onSuccess(List<PurchaseInfo> data);
10+
void onFailure(String message, String stackTrace);
11+
}

0 commit comments

Comments
 (0)