Форум

Data.BG Форуми: Android - покупки в приложението - Data.BG Форуми

Прехвърляне към съдържание

Страница 1 от 1
  • Вие не можете да започнете нова тема
  • Вие не може да отговаряте на тази тема

Android - покупки в приложението

#1
Потребителят е неактивен   mitak88 

  • Група: Потребители
  • Мнения: 51
  • Регистриран: 13-June 14
  • Репутация: 0
  • Пол:Мъж
  • Град:Плевен
Здравейте, имам следния проблем. Когато потребител иска да направи покупка, след като щракне върху бутона "Buy", се появява прозорец с цена. След покупката бутонът "Buy" се скрива и се появява бутонът Next. Проблемът е, че когато потребителят иска да разгледа съдържанието отново, след като вече е платил и щракне върху "Buy", се появява отново прозорец с цена. Преди всичко работеше нормално, сега не знам какво става, ето кода:

   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();
}   

0

#2
Потребителят е неактивен   raze79 

  • Група: Потребители
  • Мнения: 591
  • Регистриран: 16-September 19
  • Репутация: 280
  • Пол:Мъж
  • Град:София
Кода е непълен. Виж функцията
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
Публикувано изображение
0

#3
Потребителят е неактивен   mitak88 

  • Група: Потребители
  • Мнения: 51
  • Регистриран: 13-June 14
  • Репутация: 0
  • Пол:Мъж
  • Град:Плевен
Ето видео:
Моята връзка

Направил съм го по абсолютно същия начин. Когато потребител натисне бутона "buy" и извърши покупка, бутона next става видим. Но когато иска отново да разгледа съдържанието на закупения продукт и натисни бутона Buy, отново изкача прозореца с цената. Какво се случва, ако продукта, който ще се закупи е реален. Потребителя го купува, разглежда го и излиза, след това отново иска да го разгледа. Натиска "Buy" и излиза съобщение "Вече сте закупили този продукт" и бутон "next" остава скрит.
0

#4
Потребителят е неактивен   raze79 

  • Група: Потребители
  • Мнения: 591
  • Регистриран: 16-September 19
  • Репутация: 280
  • Пол:Мъж
  • Град:София
И какво като е закупил продукта? Може да му е харесал и да иска да купи още. Въпроса е, че трябва да изпразваш количката, след като се извърши плащане. Виж кода къде прави проверка за това, как се осъществява плащането и дали е успешно, сигурно има някое 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
Публикувано изображение
0

#5
Потребителят е неактивен   brigadier 

  • Група: Потребители
  • Мнения: 1111
  • Регистриран: 25-December 05
  • Репутация: 255
Прилича на калпав дизайн. За разглеждане трябва да има междинно 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 за да може да ги ползваш наново при връщане, освен ако не са унищожени при завъртане на ориентацията или с метод в кода. Нямаш гаранция, че ще видиш променено графично представяне след връщане обратно, или ще ти върне същото от кеша.
1

#6
Потребителят е неактивен   mitak88 

  • Група: Потребители
  • Мнения: 51
  • Регистриран: 13-June 14
  • Репутация: 0
  • Пол:Мъж
  • Град:Плевен
Добре, сега използвам този метод: BillingClient и се случва абсолютно същото. При натискане на бутон Buy " Вече сте закупили този продукт " бутон next остава скрит. Искам всичко да си работи както преди, щом потребител извърши покупка, бутона next, да е винаги видим за него.
0

Споделете тази тема чрез:


Страница 1 от 1
  • Вие не можете да започнете нова тема
  • Вие не може да отговаряте на тази тема

1 потребители четат тази тема
0 регистрирани потребители, 1 гости и 0 анонимни потребители


Data.BG e форум за дискусии. Data.BG не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Data.BG.

Close  Member Login