BillingProcessor bp; Button buy, next; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_class); bp = new BillingProcessor(this,"",this); buy = (Button)findViewById(R.id.buy); next = (Button)findViewById(R.id.next); next.setVisibility(View.INVISIBLE); buy.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { bp.purchase(MyClass.this,"android.test.purchased"); } }); next.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent = new Intent(view.getContext(),NewClass.class); startActivityForResult(intent,0); } }); } @Override public void onProductPurchased(@NonNull String productId,@Nullable TransactionDetails details) { buy.setVisibility(View.INVISIBLE); next.setVisibility(View.VISIBLE); } @Override public void onPurchaseHistoryRestored() { } @Override public void onBillingError(int errorCode,@Nullable Throwable error) { } @Override public void onBillingInitialized() { } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (!bp.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); } } @Override public void onDestroy() { if (bp != null) { bp.release(); } super.onDestroy(); }
Страница 1 от 1
Android - покупки в приложението
#1
Публикувано: 20.12.20 - 22:47

Здравейте, имам следния проблем. Когато потребител иска да направи покупка, след като щракне върху бутона "Buy", се появява прозорец с цена. След покупката бутонът "Buy" се скрива и се появява бутонът Next. Проблемът е, че когато потребителят иска да разгледа съдържанието отново, след като вече е платил и щракне върху "Buy", се появява отново прозорец с цена. Преди всичко работеше нормално, сега не знам какво става, ето кода:
#2
Публикувано: 21.12.20 - 00:58

Кода е непълен. Виж функцията
какво прави, след натискане на "buy" бутона се изпълнява:
Така и не разбрах какво точно искаш да се случи? Да се изпразни количката ли какво? Кога е това преди, когато всичко е работело, какво е правено след това?
BillingProcessor
какво прави, след натискане на "buy" бутона се изпълнява:
bp.purchase(MyClass.this,"android.test.purchased" );
Така и не разбрах какво точно искаш да се случи? Да се изпразни количката ли какво? Кога е това преди, когато всичко е работело, какво е правено след това?
Case Thermaltake Versa N21, MB Asrock Fatal1ty B450 Gaming K4 , CPU AMD Ryzen 5 1600+ Pinnacle Ridge 12nm @3.975 GHz 1.34 V, Cooler Arctic Freezer 34 eSports, RAM 2x8 GB Crucial Ballistix Sport LT Red DDR4-3000(XMP) @3400 MHz (18-18-18-34 CR1) 1.365 V, PSU Thermaltake Smart DPS G750W, SSD Samsung 850 EVO 500 GB, WD Green 240 GB, HDD Seagate ST3000DM008 3 TB, DVD ASUS DRW-2014L1T, GPU NVIDIA Asus Strix GTX 970, TV/MONITOR Panasonic TX-L42ET60E IPS + LG L204WT
Laptop: Asus G551JM - CPU I7 4710HQ, RAM 8 + 4 GB DDR3 1600, GPU NVIDIA GTX 860M with unlocked BIOS, SSD Micron 1100 256 GB, HDD HGST 1TB WD 7200 RPM
Laptop: Asus G551JM - CPU I7 4710HQ, RAM 8 + 4 GB DDR3 1600, GPU NVIDIA GTX 860M with unlocked BIOS, SSD Micron 1100 256 GB, HDD HGST 1TB WD 7200 RPM

#3
Публикувано: 21.12.20 - 23:09

Ето видео:
Моята връзка
Направил съм го по абсолютно същия начин. Когато потребител натисне бутона "buy" и извърши покупка, бутона next става видим. Но когато иска отново да разгледа съдържанието на закупения продукт и натисни бутона Buy, отново изкача прозореца с цената. Какво се случва, ако продукта, който ще се закупи е реален. Потребителя го купува, разглежда го и излиза, след това отново иска да го разгледа. Натиска "Buy" и излиза съобщение "Вече сте закупили този продукт" и бутон "next" остава скрит.
Моята връзка
Направил съм го по абсолютно същия начин. Когато потребител натисне бутона "buy" и извърши покупка, бутона next става видим. Но когато иска отново да разгледа съдържанието на закупения продукт и натисни бутона Buy, отново изкача прозореца с цената. Какво се случва, ако продукта, който ще се закупи е реален. Потребителя го купува, разглежда го и излиза, след това отново иска да го разгледа. Натиска "Buy" и излиза съобщение "Вече сте закупили този продукт" и бутон "next" остава скрит.
#4
Публикувано: 22.12.20 - 01:55

И какво като е закупил продукта? Може да му е харесал и да иска да купи още. Въпроса е, че трябва да изпразваш количката, след като се извърши плащане. Виж кода къде прави проверка за това, как се осъществява плащането и дали е успешно, сигурно има някое API за това.
Case Thermaltake Versa N21, MB Asrock Fatal1ty B450 Gaming K4 , CPU AMD Ryzen 5 1600+ Pinnacle Ridge 12nm @3.975 GHz 1.34 V, Cooler Arctic Freezer 34 eSports, RAM 2x8 GB Crucial Ballistix Sport LT Red DDR4-3000(XMP) @3400 MHz (18-18-18-34 CR1) 1.365 V, PSU Thermaltake Smart DPS G750W, SSD Samsung 850 EVO 500 GB, WD Green 240 GB, HDD Seagate ST3000DM008 3 TB, DVD ASUS DRW-2014L1T, GPU NVIDIA Asus Strix GTX 970, TV/MONITOR Panasonic TX-L42ET60E IPS + LG L204WT
Laptop: Asus G551JM - CPU I7 4710HQ, RAM 8 + 4 GB DDR3 1600, GPU NVIDIA GTX 860M with unlocked BIOS, SSD Micron 1100 256 GB, HDD HGST 1TB WD 7200 RPM
Laptop: Asus G551JM - CPU I7 4710HQ, RAM 8 + 4 GB DDR3 1600, GPU NVIDIA GTX 860M with unlocked BIOS, SSD Micron 1100 256 GB, HDD HGST 1TB WD 7200 RPM

#5
Публикувано: 22.12.20 - 19:30

Прилича на калпав дизайн. За разглеждане трябва да има междинно activity с детайли за продукта с бутон за добавяне в количката или връщане обратно и отделно най - накрая за влизане в количката, която след успешно закупуване трябва да се изпразва. Бутон next е най - добре да си седи видим винаги, освен ако не са ги набутали да се припокриват.
За пример от един стар проект метод, който се извиква от XML бутон. Може да вкараш подобен във onProductPurchased
public void emptyCart(View view) {
if (objects != null) {
objects.clear();
Const.setCartProductsArray((ArrayList< CartItem>) objects);
}
this.finish(); //унищожава activity и налага зареждане наново при ново връщане
}
Objects са списък с избраните продукти, който се съхранява в отделен utility файл, който зарежда количката, когато се върнеш в нея, ако си ходил другаде
private List<CartItem> objects;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );
setContentView(R.layout.activity_cart );
FoodUtils.updateCartActivityRef(this); //референция към activity се пази в отделен файл. Няма да ти трябва. Служи за комуникация между повече activities
objects = Const.getCartProductsArray();
cartItemArrayAdapter = new CartArrayAdapter(this);
ListView cartList = findViewById(R.id.cartList);
cartList.setAdapter(cartItemArrayAdapter);
Activities след първо влизане се съхраняват в call stack за да може да ги ползваш наново при връщане, освен ако не са унищожени при завъртане на ориентацията или с метод в кода. Нямаш гаранция, че ще видиш променено графично представяне след връщане обратно, или ще ти върне същото от кеша.
За пример от един стар проект метод, който се извиква от XML бутон. Може да вкараш подобен във onProductPurchased
public void emptyCart(View view) {
if (objects != null) {
objects.clear();
Const.setCartProductsArray((ArrayList< CartItem>) objects);
}
this.finish(); //унищожава activity и налага зареждане наново при ново връщане
}
Objects са списък с избраните продукти, който се съхранява в отделен utility файл, който зарежда количката, когато се върнеш в нея, ако си ходил другаде
private List<CartItem> objects;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT );
setContentView(R.layout.activity_cart );
FoodUtils.updateCartActivityRef(this); //референция към activity се пази в отделен файл. Няма да ти трябва. Служи за комуникация между повече activities
objects = Const.getCartProductsArray();
cartItemArrayAdapter = new CartArrayAdapter(this);
ListView cartList = findViewById(R.id.cartList);
cartList.setAdapter(cartItemArrayAdapter);
Activities след първо влизане се съхраняват в call stack за да може да ги ползваш наново при връщане, освен ако не са унищожени при завъртане на ориентацията или с метод в кода. Нямаш гаранция, че ще видиш променено графично представяне след връщане обратно, или ще ти върне същото от кеша.
#6
Публикувано: 24.12.20 - 01:40

Добре, сега използвам този метод: BillingClient и се случва абсолютно същото. При натискане на бутон Buy " Вече сте закупили този продукт " бутон next остава скрит. Искам всичко да си работи както преди, щом потребител извърши покупка, бутона next, да е винаги видим за него.
Споделете тази тема чрез:
Страница 1 от 1
1 потребители четат тази тема
0 регистрирани потребители, 1 гости и 0 анонимни потребители
Data.BG e форум за дискусии. Data.BG не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.
Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Data.BG.
Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Data.BG.