رفتن به مطلب

محمدرضا شاهپیری

مدیر کل سایت
  • تعداد ارسال ها

    4,205
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    872

تمامی مطالب نوشته شده توسط محمدرضا شاهپیری

  1. سلام به همه برنامه نویسای عزیز. بعد مدتها یه آموزش بزاریم کیف کنیم همونطور که مطلع هستید بازار خیلی وقته درون پرداخت رو با پولکی انجام میده و این کتابخونه مخصوص کاتلین هست و به راحتی نمیتونید اونو مستقیم توی جاوا استفاده کنید. برا همین یه کلاس واسط که به اصطلاح از دیزاین پترن پ * ر * و * ک *س * ی استفاده شده برای دوستان آماده کردیم که راحت بتونن اونو توی جاوا استفاده کنن. دقت کنید که حتما باید کاتلین توی پروژه ست شده باشه. کلاس کاتلین زیر رو به پروژه اضافه کنید و اسمشو PoolakeyWrapper بزارید. package com.example.myapplication import android.content.Context import androidx.activity.result.ActivityResultRegistry import ir.cafebazaar.poolakey.Connection import ir.cafebazaar.poolakey.Payment import ir.cafebazaar.poolakey.config.PaymentConfiguration import ir.cafebazaar.poolakey.config.SecurityCheck import ir.cafebazaar.poolakey.entity.PurchaseInfo import ir.cafebazaar.poolakey.request.PurchaseRequest /** * Created by Mohamadreza Shahpiri on 6/18/2023. * Answercenter.ir *************************************************** */ class PoolakeyWrapper( publicKey: String, context: Context, ) { private val securityCheck = SecurityCheck.Enable(rsaPublicKey = publicKey) private val paymentConfig = PaymentConfiguration(localSecurityCheck = securityCheck) private val payment = Payment(context = context.applicationContext, config = paymentConfig) private var connection:Connection?=null fun connect(connectionCallback: ConnectionCallback){ connection=payment.connect { connectionSucceed{ connectionCallback.connectionSucceed() } connectionFailed { connectionCallback.connectionFailed(it) } disconnected { connectionCallback.disconnected() } } } fun purchaseProduct(registry: ActivityResultRegistry,request: PurchaseRequest,purchaseCallback: PurchaseCallback){ payment.purchaseProduct(registry,request){ purchaseFlowBegan { purchaseCallback.purchaseFlowBegan() } failedToBeginFlow { purchaseCallback.failedToBeginFlow(it) } purchaseSucceed { purchaseCallback.purchaseSucceed(it) } purchaseCanceled { purchaseCallback.purchaseCanceled() } purchaseFailed { purchaseCallback.purchaseFailed(it) } } } fun subscribeProduct(registry: ActivityResultRegistry,request: PurchaseRequest,purchaseCallback: PurchaseCallback){ payment.subscribeProduct(registry,request){ purchaseFlowBegan { purchaseCallback.purchaseFlowBegan() } failedToBeginFlow { purchaseCallback.failedToBeginFlow(it) } purchaseSucceed { purchaseCallback.purchaseSucceed(it) } purchaseCanceled { purchaseCallback.purchaseCanceled() } purchaseFailed { purchaseCallback.purchaseFailed(it) } } } fun consumeProduct(purchaseToken: String,consumeCallback: ConsumeCallback){ payment.consumeProduct(purchaseToken){ consumeSucceed { consumeCallback.consumeSucceed() } consumeFailed { consumeCallback.consumeFailed(it) } } } fun getPurchasedProducts(queryCallback: QueryCallback){ payment.getPurchasedProducts { querySucceed { queryCallback.querySucceed(it) } queryFailed { queryCallback.queryFailed(it) } } } fun getSubscribedProducts(queryCallback: QueryCallback){ payment.getSubscribedProducts { querySucceed { queryCallback.querySucceed(it) } queryFailed { queryCallback.queryFailed(it) } } } fun disconnect(){ connection?.disconnect() } interface ConnectionCallback{ fun connectionSucceed() fun connectionFailed(throwable:Throwable) fun disconnected() } interface PurchaseCallback{ fun purchaseFlowBegan() fun failedToBeginFlow(throwable:Throwable) fun purchaseSucceed(info: PurchaseInfo) fun purchaseCanceled() fun purchaseFailed(throwable:Throwable) } interface ConsumeCallback{ fun consumeSucceed() fun consumeFailed(throwable:Throwable) } interface QueryCallback{ fun querySucceed(items:List<PurchaseInfo>) fun queryFailed(throwable:Throwable) } } حالا توی جاوا به شکل زیر ازش استفاده کنید. مثلا برای اینشیالایز. PoolakeyWrapper poolakeyWrapper=new PoolakeyWrapper("publicKey",this); poolakeyWrapper.connect(new PoolakeyWrapper.ConnectionCallback() { @Override public void connectionSucceed() { } @Override public void connectionFailed(@NonNull Throwable throwable) { } @Override public void disconnected() { } }); و برای خرید PurchaseRequest purchaseRequest=new PurchaseRequest( "productId","payload","dynamicPriceToken" ); poolakeyWrapper.purchaseProduct(getActivityResultRegistry(), purchaseRequest, new PoolakeyWrapper.PurchaseCallback() { @Override public void purchaseFlowBegan() { } @Override public void failedToBeginFlow(@NonNull Throwable throwable) { } @Override public void purchaseSucceed(@NonNull PurchaseInfo info) { } @Override public void purchaseCanceled() { } @Override public void purchaseFailed(@NonNull Throwable throwable) { } }); بقیه متدها رو هم به راحتی میتونید استفاده کنید. مانا باشید
  2. سلام ودرود. درمورد مشکل اول دستور disableItemChangeAnimation رو تست کنید و در مورد مسأله دوم دستور AdapterPosition
  3. سلام و درود. از قسمت مدیریت خرید میتونید دانلود کنید.
  4. سلام و درود. لینک درسته عزیز. پارس پسک پک به حجم فایل گیر میده که باید پلن پولی برای cdn فعال بشه. احتمالا cdn رو ببریم روی کلودفلر یا فایلهای دانلودی رو جابه جا کنیم
  5. سلام و درود. از منوی فروشگاه مدیریت خرید دانلود کنید.
  6. سلام و درود. آخرین نسخه بیسیک و sdk رو از سایت مرجع بگیرید و پروژه رو ران کنید
  7. سلام و درود. کتابخونه بروزرسانی شد. نسخه 2.1. از فلگ FLAG_IMMUTABLE باید استفاده کنید
  8. سلام و درود. از خطا مشخصه که کتابخونه ChromCustomTabs داره از پکیجهای قدیمی support استفاده میکنه. باید نسخه به روز کتابخونه رو بگیرید یا اینکه jetifireکنید
  9. سلام و درود. آموزش پیاده سازی توی ویدئو ها هست
  10. سلام و درود. نسخه آخر sdk رو از سایت مرجع دانلود و جایگزین کنید و api رو برای b4a روی ۳۱ بزارید
  11. متاسفانه فعلا امکان و وقتشو ندارم در صورت مشخص بودن خطا و علت دقیق میشه روش کار کرد. رو دیوایسایی که من دارم هم مورد خاصی وجود نداره
  12. AlarmManager تو اندروید 12 و 13 خیلی تغییرات کرده و متاسفانه هنوز وقت نکردم کتابخونه رو به روز کنم. پس این مشکلات احتمالا تو کتابخونه هست. سعی میکنم تو اسرع وقت کتابخونه رو آپدیت کنم.
  13. سلام و درود برای پاک کردن آیتمها از دستور زیر استفاده کنید. در ضمن هر پیج باید آداپتر و لیست جداگونه داشته باشه listRecy.Clear pr.notifyDataSetChanged
  14. ssl رایگان فعال نکنید عزیز. هزینه ssl برای یه دامنه درسال زیاد نمیشه. بهتره برای جلوگیری از این موارد از یه ssl معتبر استفاده کنید که امنیت ارتباطات هم به خطر نیفته
  15. سلام و درود مشکل دقیقا چی هست؟ خطای خاصی بر میگرده؟ نیاز به اطلاعات دقیقتر هست
  16. سلام و درود باید از متد getItemViewType استفاده کنید. توی onCreateViewHolder هم میتونید viewtype رو بگیرید و ویوی دلخواه رو پاس بدین به onBindViewHolder
  17. سلام و درود. نسخه جدید آپلود شد.(4.6) سرعت لود بهبود پیدا کرده و لودینگ اضافه شده
  18. سلام و درود. کتابخونه ها تون تداخل داره اگه از httputils یا کتابخونه مشابه استفاده میکنید غیر فعال کنید
  19. سلام و درود. من تست نکردم sdk جدید نسخه ها رو. اگه نسخه کتابخونه ها آپدیت شده دیگه نیازی به جایگزینی نیست جدیدا جواب میده.
  20. سلام. مشکل از ssl هست. ssl رایگان تو اندروید مشکل داره باید یه معتبرشو خریداری کنید که مشکل گواهی نداشته باشه.
  21. متد consumeAsync رو توی یه تابع جداگونه بنویسید و دستور CallSubDelayed اونو صدا بزنید. تو متد onIabPurchaseFinished مستقیم از myketBilling استفاده نکنید. تست کنید و نتیجه رو اعلام کنید
  22. ۱:فقط برای لیست خریدها این خطا هست؟ ۲: خطا رو پیوست کنید
  23. من روی گوشی Redmi note 9s با اندروید 11 تست کردم موردی نبود.سورسی که پیوست شده رو تست کنید.
×
×
  • اضافه کردن...