آموزش برنامه نويسي كامل درون پرداخت برنامه اي

۱۸ بازديد

با سلام.

قدم صفرم : دانلود پيش نيازها

براي دريافت آموزش برنامه نويسي كامل درون پرداخت برنامه ايجا كليك كنيد

قبل از هر چيز برنامه كافه بازار را برروي دستگاه اندرويدي كه قصد تست برنامه را داريد نصب كنيد.

براي شروع ابتدا بايد مثالي را از گيتهاب دانلود نماييد تا بتوانيد از كلاس هايي كه بازار براي پرداخت درون برنامه اي آماده كرده است استفاده نماييد.

 

 براي دريافت آموزش برنامه نويسي كامل درون پرداخت برنامه ايجا كليك كنيد

 

(در صفحه باز شده، برروي Download ZIP ) كليك كنيد تا سورس دانلود شود.

قدم اول : ساخت پروژه و آماده سازي

پروژه تان را ايجاد كنيد و مراحل زير را دقيقا به پيش بريد (توجه در صورتيكه پوشه ها رو نسازيد و مستقيما از سورس كپي كنيد ممكنه اندرويد استوديو فايل موردنظر رو نشناسه و با خطاهاي زيادي روبرو بشيد):

  • يك پوشه (directory) جديد با نام ‘aidl’ زير ‘src/main/’ ايجاد كنيد.
  • يك package جديد با نام ‘com.android.vending.billing‘ در ‘src/main/aidl‘ ايجاد كنيد.
  • فايل ‘IInAppBillingService.aidl’ را از سورس دانلود شده داخل پكيجي كه ساختيد كپي كنيد.
  • (موجود در/TrivialDrive-master/src/com/android/vending/billing)

    آموزش پرداخت درون برنامه اي بازار

    شايد بهتر باشه يكبار برنامتون رو Run كنيد.

    حالا دسترسي زير رو به برنامتون اضافه كنيد (داخل فايل AndroidManifest.xml قبل از باز شدن تگ )

    همچنين پكيج /com/example/android/trivialdrivesample/util را هم از سورسٍ دانلود كرده، داخل برنامه تون كپي كنيد و در صورت نياز تغييرات لازم را براي همنام سازي با برنامتون اعمال كنيد. ( در صورتيكه اروري دادن مبني بر اينكه R يا پكيج شناخته نشده)

    آموزش پرداخت درون برنامه اي بازار

    قدم دوم : افزودن محصولات در كافه بازار

    از برنامه تون خروجي گرفته و به پنلتون در كافه بازار بريد، فايل apk برنامه خود را آپلود كرده ولي درخواست انتشار آن را ندهيد. در پنل پرداخت بازار در بخش «محصولات/خدمات»، محصولي جديد با شناسه‌ كالايي مشخص اضافه كنيد ( اين شناسه به زبان انگليسي و يكتا باشه. در واقع وسيله شناسايي كالاتون هست) چون هدف ما در حال حاظر تست برنامه مي باشد پس قيمت رو ۰ مي زنيم تا از “درگاه الكي” كه بازار براي برنامه نويسان قرار داده استفاده كنيم.

    در اينجا هدف ما ساخت يك برنامه با امكان خريد سكه هست پس “نوع محصول” رو “فروشي” قرار مي ديم. فيلدهاي ديگررا كامل كرده و در “برنامه فروشنده” نام برناممون رو انتخاب مي كنيم و برروي ارسال كليك مي كنيم.

    آموزش پرداخت درون برنامه اي بازار

    قدم سوم : پياده سازي خريد درون برنامه اي بازار داخل برنامه

    در اكتيويتي كه قصد داريد محصولتون رو به فروش برسونيد قبل از متد 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;

    فكر مي كنم توضيحات كد بالا به اندازه كافي هست با اين حال:

    يك TAG تعريف كرديم كه در گزارش گيري هامون استفاده كنيم.

    بعد در SKU_PREMIUM شناسه محصولمون كه در بازار تعريف كرده بوديم رو تعريف كرديم تا موقع نياز ازش استفاده كنيم.

    mIsPremium واسه اينه كه مشخص كنيم اين محصول ما فروشي هست يا اشتراك ( اگه اشتراكي هست مقدارش true وگرنه false) كه چون ما محصولمون سكه هست و مي خوايم بفروشيم مقدارش رو false قرار مي ديم.

    RC_REQUEST هم يك مقدار براي مشخص شدن درخواستهامون هست كه به دلخواه مقداردهي مي كنيم.

    متغير هاي بعدي هم كه براي پرداخت نياز هستند و تعريفشون مي كنيم.

    بعد از متد onCreate نيز بايد كدهاي لازم رو قرار بديد:

    String base64EncodedPublicKey = ""; mHelper = new IabHelper(this, base64EncodedPublicKey); mGotInventoryListener = new IabHelper.QueryInventoryFinishedListener() { public void onQueryInventoryFinished(IabResult result, Inventory 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 result, Purchase 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); } });

    در حال حاضر در كد بالا base64EncodedPublicKey خالي هست كه بايد مقدارش رو از داخل http://pardakht.cafebazaar.ir/panel/ زير شاخه “برنامه هاي فروشنده” با كليك برروي “كليد RSA” برنامه موردنظرتون به دست بياريد. و داخل base64EncodedPublicKey قرار بديد.

    متدهاي زير رو نيز بايد داخل اكتيويتيتون اضافه كنيد:

    @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data); // Pass on the activity result to the helper for handling if (!mHelper.handleActivityResult(requestCode, resultCode, data)) { super.onActivityResult(requestCode, resultCode, data); } else { Log.d(TAG, "onActivityResult handled by IABUtil."); } } @Override public void onDestroy() { //از سرويس در زمان اتمام عمر activity قطع شويد super.onDestroy(); if (mHelper != null) mHelper.dispose(); mHelper = null; } private void MasrafSeke(Purchase kala){ // براي اينكه كاربر فقط يكبار بتواند از كالاي فروشي استفاده كند // بايد بعد از خريد آن كالا را مصرف كنيم // در غير اينصورت كاربر با يكبار خريد محصول مي تواند چندبار از آن استفاده كند mHelper.consumeAsync(kala, new IabHelper.OnConsumeFinishedListener() { @Override public void onConsumeFinished(Purchase purchase, IabResult result) { if (result.isSuccess()) Toast.makeText(MainActivity.this,"مصرف شد",Toast.LENGTH_SHORT).show(); Log.d(TAG, "NATIJE masraf: "+result.getMessage()+result.getResponse()); } }); }

    ! متد MasrafSeke در mPurchaseFinishedListener و بعد از اطمينان از خريد موفق if (purchase.getSku().equals(SKU_PREMIUM)) صدا زده مي شود.

    تبريك حالا شما توانستيد، پرداخت درون برنامه اي بازار را پياده سازي كنيد.

    قدم نهايي : فروش يك محصول در برنامه

    يك متد onClick ايجاد مي كنيم تا هنگام صدا زده شدن پرداخت آغاز شود:

    public void onClick(View view){ mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST, mPurchaseFinishedListener, "payload-string"); }

    داخل لايه xml (گرافيكي) اكتيويتيمون يك دكمه قرار مي ديم و متد بالا را صدا مي زنيم:

    نمايشگر ويديو

     

     

      براي دريافت آموزش برنامه نويسي كامل درون پرداخت برنامه ايجا كليك كنيد
    تا كنون نظري ثبت نشده است
    امکان ارسال نظر برای مطلب فوق وجود ندارد