انجمن سایت کلیدستان


رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سوال در مورد پرداخت درون برنامه

سوال در مورد پرداخت درون برنامه

#1
سلام دوستان
من ده تا دگمه دارم در برنامه میخوام برای هر دگمه یه قییمت خاصی تعیین کنم شدنیه؟برا کافه بازار؟
اگر بله چطوری؟
و اینکه مثلا طرف خرید کرد تو رویداد دگمه باید چی بنویسم که چی رو چک کنم؟که کاربر خرید کرده یا نه
اگر خرید کرده نمایش داده بشه اگر نه نمایش داده نشه
و اینکه آیا به کس دیگه بلوتوث بشه اونم باید خرید کنه دیگه کار نمیکنه که؟
مثلا من خرید کنم بلوتوث کنم اون طرفم باید خرید کنه
درسته؟
پاسخ
 سپاس شده توسط zanyyy

سوال در مورد پرداخت درون برنامه

#2
(۱۳۹۴/۱۱/۲۸, ۱۲:۳۶ ب.ظ)ahmad97 نوشته: سلام دوستان
من ده تا دگمه دارم در برنامه میخوام برای هر دگمه یه قییمت خاصی تعیین کنم شدنیه؟برا کافه بازار؟
اگر بله چطوری؟
و اینکه مثلا طرف خرید کرد تو رویداد دگمه باید چی بنویسم که چی رو چک کنم؟که کاربر خرید کرده یا نه
اگر خرید کرده نمایش داده بشه اگر نه نمایش داده نشه
و اینکه آیا به کس دیگه بلوتوث بشه اونم باید خرید کنه دیگه کار نمیکنه که؟
مثلا من خرید کنم بلوتوث کنم اون طرفم باید خرید کنه
درسته؟

برنامه هارو وقتی بلوتوث میکنی دوباره نصب میشه رو سیستم و کدهاتون با این فرض کار میکنن که خرید صورت نگرفته و دوباره درخواست خرید ارسال میشه و گوشی جدید هم باید خرید کنه.
و برای اینکه بعد از پرداخت دستورات خاص رو اجرا کنی در قسمت کدهای زیر. کد مورد نظر خودتو بنویس

کد پی‌اچ‌پی:
else if (purchase.getSku().equals(SKU_PREMIUM)) {
 
                   // give user access to premium content and update the UI
 
                   //دستورات مورد نظر بعد از پرداخت
 
                   MasrafSeke(purchase);
                    { 


کدهای کاملشو یه جستجو کنی میتونی پیدا کنی
Iran  ErfanMahigir Iran
پاسخ
 سپاس شده توسط zanyyy ، programmerirani

سوال در مورد پرداخت درون برنامه

#3
یه خدا بیامرزی نبود این پرداخت درون برنامه ای بازارو آموزش بده بوخودا کمرم شکست کاریش نکردم!!!
پاسخ
 سپاس شده توسط zanyyy

سوال در مورد پرداخت درون برنامه

#4
(۱۳۹۴/۱۱/۲۹, ۰۴:۰۷ ق.ظ)sinabelle نوشته: یه خدا بیامرزی نبود این پرداخت درون برنامه ای بازارو آموزش بده بوخودا کمرم شکست کاریش نکردم!!!

خدایی راست میگی کمر منم شکسته نتونستم کاری بکنم
پاسخ
 سپاس شده توسط sinabelle

سوال در مورد پرداخت درون برنامه

#5
(۱۳۹۴/۱۱/۲۹, ۱۰:۳۵ ق.ظ)ahmad97 نوشته:
(۱۳۹۴/۱۱/۲۹, ۰۴:۰۷ ق.ظ)sinabelle نوشته: یه خدا بیامرزی نبود این پرداخت درون برنامه ای بازارو آموزش بده بوخودا کمرم شکست کاریش نکردم!!!

خدایی راست میگی کمر منم شکسته نتونستم کاری بکنم

توی پروژه کارهای زیر رو انجام بده

  1. یک پوشه (directory) جدید با نام ‘aidl’ زیر ‘src/main/’ درست کن
  2. یک package جدید با نام ‘com.android.vending.billing‘ در ‘src/main/aidl‘ بساز
  3. فایل ‘IInAppBillingService.aidl’ را از  اینجا  دانلود کن و داخل پکیجی که ساختی کپی کن

بعدش به برنامه ات دسترسی زیر رو بده
کد پی‌اچ‌پی:
<uses-permission android:name="com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR"/> 


بعد پکیج رو از اینجا دانلود کنید کنید و توی پروژه کپی کن



حالا توی اکتیویتی که میخوای برنامه رو بفروش بزاری با button رو بزنه قبل از تابع onCreate کدهای زیر رو بنویس
کد پی‌اچ‌پی:
// Debug tag, for logging
 
   // Debug tag, for logging
 
   static final String TAG "Esfandune.ir";

 
   // SKUs for our products: the premium upgrade (non-consumable)
 
   static final String SKU_PREMIUM "EsfanduneCoin";

 
   // Does the user have the premium upgrade?
 
   boolean mIsPremium false;

 
   // (arbitrary) request code for the purchase flow
 
   static final int RC_REQUEST 1372;

 
   // The helper object
 
   IabHelper mHelper;
 
   IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener;
 
   IabHelper.QueryInventoryFinishedListener mGotInventoryListener
بعد از متد onCreate باید کدهای زیر رو بنویسیم
کد پی‌اچ‌پی:
 String base64EncodedPublicKey "";

 
       mHelper = new IabHelper(thisbase64EncodedPublicKey);


 
        mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
 
           public void onQueryInventoryFinished(IabResult resultInventory inventory) {
 
               Log.d(TAG"Query inventory finished.");
 
               if (result.isFailure()) {
 
                   Log.d(TAG"Failed to query inventory: " result);
 
                   return;
 
               }
 
               else {
 
                   Log.d(TAG"Query inventory was successful.");
 
                   // does the user have the premium upgrade?
 
                   mIsPremium inventory.hasPurchase(SKU_PREMIUM);
 
                   if (mIsPremium){
 
                       MasrafSeke(inventory.getPurchase(SKU_PREMIUM));
 
                   }
 
                   // update UI accordingly

 
                   Log.d(TAG"User is " + (mIsPremium "PREMIUM" "NOT PREMIUM"));
 
               }

 
               Log.d(TAG"Initial inventory query finished; enabling main UI.");
 
           }
 
       };

 
       mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
 
           public void onIabPurchaseFinished(IabResult resultPurchase purchase) {
 
               if (result.isFailure()) {
 
                   Log.d(TAG"Error purchasing: " result);
 
                   return;
 
               }
 
               else if (purchase.getSku().equals(SKU_PREMIUM)) {
 
                   // give user access to premium content and update the UI
 
                   Toast.makeText(MainActivity.this,"خرید موفق",Toast.LENGTH_SHORT).show();
 
                   MasrafSeke(purchase);

 
               }
 
           }
        }; 

کد پی‌اچ‌پی:
Log.d(TAG"Starting setup.");
 
       mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
 
           public void onIabSetupFinished(IabResult result) {
 
               Log.d(TAG"Setup finished.");

 
               if (!result.isSuccess()) {
 
                   // Oh noes, there was a problem.
 
                   Log.d(TAG"Problem setting up In-app Billing: " result);
 
               }
 
               // Hooray, IAB is fully set up!
 
               mHelper.queryInventoryAsync(mGotInventoryListener);
 
           }
 
       }); 
متدهای زیر رو هم داخل اکتیویتی اضافه میکنیم
کد پی‌اچ‌پی:
@Override
    protected void onActivityResult
(int requestCodeint resultCodeIntent data) {
 
       super.onActivityResult(requestCoderesultCodedata);

 
       Log.d(TAG"onActivityResult(" requestCode "," resultCode "," data);

 
       // Pass on the activity result to the helper for handling
 
       if (!mHelper.handleActivityResult(requestCoderesultCodedata)) {
 
           super.onActivityResult(requestCoderesultCodedata);
 
       } else {
 
           Log.d(TAG"onActivityResult handled by IABUtil.");
 
       }
 
   }


 
   @Override
    public void onDestroy
() {
 
       //از سرویس در زمان اتمام عمر activity قطع شوید
 
       super.onDestroy();
 
       if (mHelper != nullmHelper.dispose();
 
       mHelper null;
 
   }

 
  
    private void MasrafSeke
(Purchase kala){
 
       // برای اینکه کاربر فقط یکبار بتواند از کالای فروشی استفاده کند
 
       // باید بعد از خرید آن کالا را مصرف کنیم
 
       // در غیر اینصورت کاربر با یکبار خرید محصول می تواند چندبار از آن استفاده کند
 
       mHelper.consumeAsync(kala, new IabHelper.OnConsumeFinishedListener() {
 
           @Override
            public void onConsumeFinished
(Purchase purchaseIabResult result) {
 
               if (result.isSuccess()) Toast.makeText(MainActivity.this,"مصرف شد",Toast.LENGTH_SHORT).show();
 
               Log.d(TAG"NATIJE masraf: "+result.getMessage()+result.getResponse());

 
           }
 
       });
 
   


حالا یک button قرار میدیم و خاصیت کلیکشو فعال میکنیم تا با زدن روی اون عملیات پرداخت صورت بگیرد

کد پی‌اچ‌پی:
 public void onClick(View view){
 
       mHelper.launchPurchaseFlow(thisSKU_PREMIUMRC_REQUESTmPurchaseFinishedListener"payload-string");
 
   


در مرحله آخر باید یک خروجی از برنامه تون بگیرید و آن رو توی بازار قرار بدید. انتشار برنامه نزنید. در پنل پرداخت بازار بخش محصولات/خدمات   محصول جدید با شناسه کالایی مشخص ایجاد کنید چون برنامه برای تست قیمت رو صفر بذارید و نوع برنامه رو فروشی بذارید. بقیه فیلدهاروهم پرکنید و در قسمت برنامه فروشی اسم برنامه تون رو وارد کنید.



موفق باشید



منبع
Iran  ErfanMahigir Iran
پاسخ
 سپاس شده توسط sinabelle ، ahmad97 ، zanyyy ، programmerirani

سوال در مورد پرداخت درون برنامه

#6
(۱۳۹۴/۱۱/۳۰, ۰۲:۱۳ ق.ظ)e.mahi نوشته:
(۱۳۹۴/۱۱/۲۹, ۱۰:۳۵ ق.ظ)ahmad97 نوشته:
(۱۳۹۴/۱۱/۲۹, ۰۴:۰۷ ق.ظ)sinabelle نوشته: یه خدا بیامرزی نبود این پرداخت درون برنامه ای بازارو آموزش بده بوخودا کمرم شکست کاریش نکردم!!!

خدایی راست میگی کمر منم شکسته نتونستم کاری بکنم

توی پروژه کارهای زیر رو انجام بده

  1. یک پوشه (directory) جدید با نام ‘aidl’ زیر ‘src/main/’ درست کن
  2. یک package جدید با نام ‘com.android.vending.billing‘ در ‘src/main/aidl‘ بساز
  3. فایل ‘IInAppBillingService.aidl’ را از  اینجا  دانلود کن و داخل پکیجی که ساختی کپی کن

بعدش به برنامه ات دسترسی زیر رو بده
کد پی‌اچ‌پی:
<uses-permission android:name="com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR"/> 


بعد پکیج رو از اینجا دانلود کنید کنید و توی پروژه کپی کن



حالا توی اکتیویتی که میخوای برنامه رو بفروش بزاری با button رو بزنه قبل از تابع onCreate کدهای زیر رو بنویس
کد پی‌اچ‌پی:
// Debug tag, for logging
 
   // Debug tag, for logging
 
   static final String TAG "Esfandune.ir";

 
   // SKUs for our products: the premium upgrade (non-consumable)
 
   static final String SKU_PREMIUM "EsfanduneCoin";

 
   // Does the user have the premium upgrade?
 
   boolean mIsPremium false;

 
   // (arbitrary) request code for the purchase flow
 
   static final int RC_REQUEST 1372;

 
   // The helper object
 
   IabHelper mHelper;
 
   IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener;
 
   IabHelper.QueryInventoryFinishedListener mGotInventoryListener
بعد از متد onCreate باید کدهای زیر رو بنویسیم
کد پی‌اچ‌پی:
 String base64EncodedPublicKey "";

 
       mHelper = new IabHelper(thisbase64EncodedPublicKey);


 
        mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() {
 
           public void onQueryInventoryFinished(IabResult resultInventory inventory) {
 
               Log.d(TAG"Query inventory finished.");
 
               if (result.isFailure()) {
 
                   Log.d(TAG"Failed to query inventory: " result);
 
                   return;
 
               }
 
               else {
 
                   Log.d(TAG"Query inventory was successful.");
 
                   // does the user have the premium upgrade?
 
                   mIsPremium inventory.hasPurchase(SKU_PREMIUM);
 
                   if (mIsPremium){
 
                       MasrafSeke(inventory.getPurchase(SKU_PREMIUM));
 
                   }
 
                   // update UI accordingly

 
                   Log.d(TAG"User is " + (mIsPremium "PREMIUM" "NOT PREMIUM"));
 
               }

 
               Log.d(TAG"Initial inventory query finished; enabling main UI.");
 
           }
 
       };

 
       mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
 
           public void onIabPurchaseFinished(IabResult resultPurchase purchase) {
 
               if (result.isFailure()) {
 
                   Log.d(TAG"Error purchasing: " result);
 
                   return;
 
               }
 
               else if (purchase.getSku().equals(SKU_PREMIUM)) {
 
                   // give user access to premium content and update the UI
 
                   Toast.makeText(MainActivity.this,"خرید موفق",Toast.LENGTH_SHORT).show();
 
                   MasrafSeke(purchase);

 
               }
 
           }
        }; 

کد پی‌اچ‌پی:
Log.d(TAG"Starting setup.");
 
       mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
 
           public void onIabSetupFinished(IabResult result) {
 
               Log.d(TAG"Setup finished.");

 
               if (!result.isSuccess()) {
 
                   // Oh noes, there was a problem.
 
                   Log.d(TAG"Problem setting up In-app Billing: " result);
 
               }
 
               // Hooray, IAB is fully set up!
 
               mHelper.queryInventoryAsync(mGotInventoryListener);
 
           }
 
       }); 
متدهای زیر رو هم داخل اکتیویتی اضافه میکنیم
کد پی‌اچ‌پی:
@Override
    protected void onActivityResult
(int requestCodeint resultCodeIntent data) {
 
       super.onActivityResult(requestCoderesultCodedata);

 
       Log.d(TAG"onActivityResult(" requestCode "," resultCode "," data);

 
       // Pass on the activity result to the helper for handling
 
       if (!mHelper.handleActivityResult(requestCoderesultCodedata)) {
 
           super.onActivityResult(requestCoderesultCodedata);
 
       } else {
 
           Log.d(TAG"onActivityResult handled by IABUtil.");
 
       }
 
   }


 
   @Override
    public void onDestroy
() {
 
       //از سرویس در زمان اتمام عمر activity قطع شوید
 
       super.onDestroy();
 
       if (mHelper != nullmHelper.dispose();
 
       mHelper null;
 
   }

 
  
    private void MasrafSeke
(Purchase kala){
 
       // برای اینکه کاربر فقط یکبار بتواند از کالای فروشی استفاده کند
 
       // باید بعد از خرید آن کالا را مصرف کنیم
 
       // در غیر اینصورت کاربر با یکبار خرید محصول می تواند چندبار از آن استفاده کند
 
       mHelper.consumeAsync(kala, new IabHelper.OnConsumeFinishedListener() {
 
           @Override
            public void onConsumeFinished
(Purchase purchaseIabResult result) {
 
               if (result.isSuccess()) Toast.makeText(MainActivity.this,"مصرف شد",Toast.LENGTH_SHORT).show();
 
               Log.d(TAG"NATIJE masraf: "+result.getMessage()+result.getResponse());

 
           }
 
       });
 
   


حالا یک button قرار میدیم و خاصیت کلیکشو فعال میکنیم تا با زدن روی اون عملیات پرداخت صورت بگیرد

کد پی‌اچ‌پی:
 public void onClick(View view){
 
       mHelper.launchPurchaseFlow(thisSKU_PREMIUMRC_REQUESTmPurchaseFinishedListener"payload-string");
 
   


در مرحله آخر باید یک خروجی از برنامه تون بگیرید و آن رو توی بازار قرار بدید. انتشار برنامه نزنید. در پنل پرداخت بازار بخش محصولات/خدمات   محصول جدید با شناسه کالایی مشخص ایجاد کنید چون برنامه برای تست قیمت رو صفر بذارید و نوع برنامه رو فروشی بذارید. بقیه فیلدهاروهم پرکنید و در قسمت برنامه فروشی اسم برنامه تون رو وارد کنید.



موفق باشید



منبع



داداش دمتگرم تنت سلامت روحت شاد...
کار کرد واس من
هرکی گیج شد بره تو منبع مطالعش کنه...
پاسخ
 سپاس شده توسط zanyyy ، شماره مجازی امارات ، تلگرام ضد فیلتر 2023


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان