-
نقل قول: پرداخت درون برنامه ای
خوب میتونید تغییر قیمت بدید و قیمت برنامه رو صد تومن بذارید و تست کنید! :)
تو تغییر قیمت محصولات درون برنامه ای هم سریع تغییر قیمت اعمال میشه و نیازی به تایید بازار برای تغییر قیمت نیست. البته چون تقریبا دو سوم پول دوباره برمیگرده به خودتون فکرنکنم موضوع مهمی باشه
این از بحث هزینه.
برای اینکه هم شما رو تشخیص نده که قبلا خریدید، راهی به ذهنم نمیرسه مگر اینکه با یک نام دیگه تو پنل بازار لاگین کنید، یا اینکه اسم محصول رو تغییر بدید!
-
نقل قول: پرداخت درون برنامه ای
برای دریافت کد base64EncodedPublicKey باید اول برنامه بدون رجیستر رو آپلود کرد؟ بعدش چطور برنامه جدید رو دوباره قرار بدیم؟!
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
pedram.11
برای دریافت کد base64EncodedPublicKey باید اول برنامه بدون رجیستر رو آپلود کرد؟ بعدش چطور برنامه جدید رو دوباره قرار بدیم؟!
versionCode برنامه را در مانیفست یک شماره میبری بالا و سپس آپلود میکنی
انگار که برنامه را آپدیت کردی و حالا داری نسخه جدید را آپلود میکنی
-
نقل قول: پرداخت درون برنامه ای
ممنون از جوابتون، ببخشید کد RC_REQUEST اصل کاریه دیگه نه؟ base64EncodedPublicKey مهمه؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
pedram.11
ممنون از جوابتون، ببخشید کد RC_REQUEST اصل کاریه دیگه نه؟ base64EncodedPublicKey مهمه؟
1 - کدیه برای پیگیری پرداخت (تو کامنت انگلیسیش انطوری نوشته) ... یه عدد بزار
2 - توضیحات بازار را مطالعه کن :
(( پنل پرداخت بازار یک کلید عمومی در اختیار شما قرار میدهد که باید در برنامهٔ خود از آن استفاده کنید. این کلید برای هر برنامه منحصر به فرد است. ))
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
مستندات بازار را بخون
پنل پرداخت بازار یک کلید عمومی در اختیار شما قرار میدهد که باید در برنامهٔ خود از آن استفاده کنید. این کلید برای هر برنامه منحصر به فرد است. برای دریافت این کلید از بخش
برنامههای فروشنده بر روی کلید RSA برنامهٔ خود کلیک کرده و آن را دریافت کنید.
چطوری میشه از این کلید محافظت کرد؟؟؟؟
اگه از این کد محافظت نکنیم چه خطری تهدید می کنه؟
خواهشا راهنمایی کنید.
-
نقل قول: پرداخت درون برنامه ای
سلام دوستان
میخوام بره اولین بار به برنامم پرداخت درون برنامه ای اذافه کنم
برنامم چهار قسمت کلی داره که توی هر قسمت تعدادی گزینه وجود داره که درون گزینه ها اطلاعات برنامه موجوده
خب من میخوام یک صفحه ی خرید با چهار گزینه به برنامم اذافه کنم که هر گزینه برای خرید یکی از بخش های برنامه باشه
آیا پروژه ای که به صورت رایگان (با پرداخت درون برنامه ای) در بازار قرار میدم باید کل فایل های برنامه رو داشته باشه ولی مثلا وقتی یک دکمه رو انتخاب میکنیم یک توست نشون بده و بعد از ارتقاع برنامه به جای توست به اکتیویتی مشخصی بره یا بعد از ارتقاع برنامه اطلاعات برنامه دانلود بشه؟
میتونید راهنماییم کنید؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
esmail3309
سلام دوستان
میخوام بره اولین بار به برنامم پرداخت درون برنامه ای اذافه کنم
برنامم چهار قسمت کلی داره که توی هر قسمت تعدادی گزینه وجود داره که درون گزینه ها اطلاعات برنامه موجوده
خب من میخوام یک صفحه ی خرید با چهار گزینه به برنامم اذافه کنم که هر گزینه برای خرید یکی از بخش های برنامه باشه
آیا پروژه ای که به صورت رایگان (با پرداخت درون برنامه ای) در بازار قرار میدم باید کل فایل های برنامه رو داشته باشه ولی مثلا وقتی یک دکمه رو انتخاب میکنیم یک توست نشون بده و بعد از ارتقاع برنامه به جای توست به اکتیویتی مشخصی بره یا بعد از ارتقاع برنامه اطلاعات برنامه دانلود بشه؟
میتونید راهنماییم کنید؟
.........up
-
نقل قول: پرداخت درون برنامه ای
آقا من پرداخت درون برنامه ای رو تو برنامه اولم بدرستی اجرا کردم.
الان عین همون کارها رو برای 3 برنامه دیگه انجام دادم ولی کار نمیده.
این لینک یکی از برنامه هایی که ساختم لطفا تست کنید.
قیمت هم صفر گذاشتم.
از منوی سمت راست گزینه یکی به آخر مونده "افزایش لایک فیسبوک" رو بزنید تا وارد صفحه پرداخت بشید.
اینم اکتیویتی خرید درون برنامه ای:
package com.example.smsbaaz;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import com.example.facebooklike.R;
import util.IabHelper;
import util.IabResult;
import util.Inventory;
import util.Purchase;
import android.app.ActionBar.LayoutParams;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundExce ption;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.view.View.MeasureSpec;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class UpdateActivity extends Activity {
int update = 0;
public ProgressDialog dialog ;
ImageButton btn1;
ImageButton btn2;
SharedPreferences sp;
//Debug tag, for logging
static final String TAG = "SmsBaaz";
//SKUs for our products: the premium upgrade (non-consumable)
static final String SKU_PREMIUM = "jhgiopjogyu2hu";
//Does the user have the premium upgrade?
boolean mIsPremium = false;
//(arbitrary) request code for the purchase flow
static final int RC_REQUEST = 10001;
//The helper object
IabHelper mHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.update);
// show loading dialog with ProgressDialog
dialog = new ProgressDialog(this);
dialog.setCancelable(false);
dialog.setInverseBackgroundForced(false);
btn1 = (ImageButton) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
finish();
startActivity(new Intent(UpdateActivity.this,MainActivity.class));
}
});
btn2 = (ImageButton) findViewById(R.id.button2);
sp = PreferenceManager.getDefaultSharedPreferences(this );
if(!isPackageInstalled("com.farsitel.bazaar", UpdateActivity.this)){
Toast.makeText(getApplicationContext(),"نرم افزار بازار هنوز نصب نشده است",Toast.LENGTH_LONG).show();
}
else{
if(isNetworkConnected()){
dialog.setMessage("بررسی سبد خرید");
dialog.show();
String base64EncodedPublicKey = "MIHNMA0GCSqGSIb3DQEBAQUAA4G7ADCBtwKBrwC9eqtpO4UqF bumNBZsFtCM+knU+9kcFNGX3mgD87fojwiXlwvfk8SigLmCVny ahPwAgqBWTYZNwj7ae/B5ZlFft4JyYKIvi/PJPx5he6okOyLjy+wIYQ3/7sTpe3sqgqln266spL3MfOxa3xYVC038Ig04Cuy0rW6QFGnQFI riZCHEcb2bymWJCVy2YP5Omw1PrQRD6Z+R816p1DQn6b3mOQb2 ggCFDRL/PKmHfGcCAwEAAQ==";
// You can find it in your Bazaar console, in the Dealers section.
// It is recommended to add more security than just pasting it in your source code;
mHelper = new IabHelper(this, base64EncodedPublicKey);
Log.d(TAG, "Starting setup.");
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
Log.d(TAG, "Setup finished.");
if (!result.isSuccess()) {
Toast.makeText(getApplicationContext(),"وارد اکانت حساب کاربری خود در بازار شوید."+"\n"+"یا اتصال به اینترنت را بررسی کنید.",Toast.LENGTH_LONG).show();
// 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) ;
}
});
}
}
}
//با آغاز اکتیویتی کد زیر اجرا میشود که برای جستجو premium بودن میباشد.
//اگر کاربر premium باشد دیالوگ loading مخفی میشه dialog.hide() متد UpdateUi() اجرا میشه و محتوای این متد را در باتن قرار میده.
//اگر کاربر premium نباشه هم منتظر لمس کردن کاربر بر روی دکمه میشه که متد onOnlineUpgradeAppButtonClicked را فراخوانی کند.
IabHelper.QueryInventoryFinishedListener 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);
dialog.hide();
Toast.makeText(getApplicationContext(),"خطا در ارتباط با سرور."+"\n"+"وارد اکانت حساب کاربری خود در بازار شوید."+"\n"+"یا اتصال به اینترنت را بررسی کنید.",Toast.LENGTH_LONG).show();
return;
}
else {
Log.d(TAG, "Query inventory was successful.");
// does the user have the premium upgrade?
mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
// update UI accordingly
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
}
dialog.hide();
updateUi();
Log.d(TAG, "Initial inventory query finished; enabling main UI.");
}
};
@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.");
}
}
boolean verifyDeveloperPayload(Purchase p) {
String payload = p.getDeveloperPayload();
return true;
}
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure()) {
Toast.makeText(getApplicationContext(),"وارد اکانت حساب کاربری خود در بازار شوید."+"\n"+"یا اتصال به اینترنت را بررسی کنید.",Toast.LENGTH_LONG).show();
Log.d(TAG, "Error purchasing: " + result);
return;
}
if (!verifyDeveloperPayload(purchase)) {
Toast.makeText(getApplicationContext(),"وارد اکانت حساب کاربری خود در بازار شوید."+"\n"+"یا اتصال به اینترنت را بررسی کنید.",Toast.LENGTH_LONG).show();
complain("Error purchasing. Authenticity verification failed.");
return;
}
Log.d(TAG, "Purchase successful.");
if (purchase.getSku().equals(SKU_PREMIUM)) {
Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
mIsPremium = true;
updateUi();
Toast.makeText(getApplicationContext(),"با تشکر از خرید شما",Toast.LENGTH_LONG).show();
}
}
};
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "Destroying helper.");
if (mHelper != null) mHelper.dispose();
mHelper = null;
}
// اگر کاربر پریمیوم باشد دستورات آپدیت را انجام میدهد در غیر اینصورت به صفحه خرید هدایت می شود.
public void updateUi() {
if (mIsPremium) {
update = 224;
Editor e = sp.edit();
e.putInt("update", 224);
e.commit();
Toast.makeText(getApplicationContext(),"شما کاربر ویژه هستید",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(),"نرم افزار خریداری نشده است",Toast.LENGTH_LONG).show();
}
}
void complain(String message) {
Log.e(TAG, "**** testbilling Error: " + message);
}
private boolean isNetworkConnected() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni == null) {
Toast.makeText(getApplicationContext(), "اتصال به اینترنت برقرار نیست", Toast.LENGTH_LONG).show();
return false;
} else
return true;
}
public static boolean isPackageInstalled(String packagename,Context context) {
PackageManager pm = context.getPackageManager();
try {
pm.getPackageInfo(packagename, PackageManager.GET_ACTIVITIES);
return true;}
catch (NameNotFoundException e) {
return false;}
}
public void onOnlineUpgradeAppButtonClicked(View arg0) {
if(!isPackageInstalled("com.farsitel.bazaar", UpdateActivity.this)){
Toast.makeText(getApplicationContext(),"نرم افزار بازار هنوز نصب نشده است",Toast.LENGTH_LONG).show();
}
else{
if(isNetworkConnected()){
Log.d(TAG, "Upgrade button clicked; launching purchase flow for upgrade.");
/* TODO: for security, generate your payload here for verification. See the comments on
* verifyDeveloperPayload() for more info. Since this is a SAMPLE, we just use
* an empty string, but on a production app you should carefully generate this. */
String payload = "inbarnametavasotehamedjjsakhteshodeast";
mHelper.launchPurchaseFlow(UpdateActivity.this, SKU_PREMIUM, RC_REQUEST,
mPurchaseFinishedListener, payload);
}
}
}
private static long back_pressed = 0L;
@Override
public void onBackPressed()
{
finish();
startActivity(new Intent(UpdateActivity.this,MainActivity.class));
}
}
-
نقل قول: پرداخت درون برنامه ای
-
نقل قول: پرداخت درون برنامه ای
مشکل حل شد.کلید عمومی نرم افزار رو مطابق با اونچه بازار تو پنلم داده بود عوض نکرده بودم.
در واقع کلید عمومی نرم افزار قبلیم رو تو این نرم افزار استفاده کردم که خطا میداد.
-
نقل قول: پرداخت درون برنامه ای
با سلام و تشکر، چرا همه لینک ها "قسمت 1 از 3" می باشد؟!
-
نقل قول: پرداخت درون برنامه ای
دانلود سورس سالم پرداخت درون برنامه ای برای همه ی API ها
:شیطان:
دریافت سورس:کف:
-
نقل قول: پرداخت درون برنامه ای
میتونید از سیستم پرداخت درون برنامه ای همراه پی هم استفاده کنید
http://hamrahpay.com
-
نقل قول: پرداخت درون برنامه ای
سلام دوسنان من یک مشکلی دارم . تمام کدها رو پیاده سازی کردم . وقتی میزنم خرید ، میره بازار رو باز میکنه ولی ارور 404 یافت نشد میده . دلیل چنین اروری چی میتونه باشه ؟
مقدار این رشته باید چی یباشه ؟ static final String SKU_PREMIUM
من برای این رشته ، "شناسهٔ کالا" که در بازار ایجاد کردم رو گذاشتم . مثلا gold
کد RSA هم گذاشتم در base64EncodedPublicKey
راستی ، برنامم هنوز تایید نشده . آیا این میتونه دلیلش باشه ؟
ممنون میشم راهنمایی کنید با تشکر
-
نقل قول: پرداخت درون برنامه ای
دوستان من همچنان مشکلی که در پست قبلی یرو گفتم رو دارم . کسی نمیدونه مشکل از چی میتونه باشه ؟ ممنون میشم راهنمایی کنید
-
نقل قول: پرداخت درون برنامه ای
سلام دوستان
دوستان کسی پرداخت درون برنامه ای پیاده سازی کرده که بعد از خرید کاربر ، اون خرید مصرف بشه و اگه کاربر دوباره خواست بخره ؟ در مثال TrivialDrive چنین چیزی هست ولی من تست میکنم اشکال داره . ارور زیر رو میده :Consumption finished. Purchase: PurchaseInfo(type:subs):{"orderId": "-vmhoD_kwxMs6Ksb", "purchaseToken": "-vmhoD_kwxMs6Ksb", "developerPayload": "", "packageName": "com.example.package", "purchaseState": 0, "purchaseTime": 1413292833534, "productId": "goldvip1"}, result: IabResult: Items of type 'subs' can't be consumed. (response: -1010:Invalid consumption attempt)
نمیدونم مشکلش چی هست . ممنون میشم اگه کسی چنین کدی داره بهم بده
با تشکر فراوان
-
نقل قول: پرداخت درون برنامه ای
با سلام و خسته نباشید.
متاسفانه بنده نتونستم پروؤه اصلاح شده دوستم عزیزمون hamedjj رو دانلود کنم اصلا سایت https://github.com/hamedjj/BazaarInAppBilling برام باز نمی شه؟ :|
کسی از دوستان می تونه پروژه تکمیل شده ایشون رو برام در یک جای دیگه آپلود کنه؟
-
نقل قول: پرداخت درون برنامه ای
-
نقل قول: پرداخت درون برنامه ای
پست شماره 209 همين بالا ↑
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
این که همه گزینه هاش خطا میده !؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
saeed_g21
این که همه گزینه هاش خطا میده !؟
برای من که خیلی شیک و مجلسی run میشه :لبخند::لبخند::لبخند::لبخند:: بخند:
چطوری ایمپورت کردی؟
همون فایل rar را ایمپورت کن و یه کپی تو پوشه پروژه های خودتم قرار بده
-
نقل قول: پرداخت درون برنامه ای
در Import مشکلی ندارم موقع Run روی ماشین واقعی هر باتنی که میزنم میندازه بیرون و خطای زیر رو میده
10-20 15:41:48.743: E/AndroidRuntime(10460): FATAL EXCEPTION: main10-20 15:41:48.743: E/AndroidRuntime(10460): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hamedjj.bazaarinappbilling/com.hamedjj.bazaarinappbilling.OnlinePremium}: java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2059)
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.app.ActivityThread.handleLaunchActivity(Ac tivityThread.java:2084)
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.app.ActivityThread.access$600(ActivityThre ad.java:130)
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.app.ActivityThread$H.handleMessage(Activit yThread.java:1195)
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.os.Handler.dispatchMessage(Handler.java:99 )
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.os.Looper.loop(Looper.java:137)
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.app.ActivityThread.main(ActivityThread.jav a:4745)
10-20 15:41:48.743: E/AndroidRuntime(10460): at java.lang.reflect.Method.invokeNative(Native Method)
10-20 15:41:48.743: E/AndroidRuntime(10460): at java.lang.reflect.Method.invoke(Method.java:511)
10-20 15:41:48.743: E/AndroidRuntime(10460): at com.android.internal.os.ZygoteInit$MethodAndArgsCa ller.run(ZygoteInit.java:786)
10-20 15:41:48.743: E/AndroidRuntime(10460): at com.android.internal.os.ZygoteInit.main(ZygoteInit .java:553)
10-20 15:41:48.743: E/AndroidRuntime(10460): at dalvik.system.NativeStart.main(Native Method)
10-20 15:41:48.743: E/AndroidRuntime(10460): Caused by: java.lang.IllegalStateException: IAB helper is not set up. Can't perform operation: queryInventory
10-20 15:41:48.743: E/AndroidRuntime(10460): at com.hamedjj.bazaarinappbilling.util.IabHelper.chec kSetupDone(IabHelper.java:756)
10-20 15:41:48.743: E/AndroidRuntime(10460): at com.hamedjj.bazaarinappbilling.util.IabHelper.quer yInventoryAsync(IabHelper.java:589)
10-20 15:41:48.743: E/AndroidRuntime(10460): at com.hamedjj.bazaarinappbilling.util.IabHelper.quer yInventoryAsync(IabHelper.java:616)
10-20 15:41:48.743: E/AndroidRuntime(10460): at com.hamedjj.bazaarinappbilling.OnlinePremium$3.onI abSetupFinished(OnlinePremium.java:71)
10-20 15:41:48.743: E/AndroidRuntime(10460): at com.hamedjj.bazaarinappbilling.util.IabHelper.star tSetup(IabHelper.java:267)
10-20 15:41:48.743: E/AndroidRuntime(10460): at com.hamedjj.bazaarinappbilling.OnlinePremium.onCre ate(OnlinePremium.java:62)
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.app.Activity.performCreate(Activity.java:5 008)
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.app.Instrumentation.callActivityOnCreate(I nstrumentation.java:1079)
10-20 15:41:48.743: E/AndroidRuntime(10460): at android.app.ActivityThread.performLaunchActivity(A ctivityThread.java:2023)
10-20 15:41:48.743: E/AndroidRuntime(10460): ... 11 more
-------------------------------------------------------------------------------------------------------
مورد حل شد
کافه بازار رو نصب کردم خطا رفع شد
و همچنین تشکر ویژه دارم از دوست عزیز esmail3309 که با صبر و شکیبایی به سوالاتم جواب داد
-
نقل قول: پرداخت درون برنامه ای
من تمام پست های اینجا رو خوندم اما باز نتونستم به جواب خودم برسم ..
سوالم اینه ، اگه بخوام توی برنامه ام (بازی)مثلن انرژی بخرم .. اینجوری که من فهمیدم اگه توی بازار با این دهایی که دوستان نوشتن بخوام این عملیاتو پیاده سازی کنم قط یکبار می تونم بخرم و بازار برای بار بعدی میگه یبار خریداری شده .. اینو چطور باید برطرف کنم ؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hosseinaryai
من تمام پست های اینجا رو خوندم اما باز نتونستم به جواب خودم برسم ..
سوالم اینه ، اگه بخوام توی برنامه ام (بازی)مثلن انرژی بخرم .. اینجوری که من فهمیدم اگه توی بازار با این دهایی که دوستان نوشتن بخوام این عملیاتو پیاده سازی کنم قط یکبار می تونم بخرم و بازار برای بار بعدی میگه یبار خریداری شده .. اینو چطور باید برطرف کنم ؟
باید api محصولات مصرف را پیاده سازی کنید که متاسفانه این آموزش هنوز در پست قرار داده نشده است
از مستندات بازار استفاده کنید
-
نقل قول: پرداخت درون برنامه ای
سلام دوستان
کسی میتونه بگه چجوری می تونم خرید داخل برنامه رو قبل از اینکه برنامه رو پابلیش کنم تست کنم. من برنامه رو تو بازار آپلود کردم، محصولات هم تعریف کردم ولی نمی تونم از طریق QR دانلودش کنم تا تستش کنم ببینم کار میکنه یا نه، میگه این برنامه تو بازار وجود نداره. اگه پابلیش کنم که همه می بیننش!!!
خیلی ممنون
-
نقل قول: پرداخت درون برنامه ای
سلام. آیا میشود برای برنامۀ غیررایگان که قبلاً منتشر شده، هم پرداخت درونبرنامهای اضافه کرد؟ برای مثال محصولی فروخته شود، اما پس از آن برای قابلیتی مجزا، نیاز به پرداخت درون برنامهای باشد.
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamed63
سلام دوستان
کسی میتونه بگه چجوری می تونم خرید داخل برنامه رو قبل از اینکه برنامه رو پابلیش کنم تست کنم. من برنامه رو تو بازار آپلود کردم، محصولات هم تعریف کردم ولی نمی تونم از طریق QR دانلودش کنم تا تستش کنم ببینم کار میکنه یا نه، میگه این برنامه تو بازار وجود نداره. اگه پابلیش کنم که همه می بیننش!!!
خیلی ممنون
مگه برنامه رو خودت آپلود نکردی؟خب همونی که از کامپیوترت آپلود کردی رو تست کن. چه فرقی داره با اونی که تو بازار گذاشتی :دی
نقل قول:
نوشته شده توسط
diapason
سلام. آیا میشود برای برنامۀ غیررایگان که قبلاً منتشر شده، هم پرداخت درونبرنامهای اضافه کرد؟ برای مثال محصولی فروخته شود، اما پس از آن برای قابلیتی مجزا، نیاز به پرداخت درون برنامهای باشد.
اگه برای قابلیت های جدید که قبلا نبوده نیاز به پول باشه که فکر نکنم بازار کاری داشته باشه.مگه اینکه سیستم پنل نذاره آپلود کنی.
به بازار ایمیل بده بپرس.
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
Amin-rz
اگه برای قابلیت های جدید که قبلا نبوده نیاز به پول باشه که فکر نکنم بازار کاری داشته باشه.مگه اینکه سیستم پنل نذاره آپلود کنی.
به بازار ایمیل بده بپرس.
ممنون از شما. از بازار سوال میکنم. نتیجه رو اعلام میکنم.
-
نقل قول: پرداخت درون برنامه ای
در رابطه با پست 227 خودم. جهت اطلاع دستان عزیز، پاسخ بازار به این شرح بود که:
نقل قول:
... برای اضافه کردن پرداخت درونبرنامهای در نسخهٔ غیررایگان مشکلی وجود ندارد. اما همیشه چنین شرایطی برای ما قابل قبول نیست و نیاز به بررسی برنامه دارد.
واقعاً عملکرد عالی و پاسخگویی سریع بازار، جای تقدیر داره.
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
mehdiyamani
سلام دوستان
دوستان کسی پرداخت درون برنامه ای پیاده سازی کرده که بعد از خرید کاربر ، اون خرید مصرف بشه و اگه کاربر دوباره خواست بخره ؟ در مثال TrivialDrive چنین چیزی هست ولی من تست میکنم اشکال داره . ارور زیر رو میده :
Consumption finished. Purchase: PurchaseInfo(type:subs):{"orderId": "-vmhoD_kwxMs6Ksb", "purchaseToken": "-vmhoD_kwxMs6Ksb", "developerPayload": "", "packageName": "com.example.package", "purchaseState": 0, "purchaseTime": 1413292833534, "productId": "goldvip1"}, result: IabResult: Items of type 'subs' can't be consumed. (response: -1010:Invalid consumption attempt)
نمیدونم مشکلش چی هست . ممنون میشم اگه کسی چنین کدی داره بهم بده
با تشکر فراوان
سلام،من اینجوری درستش کردم
برو تو کلاس IabHelper
توی متد consume
اینا رو پاک کن
if (!itemInfo.mItemType.equals(ITEM_TYPE_INAPP)) {
throw new IabException(IABHELPER_INVALID_CONSUMPTION,
"Items of type '" + itemInfo.mItemType + "' can't be consumed.");
}
-
نقل قول: پرداخت درون برنامه ای
سلام دوستان.
ببخشید من هم این تایپیک رو خودندم.
اما جای سوال هست برام که حالا یارو باید پریمیوم بشه؟
نمیشه مثل بازی های آفتابه و امثالش یه گزینه باشه که وقتی بزنی برات سکه بخره؟
اگه میشه لطفا بگید اسمش چیه و از کجا می تونم آموزشاش رو پیدا کنم.
از سورس آقای daniel021 استفاده کردم و واقعا خیلی عالی بود و کار کرد.
فقط مشکلم باهاش اینه که من نمی خوام با هر بار ورود کاربر به نرم افزار، نرم افزار به بازار وصل شه و چک کنه بلکه می خوام مثل همون خرید سکه درست کنم برای بازی و برنامه های خودم
توررو خدا یکی کمکم کنه.
ممنون از اساتید
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
dalmif
سلام دوستان.
ببخشید من هم این تایپیک رو خودندم.
اما جای سوال هست برام که حالا یارو باید پریمیوم بشه؟
نمیشه مثل بازی های آفتابه و امثالش یه گزینه باشه که وقتی بزنی برات سکه بخره؟
اگه میشه لطفا بگید اسمش چیه و از کجا می تونم آموزشاش رو پیدا کنم.
از سورس آقای
daniel021 استفاده کردم و واقعا خیلی عالی بود و کار کرد.
فقط مشکلم باهاش اینه که من نمی خوام با هر بار ورود کاربر به نرم افزار، نرم افزار به بازار وصل شه و چک کنه بلکه می خوام مثل همون خرید سکه درست کنم برای بازی و برنامه های خودم
توررو خدا یکی کمکم کنه.
ممنون از اساتید
اگر تاپیک را کامل مطالعه کرده بودید این سوال را نمی پرسیدید
به بخش محصولات مصرفی مراجعه کنید:
http://pardakht.cafebazaar.ir/doc/?l=fa
-
نقل قول: پرداخت درون برنامه ای
سلام حامد جان.
خیلی ممنونم که جواب دادید.
اما من این صفحه ها رو مطالعه کردم که لینک دادید.
منظور من رو شما متوجه نشدید.
میگم که من یه برنامه دارم که می خوام توش سکه بفروشم اما بلد نیستم.
حالا شما دیدم که ارتقا به کاربر ویژه رو قرار دادید.
من هم درخواست دارم تا اینکه شما کدی برای خرید سکه بگذارید.
البته من فکرم اینه که میشه همین کد رو تغییر داد تا بعد از خرید به دیتابیس سکه اضافه کنه و برای دفعه بعد به بازار نره تا چک کنه
اما چون توی جاوا تازه کارم نمی دونم باس کدوم کد ها رو تغییر بدم.
اگه شما بگید ممنون میشم
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
dalmif
سلام حامد جان.
خیلی ممنونم که جواب دادید.
اما من این صفحه ها رو مطالعه کردم که لینک دادید.
منظور من رو شما متوجه نشدید.
میگم که من یه برنامه دارم که می خوام توش سکه بفروشم اما بلد نیستم.
حالا شما دیدم که ارتقا به کاربر ویژه رو قرار دادید.
من هم درخواست دارم تا اینکه شما کدی برای خرید سکه بگذارید.
البته من فکرم اینه که میشه همین کد رو تغییر داد تا بعد از خرید به دیتابیس سکه اضافه کنه و برای دفعه بعد به بازار نره تا چک کنه
اما چون توی جاوا تازه کارم نمی دونم باس کدوم کد ها رو تغییر بدم.
اگه شما بگید ممنون میشم
تو اینترنت سایتی برای آموزش محصولات مصرفی درحال حاضر وجود ندارد
من که بشخصه چیزی پیدا نکردم
خودم هم فعلا با این سیستم کار نکردم و آموزشی نمیتونم آموزشی براش تدوین کنم
اگر شما آموزشی در این باره پیدا کردید حتما در این تاپیک قرار بدهید
موفق باشی
-
نقل قول: پرداخت درون برنامه ای
با سلام
من پرداخت درون برنامه ای رو به برنامم اضافه کرده ام . ولی نمیدونم کجا باید متدی که دیتا ها را برای یوزر آپدیت میکنه بنویسم .
1- اگه خرید موفقیت امیز بود کجا میشه ؟
2- اگه قبلا خریده بود کجا میشه ؟
ممنون راهنمایی کنید
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
saeid222
با سلام
من پرداخت درون برنامه ای رو به برنامم اضافه کرده ام . ولی نمیدونم کجا باید متدی که دیتا ها را برای یوزر آپدیت میکنه بنویسم .
1- اگه خرید موفقیت امیز بود کجا میشه ؟
2- اگه قبلا خریده بود کجا میشه ؟
ممنون راهنمایی کنید
تو اکتیویتی خرید , تابع updateUi() رو پیدا کن و به این نمونه توجه کن:
public void updateUi() {
if (mIsPremium) {
"اگر کاربر ویژه باشه این کد ها اجرا بشه"
}
else
{
"اگر کاربر ویژه نباشه این کد ها اجرا بشه"
}
}
-
نقل قول: پرداخت درون برنامه ای
گفتم اگه کاربر Premium بود دیتاهای اضافی توی دیتابیس ریخته بشه . اینجا
if (mIsPremium) {
"اگر کاربر ویژه باشه این کد ها اجرا بشه"
}
بعد کد مربوط به payload رو تغییر دادم تا با اون چیزی که خریدم فرق داشته باشه .
حالا کلا میگه کاربر premium است !!!!
کجا رو میشه اشتباه کرده باشم .
تا دکمه خرید رو میزنم یه لحظه بازار باز میشه و مینویسه انجام شد)
<ویرایش>
این کد توی متد onCreate اجرا میشه :
نقل قول:
IabHelper.QueryInventoryFinishedListener
توی این متد بود که گفت کاربر premium است
نقل قول:
mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
و مقدار true ریخته میشه توی mIsPremium
-
نقل قول: پرداخت درون برنامه ای
دوستان کسی در مورد پرداخت درون برنامه ای نمیتونخ کمک کنه ؟
کاملا گیج شدم م :گیج::افسرده:م م م
-
نقل قول: پرداخت درون برنامه ای
با سلام خدمت همه دوستان مخصوصا آقا حامد گل که خیلی زحمت میکشن
دوستان من با کمک برنامه حامد یه پرداخت درون برنامه ای درست کردم امتحانشم کردم ، رفت صفحه درون پرداخت رو باز کرد و خرید انجام شد و برگشت به برنامه و پیغام "KHARID" رو هم نشون داد فقط چون کد ها رو کپی کردم و چیزی ازشون سر نمیارم نمیدونم که آیا درست انجام دادم یا نه
کد ها رو میذارم لطفا یه چک بکنید و همچنین در صورت امکان جاهائی که توضیح خواستم در حد چند کلمه بگین چی کار میکنن
سوالات :
1- قسمت تعاریف میباشد
2- چیه و چرا ؟
3-چک میکنه که آیا کاربر VIP هی یا نه
3_A نمیدونم
3_B با کلیک بر روی دکمه به صفحه پرداخت درون برنامه ای میرود
3_C نمیدونم
3_D نمیدونم
1_4 نمیدونم
2_4 نمیدونم
3_4 بعد از پرداخت این تابع فراخانی میشود
public class Begin extends Activity {
private Button btn_free;
private Button btn_bronzi;
/////// 1
static final String TAG = "Kharid_daron Barnamei";
static final String SKU_PREMIUM = "bronzi";
boolean mIsPremium = false;
static final int RC_REQUEST = 10001 ;
IabHelper mHelper;
//////////////////////// end 1
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.begin);
btn_bronzi = (Button) findViewById(R.id.btn_bronzi);
////////// 2
String base64EncodedPublicKey = "MIHNMA0GCSqGSIb3DQEBAQUAA4G7ADCBtwKBrwDX7ntTlHQys 2zu7liNpiNo9RyPY1Q8/UEAtmAw8KnoPQir7qgaQhY15n1osaenZeLD2GWRquzrQ5ub2lG NwoOIpOoIMkzQcVuZt/sSOlY6a1PQkEFElLtbOyQcweSkIwy4PDJ4FlFuE1jBqKPKY7UT adnDNym0xck1s5PbkxsmrhGkNKTyCnJLsXTgs5D2X9Ic3XbmWN k/DwhVEUFKzgw5/CnwnD5iiACuRG7z9r0CAwEAAQ==";
mHelper = new IabHelper(this, base64EncodedPublicKey);
Log.d(TAG, "Starting setup.");
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
Log.d(TAG, "Setup finished.");
if (!result.isSuccess()) {
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
mHelper.queryInventoryAsync(mGotInventoryListener) ;
}
});
}
////////////////////////end 2
//////////////////////3
/////3_A baraye inke bedonim karbar az aval vip has ya na
IabHelper.QueryInventoryFinishedListener 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.");
mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
}
Log.d(TAG, "Initial inventory query finished; enabling main UI.");
}
};
////End 3_A
////3_B ba click bar roye dokme etefagh miyoftad
public void onOnlineUpgradeAppButtonClickedbronzi(View arg0) {
Log.d(TAG, "Upgrade button clicked; launching purchase flow for upgrade.");
String payload = "inbarnametavasotehamedjjsakhteshodeast";
mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST,
mPurchaseFinishedListener, payload);
}
/////end 3_B
///// 3_C bayad hamontory bashad
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
} else {
Log.d(TAG, "onActivityResult handled by IABUtil.");
}
}
////end 3_C
//////3_D
boolean verifyDeveloperPayload(Purchase p) {
String payload = p.getDeveloperPayload();
return true;
}
////////
////////////////////////////////////////end 3
//////4_1
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
return;
}
if (!verifyDeveloperPayload(purchase)) {
return;
}
Log.d(TAG, "Purchase successful.");
if (purchase.getSku().equals(SKU_PREMIUM)) {
Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
mIsPremium = true;
updateUi();
}
}
};
//////////////////end 4_1
//////4_2
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "Destroying helper.");
if (mHelper != null) mHelper.dispose();
mHelper = null;
}
//////end 4_2
//////4_3
public void updateUi() {
if (mIsPremium) {
Toast.makeText(getApplicationContext(), "KHARID", Toast.LENGTH_SHORT).show();
}
}
/////////end 4_3
/////end 4
}
-
نقل قول: پرداخت درون برنامه ای
و برای اینکه کاربر بتونه N بار از یک محصول خرید کنه چیکار باید بکنیم ،؟
(محصول نه VIP بودن کاربر باشه ، نه یک محصول مصرفی)
-
نقل قول: پرداخت درون برنامه ای
-
نقل قول: پرداخت درون برنامه ای
برای سوال دومم این رو پیدا کردم که مدیر محترم بخش اندروید قرار دادن ، حالا چطور این رو پیاده سازیش کنم !
نقل قول:
نوشته شده توسط
rubiks.kde
بعد از اینکه پرداخت رو انجام داد و موفقیت آمیز بود کد زیر رو اجرا کن
mHelper.consumeAsync(purchase, mConsumeFinishedListener);
نتیجه این عمل توی لیسنر زیر میاد که باید کدش رو بنویسی
IabHelper.OnConsumeFinishedListener mConsumeFinishedListener = new IabHelper.OnConsumeFinishedListener() {
public void onConsumeFinished(Purchase purchase, IabResult result) {
Log.d(TAG, "Consumption finished. Purchase: " + purchase + ", result: " + result);
if (mHelper == null) return;
if (result.isSuccess()) {
Log.d(TAG, "Consumption successful. Provisioning.");
}
else {
complain("Error while consuming: " + result);
}
setWaitScreen(false);
Log.d(TAG, "End consumption flow.");
}
};
به این صورت محصول خرید شده مصرف میشه و نتیجه برای شما برمیگرده که ایا محصول خزیده شده مصرف شد یا نه.
-
نقل قول: پرداخت درون برنامه ای
دوستان عزیز با کمک کدی که آقای rubiks.kde (مدیر محترم) قرار داده بودن تونستم به تعداد نامتناهی خرید از یک محصول رو پیاده سازی کنم فقط لطفا بو مورد زیر یه نظر بدین ممنونم از همتون
نقل قول:
نوشته شده توسط
hamedg1366
با سلام خدمت همه دوستان مخصوصا آقا حامد گل که خیلی زحمت میکشن
دوستان من با کمک برنامه حامد یه پرداخت درون برنامه ای درست کردم امتحانشم کردم ، رفت صفحه درون پرداخت رو باز کرد و خرید انجام شد و برگشت به برنامه و پیغام "KHARID" رو هم نشون داد فقط چون کد ها رو کپی کردم و چیزی ازشون سر نمیارم نمیدونم که آیا درست انجام دادم یا نه
کد ها رو میذارم لطفا یه چک بکنید و همچنین در صورت امکان جاهائی که توضیح خواستم در حد چند کلمه بگین چی کار میکنن
سوالات :
1- قسمت تعاریف میباشد
2- چیه و چرا ؟
3-چک میکنه که آیا کاربر VIP هی یا نه
3_A نمیدونم (چیه و چرا ؟)
3_B با کلیک بر روی دکمه به صفحه پرداخت درون برنامه ای میرود
3_C نمیدونم (چیه و چرا ؟)
3_D نمیدونم (چیه و چرا ؟)
1_4 نمیدونم (چیه و چرا ؟)
2_4 نمیدونم (چیه و چرا ؟)
3_4 بعد از پرداخت این تابع فراخانی میشود
public class Begin extends Activity {
private Button btn_free;
private Button btn_bronzi;
/////// 1
static final String TAG = "Kharid_daron Barnamei";
static final String SKU_PREMIUM = "bronzi";
boolean mIsPremium = false;
static final int RC_REQUEST = 10001 ;
IabHelper mHelper;
//////////////////////// end 1
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.begin);
btn_bronzi = (Button) findViewById(R.id.btn_bronzi);
////////// 2
String base64EncodedPublicKey = "MIHNMA0GCSqGSIb3DQEBAQUAA4G7ADCBtwKBrwDX7ntTlHQys 2zu7liNpiNo9RyPY1Q8/UEAtmAw8KnoPQir7qgaQhY15n1osaenZeLD2GWRquzrQ5ub2lG NwoOIpOoIMkzQcVuZt/sSOlY6a1PQkEFElLtbOyQcweSkIwy4PDJ4FlFuE1jBqKPKY7UT adnDNym0xck1s5PbkxsmrhGkNKTyCnJLsXTgs5D2X9Ic3XbmWN k/DwhVEUFKzgw5/CnwnD5iiACuRG7z9r0CAwEAAQ==";
mHelper = new IabHelper(this, base64EncodedPublicKey);
Log.d(TAG, "Starting setup.");
mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
public void onIabSetupFinished(IabResult result) {
Log.d(TAG, "Setup finished.");
if (!result.isSuccess()) {
Log.d(TAG, "Problem setting up In-app Billing: " + result);
}
mHelper.queryInventoryAsync(mGotInventoryListener) ;
}
});
}
////////////////////////end 2
//////////////////////3
/////3_A baraye inke bedonim karbar az aval vip has ya na
IabHelper.QueryInventoryFinishedListener 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.");
mIsPremium = inventory.hasPurchase(SKU_PREMIUM);
Log.d(TAG, "User is " + (mIsPremium ? "PREMIUM" : "NOT PREMIUM"));
}
Log.d(TAG, "Initial inventory query finished; enabling main UI.");
}
};
////End 3_A
////3_B ba click bar roye dokme etefagh miyoftad
public void onOnlineUpgradeAppButtonClickedbronzi(View arg0) {
Log.d(TAG, "Upgrade button clicked; launching purchase flow for upgrade.");
String payload = "inbarnametavasotehamedjjsakhteshodeast";
mHelper.launchPurchaseFlow(this, SKU_PREMIUM, RC_REQUEST,
mPurchaseFinishedListener, payload);
}
/////end 3_B
///// 3_C bayad hamontory bashad
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.d(TAG, "onActivityResult(" + requestCode + "," + resultCode + "," + data);
if (!mHelper.handleActivityResult(requestCode, resultCode, data)) {
super.onActivityResult(requestCode, resultCode, data);
} else {
Log.d(TAG, "onActivityResult handled by IABUtil.");
}
}
////end 3_C
//////3_D
boolean verifyDeveloperPayload(Purchase p) {
String payload = p.getDeveloperPayload();
return true;
}
////////
////////////////////////////////////////end 3
//////4_1
IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener = new IabHelper.OnIabPurchaseFinishedListener() {
public void onIabPurchaseFinished(IabResult result, Purchase purchase) {
Log.d(TAG, "Purchase finished: " + result + ", purchase: " + purchase);
if (result.isFailure()) {
Log.d(TAG, "Error purchasing: " + result);
return;
}
if (!verifyDeveloperPayload(purchase)) {
return;
}
Log.d(TAG, "Purchase successful.");
if (purchase.getSku().equals(SKU_PREMIUM)) {
Log.d(TAG, "Purchase is premium upgrade. Congratulating user.");
mIsPremium = true;
updateUi();
}
}
};
//////////////////end 4_1
//////4_2
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "Destroying helper.");
if (mHelper != null) mHelper.dispose();
mHelper = null;
}
//////end 4_2
//////4_3
public void updateUi() {
if (mIsPremium) {
Toast.makeText(getApplicationContext(), "KHARID", Toast.LENGTH_SHORT).show();
}
}
/////////end 4_3
/////end 4
}
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
سوالات :
1- قسمت تعاریف میباشد
2- چیه و چرا ؟
3-چک میکنه که آیا کاربر VIP هی یا نه
3_A نمیدونم (چیه و چرا ؟)
3_B با کلیک بر روی دکمه به صفحه پرداخت درون برنامه ای میرود
3_C نمیدونم (چیه و چرا ؟)
3_D نمیدونم (چیه و چرا ؟)
1_4 نمیدونم (چیه و چرا ؟)
2_4 نمیدونم (چیه و چرا ؟)
3_4 بعد از پرداخت این تابع فراخانی میشود
1 - تعریف متغییر ها
2- درگاه درون پرداخت را راه اندازی می کند و در صورت نصب بودن بازار Setup finished. نمایش داده می شود. و می توانید پرداخت انجام دهید
3- بررسی کردن پریمیوم بودن کاربر، اگر کاربر پریمیوم باشد mIsPremium = true می شود.
3-ب : اینم که دکمه خرید است.
3-سی : وقتی صفحه درگاه پرداخت بسته می شود این متد اجرا می شود و جواب برگشت داده شده از درگاه را پردازش می کند.
3-دی : این متد کلا بلا استفاده است و همیشه true بر می گردونه، شکل درستش هم زیاد کاربرد نداره چون شما موقع خرید developer payload رو یک رشته ثابت تعریف کردی، ولی برای اطمینان می تونی با شکل درست این متد payload برگشتی از بازار رو با payload ـه موقع خرید چک کنی. ( که همیشه true است !!)
4-1 : این یک listener برای نتیجه خرید است، اگر خرید موفقیت آمیز باشید Purchase successful. نمایش داده می شود.
4-2 : موقع بستن اکتیوی این متد صدا زده می شود و چون دیگر نیازی به درگاه پرداخت ندارید آن را می بندد.
4.3 : این یک متد معمولی است و کار خاصی انجام نمی دهد، بعد از مرحله 2 ، متد مرحله 3 صدا زده می شود و اگر کاربر پریمیوم بود ( به صورت آنلاین بررسی می شود) دیگر نیازی به خرید نیست، این متد هم پریمیوم بودن کاربر رو چک میکنه.
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
virus2009
1 - تعریف متغییر ها
2- درگاه درون پرداخت را راه اندازی می کند و در صورت نصب بودن بازار Setup finished. نمایش داده می شود. و می توانید پرداخت انجام دهید
3- بررسی کردن پریمیوم بودن کاربر، اگر کاربر پریمیوم باشد mIsPremium = true می شود.
3-ب : اینم که دکمه خرید است.
3-سی : وقتی صفحه درگاه پرداخت بسته می شود این متد اجرا می شود و جواب برگشت داده شده از درگاه را پردازش می کند.
3-دی : این متد کلا بلا استفاده است و همیشه true بر می گردونه، شکل درستش هم زیاد کاربرد نداره چون شما موقع خرید developer payload رو یک رشته ثابت تعریف کردی، ولی برای اطمینان می تونی با شکل درست این متد payload برگشتی از بازار رو با payload ـه موقع خرید چک کنی. ( که همیشه true است !!)
4-1 : این یک listener برای نتیجه خرید است، اگر خرید موفقیت آمیز باشید Purchase successful. نمایش داده می شود.
4-2 : موقع بستن اکتیوی این متد صدا زده می شود و چون دیگر نیازی به درگاه پرداخت ندارید آن را می بندد.
4.3 : این یک متد معمولی است و کار خاصی انجام نمی دهد، بعد از مرحله 2 ، متد مرحله 3 صدا زده می شود و اگر کاربر پریمیوم بود ( به صورت آنلاین بررسی می شود) دیگر نیازی به خرید نیست، این متد هم پریمیوم بودن کاربر رو چک میکنه.
دوست عزیز خیلی ممنون ، حیف فقط یه بار میتونم دکمه تشکر رو بزنم برات:قلب:
-
1 ضمیمه
نقل قول: پرداخت درون برنامه ای
دوستان من از پرداخت درون برنامه ای استفاده میکنم (از کدهای آقا حامد)
برنامه اکثرا خوب و کامل اجرا میشه اما متاسفانه در بعضی اجرا ها به محض کلیک بر روی کلید خرید از بازار با خطای زیر موجه میشم :
دلیل این خطا چیه ؟!:اشتباه:
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedg1366
دوستان من از پرداخت درون برنامه ای استفاده میکنم (از کدهای آقا حامد)
برنامه اکثرا خوب و کامل اجرا میشه اما متاسفانه در بعضی اجرا ها به محض کلیک بر روی کلید خرید از بازار با خطای زیر موجه میشم :
دلیل این خطا چیه ؟!:اشتباه:
یعنی چی در بعضی اجراها؟
یعنی روی بعضی از گوشی ها امتحان کردید و درست کار کرد و روی این دستگاه درست کار نکرد؟؟؟
یا اینکه چند بار run کردید درست کارد کرد اما بعضی موقع درست کار نمیکنه؟
-
نقل قول: پرداخت درون برنامه ای
نقل قول:
نوشته شده توسط
hamedjj
یعنی چی در بعضی اجراها؟
یعنی روی بعضی از گوشی ها امتحان کردید و درست کار کرد و روی این دستگاه درست کار نکرد؟؟؟
یا اینکه چند بار run کردید درست کارد کرد اما بعضی موقع درست کار نمیکنه؟
مورد سوم که فرمودید اتفاق میوفته در حین اجرا چندبار خرید به خوبی و خوشی انجام میشه حتی ممکنه چند ساعت خرید انجام بدم و هیچ مشکلی پیش نیاد .همچنین دیدم بعضی مواقع هم بعد از چند خرید و یا در اولین خرید خطا داده و از برنامه خارج شده
(البته ناگفته نمونه میزان مبلغ رو 0 گذاشتم برای تست)
-
1 ضمیمه
نقل قول: پرداخت درون برنامه ای
راستی حامد جان یه سوال آماتوری دارم (اولین باره دارم از پرداخت درون برنامه ای استفاده میکنم شرمنده دیگه)
این درگاه درون پرداخت بازار بخاطر مبلغ 0 هس اینطوریه؟ اگه مبلغ عوض بشه از این فرم در میاد ؟