رفتن به مطلب

⚠️ جلوگیری از هک درون پرداخت کافه بازار ⚠️


MrMedia

ارسال‌های توصیه شده

سلام به دوستان عزیز
این آموزش برای امن کردن درون پرداخت کافه بازار با توجه به مستندات خود کافه بازار هستش.
اگه نمی دونید api کافه بازار چیه کافیه به لینک زیر یه سر بزنی 😉


https://developers.cafebazaar.ir/fa/guidelines/in-app-billing/api#
 

برای راه اندازی API ابتدا باید یک Client ایجاد کنید. هر Client شامل اطلاعاتی است که از طرف بازار برای شناخته‌شدن یک کاربر API لازم است. برای ساخت Client به پیشخان بازار مراجعه نمایید و از منو تنظیمات، قسمت API توسعه‌دهندگان روی گزینه کلاینت جدید کلیک کنید.
در پنجرهٔ باز شده، مقدار مورد نظر خود برای Redirect URI را وارد کنید. این آدرس، مشخص می‌کند که بازار در پاسخ به درخواست اولیه شما برای دریافت Authorization Code، باید پاسخ را به چه آدرسی بفرستد.
به عکس زیر توجه کنید:


1.jpg.5d2041f08087cedca6328c26e021054b.jpg


ما آدرس فایل php که برای چک کردن و مصرف خرید کاربران کافه بازار هستش رو درج کردیم (پایین پست فایل رو میزارم) و بعد از زدن دکمه ایجاد کلاینت، کلاینت ایجاد میشه و با عکسی مشابه عکس زیر مواجه میشید.


2.jpg.aa1ad9a4b99a9e99eb63fb290146b7a5.jpg

⚠️برای امنیت برنامه خودم مقادیر رو در عکس مخدوش کردم ⚠️
 


خب حالا دو مقدار Client Id و Client Secret رو یکجا کپی کنید چون نیازمون میشه

حالا بجای سخت کار می رسیم!! به اینجای کار با خوب دقت کنید

در این مرحله در مرورگر خود یک New Tab یا پنجره جدید باز کنید و آدرس زیر را تکمیل کنید:

https://pardakht.cafebazaar.ir/devapi/v2/auth/authorize/?response_type=code&access_type=offline&redirect_uri=&client_id=

خب چطور باید تکمیلش کنیم؟ ببینید دوستان این همون متد GET هستش شما باید جلوی مساوی هایی که خالی هستش رو پر کنید
جلوی redirect_uri همون آدرس فایل php که برای ساخت کلاینت دادیم رو میزاریم (عکس 1) و جلوی client_id هم مقداری که در عکس 2 زیر همون عنوان می بینید رو درج می کنیم.
پس با این حساب آدرس ما میشه این:

https://pardakht.cafebazaar.ir/devapi/v2/auth/authorize/?response_type=code&access_type=offline&redirect_uri=https://website.ir/bazaar.php&client_id=JFNF85BFPHKSVBJ67CNNDMMSUYHWNKRLLJDGRK


خب حالا آدرس رو در مرورگر وارد کنید و Enter را بزنید تا صفحه لود شود
بعد از لود شدن صفحه با چنین صفحه ای مواجه می شوید:


spacer.png


حالا کافیه روی تایید کلیک کنید تا به آدرس فایل php که برای ساخت کلاینت استفاده کردیم (عکس 1) ارجاع داده بشیم.
خب به آدرس مرورگر نگاه کنید آدرس مرورگر شما چیزی شبیه به این هستش:

https://website.ir/bazaar.php?code=GWObRK06KHLr8pCQzDXJ9hcDdSC3eV


حالا مقداری که جلوی =code هستش رو یجا کپی کنید
خب تا اینجا ما 3 تا مقدارو گفتیم یجا کپی کنید، یادتونه؟؟؟ اون مقادیر اینا بودن: Client Id و Client Secret و code
اون مقادیر الان به کار میاد:
باید اونا رو در کد زیر جایگزین کنی

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://pardakht.cafebazaar.ir/devapi/v2/auth/token/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array(
    'grant_type' => 'authorization_code',
    'code' => 'کد',
    'client_id' => 'کلاینت آیدی',
    'client_secret' => 'کلاینت سکرت',
    'redirect_uri' => 'آدرس فایل پی اچ پی'
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}


خب فایل رو با فرمت php ذخیره کن و در هاستت آپلود کن و در مرورگر آدرسشو وارد و Enter رو بزن تا صفحه بارگذاری بشه
این کار Postman خیلی راحت تر هستش ولی گفتم شاید برخی از دوستان آشنایی ندارند با این روش جلو میریم و اگه با Postman آشنایی داری با کد curl زیر انجامش بده:

curl --location --request POST 'https://pardakht.cafebazaar.ir/devapi/v2/auth/token/' \
--form 'grant_type="authorization_code"' \
--form 'code="کد"' \
--form 'client_id="کلاینت آیدی"' \
--form 'client_secret="کلاینت سکرت"' \
--form 'redirect_uri="آدرس فایل پی اچ پی"'


خب حالا  برگردیم به مرورگرمون که بارگذاری شده
نتیجه به صورت متنی در قالب JSON دریافت می‌شه که حاوی access token ، زمان انقضا ، نوع توکن مورد‌نظر، scope و refresh token هستش.
ما از این مقادیر جیسون فقط به refresh token نیاز داریم پس یجا کپی کن.

از این جا به بعد دیگه آسون میشه 🥰
خب یادتونه یک آدرس برای ساخت کلاینت وارد کرده بودیم؟ (عکس 1) که از آدرس https://website.ir/bazaar.php استفاده کرده بودیم؟
این کد class که باید درون این فایل قرار بگیره:
 

<?php
/**
 * Class cafebazaar.ir
 * Author: milad kantoori
 */

define("clientId", "کلاینت آیدی");
define("clientSecret", "کلاینت سکرت");
define("refreshToken", "رفرش توکن");

class cafebazaar
{
    private $access_token = '';
    public function __construct()
    {
        $this->refreshTokenRequest();
    }

    function checkPurchase($package_name, $product_id, $purchase_token, $userid)
    {

        $url = "https://pardakht.cafebazaar.ir/devapi/v2/api/validate/$package_name/inapp/$product_id/purchases/$purchase_token/?access_token=" . $this->access_token;

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FAILONERROR, true);

        $response = curl_exec($ch);
        curl_close($ch);
        $responseData = json_decode($response, true);

        if (isset($responseData['consumptionState'])) {
            if ($responseData['consumptionState'] == 1 && $responseData['purchaseState'] == 0) {
                if ($this->consumePurchase($package_name, $purchase_token) == true && $responseData['developerPayload'] == $userid) {
                    return true;
                }
            }
        }
        return false;
    }

    private function consumePurchase($package_name, $purchase_token)
    {
        $url = "https://pardakht.cafebazaar.ir/devapi/v2/api/consume/$package_name/purchases/?access_token=" . $this->access_token;
        $data = [
            'token' => $purchase_token
        ];

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($httpCode === 200) {
            return true;
        } else {
            return false;
        }
    }

    private function refreshTokenRequest()
    {
        $url = "https://pardakht.cafebazaar.ir/devapi/v2/auth/token/";
        $data = [
            'grant_type' => 'refresh_token',
            'client_id' => clientId,
            'client_secret' => clientSecret,
            'refresh_token' => refreshToken
        ];

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        $responseData = json_decode($response, true);

        if (isset($responseData['access_token'])) {
            $this->access_token = $responseData['access_token'];
        }
        curl_close($ch);
    }

}

?>


خب در خط 7 و 8 و 9 مقادیری که گفتم کپی کن رو جایگزین کنید و تمام 🥳
دیگه می مونه فقط نحوه استفاده از این کلاس ولی چندتا نکنه هست که باید بهتون بگم:

چرا بصورت class نوشتم کدرو؟ چون می تونیم در همه پروژه هامون ازش استفاده کنیم و نیازی به کپی فایل و دستکاری و... نداره (یکی از مزیت های شی گرائی اینه)
چرا مصرف خرید درسمت سرور انجام میشه؟ چون من معتقدم که هیچ کار مهمی  نباید برای امنیت در سمت کلاینت (کاربر) انجام بشه و کاربر فقط باید مشاهده کننده باشه!!!

خب چطور استفاده کنیم از این کلاس؟؟؟
شما درون فایل php که به اپلیکیشنت وصله کافیه این class رو اینجوری فراخونی کنی:

require_once('bazar.php');
$cafebazaar = new cafebazaar();

 

بعد کافیه هر جایی از کدت خواستی خرید کاربر رو بررسی کنی این کد رو استفاده کنی:

$result = $cafebazaar->checkPurchase($_REQUEST['package_name'], $_REQUEST['product_id'], $_REQUEST['purchase_token'], $_REQUEST['userid']);
if ($result) {
    // خرید معتبر است
}else{
    // خرید جعلی است
}


خب کد که کاملا مشخص هستش و کافیه شما در جاهایی نوشته شده خرید معتبر و جعلی، کدهای خودت رو بنویسی.

حالا نکته آخر که باید سمت اپلیکیشن انجام بدی که مهم هستش پس خوب توجه کن:

شما در سمت کاربر یا همون اپلیکیشن باید این موارد رو انجام بدی:
1. حتما و حتما وقتی که از کتابخونه Poolaky یک متغییر PoolakeyPurchaseRequest تعریف کردی از Payload استفاده کن مقدارش رو هم آیدی یکتا کاربر بزار (android_id)
2. موقعی که میخای به سمت سرور درخواست بدی باید موارد زیر رو ارسال کنی:
پکیج نیم
آیدی محصول
توکن خرید
آیدی یکتا کاربر

درخواست به صورت GET فرستاده بشه و با کلید های:
🔑 package_name
🔑 product_id
🔑 purchase_token
🔑 userid


برای مثال:

https://website.ir/api.php?package_name=پکیج_نیم&product_id=آیدی_محصول&purchase_token=توکن_خرید&userid=آیدی_یکتا_کاربر


در مثال بالا مواردی که فارسی هستند باید جایگزین شه
همه موارد کاملا مشخصه فقط شاید توکن خرید براتون ناآشنا باشه 🤔

بعد از خرید موفق از بازار یک تابع که با اول نام ایونتی که شما موقع تعریف کتابخونه پولکی داشتید فراخونی میشه. ما اینجا فکر میکنیم نام این ایونت یا رویداد رو گذاشته بودیم bazaar پس این تابع بعد از خرید موفق فراخونی میشه:

Private Sub bazaar_PurchaseSucceed (PurchaseInfo As PoolakeyPurchaseInfo)
		PToken = PurchaseInfo.PurchaseToken
End Sub


در مثال بالا PToken همون مقدار string توکن خرید هستش که باید موقع بررسی خرید ارسال کنیم.
دیگه شما از چه کتابخونه ای برای ارسال مقادیر با متد GET استفاده می کنید با خودتونه. میتونی کتابخونه پیشفرض b4a باشه یا کتابخونه ای که خرید کردین 🥰

امیدوارم این آموزش به کارتون بیاد 🤩

و اینکه این فروم مکانی امن و رایگان برای یادگیری هستش، اگه حس میکنی نه تنها این مطلب بلکه مطالب، کتابخونه ها رایگان  و... انجمن بهت کمک کرده ممنون میشم به انجمن خودتون از طریق لینک زیر به مبلغ دلخواه کمک کنید.

لینک حمایت مالی جهت حفظ و ارتقا سیستم انجمن و ارتقا کتابخانه ها + به روزرسانی و حمایت از تیم برنامه نویسی





 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

عالی و کامل. ممنون که به اشتراک گذاشتین:give_rose:

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۲/۸/۲۷ در ۱۷:۵۰، MrMedia گفته است:

سلام به دوستان عزیز
این آموزش برای امن کردن درون پرداخت کافه بازار با توجه به مستندات خود کافه بازار هستش.
اگه نمی دونید api کافه بازار چیه کافیه به لینک زیر یه سر بزنی 😉


https://developers.cafebazaar.ir/fa/guidelines/in-app-billing/api#
 

برای راه اندازی API ابتدا باید یک Client ایجاد کنید. هر Client شامل اطلاعاتی است که از طرف بازار برای شناخته‌شدن یک کاربر API لازم است. برای ساخت Client به پیشخان بازار مراجعه نمایید و از منو تنظیمات، قسمت API توسعه‌دهندگان روی گزینه کلاینت جدید کلیک کنید.
در پنجرهٔ باز شده، مقدار مورد نظر خود برای Redirect URI را وارد کنید. این آدرس، مشخص می‌کند که بازار در پاسخ به درخواست اولیه شما برای دریافت Authorization Code، باید پاسخ را به چه آدرسی بفرستد.
به عکس زیر توجه کنید:


1.jpg.5d2041f08087cedca6328c26e021054b.jpg


ما آدرس فایل php که برای چک کردن و مصرف خرید کاربران کافه بازار هستش رو درج کردیم (پایین پست فایل رو میزارم) و بعد از زدن دکمه ایجاد کلاینت، کلاینت ایجاد میشه و با عکسی مشابه عکس زیر مواجه میشید.


2.jpg.aa1ad9a4b99a9e99eb63fb290146b7a5.jpg

⚠️برای امنیت برنامه خودم مقادیر رو در عکس مخدوش کردم ⚠️
 


خب حالا دو مقدار Client Id و Client Secret رو یکجا کپی کنید چون نیازمون میشه

حالا بجای سخت کار می رسیم!! به اینجای کار با خوب دقت کنید

در این مرحله در مرورگر خود یک New Tab یا پنجره جدید باز کنید و آدرس زیر را تکمیل کنید:

https://pardakht.cafebazaar.ir/devapi/v2/auth/authorize/?response_type=code&access_type=offline&redirect_uri=&client_id=

خب چطور باید تکمیلش کنیم؟ ببینید دوستان این همون متد GET هستش شما باید جلوی مساوی هایی که خالی هستش رو پر کنید
جلوی redirect_uri همون آدرس فایل php که برای ساخت کلاینت دادیم رو میزاریم (عکس 1) و جلوی client_id هم مقداری که در عکس 2 زیر همون عنوان می بینید رو درج می کنیم.
پس با این حساب آدرس ما میشه این:

https://pardakht.cafebazaar.ir/devapi/v2/auth/authorize/?response_type=code&access_type=offline&redirect_uri=https://website.ir/bazaar.php&client_id=JFNF85BFPHKSVBJ67CNNDMMSUYHWNKRLLJDGRK


خب حالا آدرس رو در مرورگر وارد کنید و Enter را بزنید تا صفحه لود شود
بعد از لود شدن صفحه با چنین صفحه ای مواجه می شوید:


spacer.png


حالا کافیه روی تایید کلیک کنید تا به آدرس فایل php که برای ساخت کلاینت استفاده کردیم (عکس 1) ارجاع داده بشیم.
خب به آدرس مرورگر نگاه کنید آدرس مرورگر شما چیزی شبیه به این هستش:

https://website.ir/bazaar.php?code=GWObRK06KHLr8pCQzDXJ9hcDdSC3eV


حالا مقداری که جلوی =code هستش رو یجا کپی کنید
خب تا اینجا ما 3 تا مقدارو گفتیم یجا کپی کنید، یادتونه؟؟؟ اون مقادیر اینا بودن: Client Id و Client Secret و code
اون مقادیر الان به کار میاد:
باید اونا رو در کد زیر جایگزین کنی

<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://pardakht.cafebazaar.ir/devapi/v2/auth/token/",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => array(
    'grant_type' => 'authorization_code',
    'code' => 'کد',
    'client_id' => 'کلاینت آیدی',
    'client_secret' => 'کلاینت سکرت',
    'redirect_uri' => 'آدرس فایل پی اچ پی'
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}


خب فایل رو با فرمت php ذخیره کن و در هاستت آپلود کن و در مرورگر آدرسشو وارد و Enter رو بزن تا صفحه بارگذاری بشه
این کار Postman خیلی راحت تر هستش ولی گفتم شاید برخی از دوستان آشنایی ندارند با این روش جلو میریم و اگه با Postman آشنایی داری با کد curl زیر انجامش بده:

curl --location --request POST 'https://pardakht.cafebazaar.ir/devapi/v2/auth/token/' \
--form 'grant_type="authorization_code"' \
--form 'code="کد"' \
--form 'client_id="کلاینت آیدی"' \
--form 'client_secret="کلاینت سکرت"' \
--form 'redirect_uri="آدرس فایل پی اچ پی"'


خب حالا  برگردیم به مرورگرمون که بارگذاری شده
نتیجه به صورت متنی در قالب JSON دریافت می‌شه که حاوی access token ، زمان انقضا ، نوع توکن مورد‌نظر، scope و refresh token هستش.
ما از این مقادیر جیسون فقط به refresh token نیاز داریم پس یجا کپی کن.

از این جا به بعد دیگه آسون میشه 🥰
خب یادتونه یک آدرس برای ساخت کلاینت وارد کرده بودیم؟ (عکس 1) که از آدرس https://website.ir/bazaar.php استفاده کرده بودیم؟
این کد class که باید درون این فایل قرار بگیره:
 

<?php
/**
 * Class cafebazaar.ir
 * Author: milad kantoori
 */

define("clientId", "کلاینت آیدی");
define("clientSecret", "کلاینت سکرت");
define("refreshToken", "رفرش توکن");

class cafebazaar
{
    private $access_token = '';
    public function __construct()
    {
        $this->refreshTokenRequest();
    }

    function checkPurchase($package_name, $product_id, $purchase_token, $userid)
    {

        $url = "https://pardakht.cafebazaar.ir/devapi/v2/api/validate/$package_name/inapp/$product_id/purchases/$purchase_token/?access_token=" . $this->access_token;

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FAILONERROR, true);

        $response = curl_exec($ch);
        curl_close($ch);
        $responseData = json_decode($response, true);

        if (isset($responseData['consumptionState'])) {
            if ($responseData['consumptionState'] == 1 && $responseData['purchaseState'] == 0) {
                if ($this->consumePurchase($package_name, $purchase_token) == true && $responseData['developerPayload'] == $userid) {
                    return true;
                }
            }
        }
        return false;
    }

    private function consumePurchase($package_name, $purchase_token)
    {
        $url = "https://pardakht.cafebazaar.ir/devapi/v2/api/consume/$package_name/purchases/?access_token=" . $this->access_token;
        $data = [
            'token' => $purchase_token
        ];

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
        curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        if ($httpCode === 200) {
            return true;
        } else {
            return false;
        }
    }

    private function refreshTokenRequest()
    {
        $url = "https://pardakht.cafebazaar.ir/devapi/v2/auth/token/";
        $data = [
            'grant_type' => 'refresh_token',
            'client_id' => clientId,
            'client_secret' => clientSecret,
            'refresh_token' => refreshToken
        ];

        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

        $response = curl_exec($ch);
        $responseData = json_decode($response, true);

        if (isset($responseData['access_token'])) {
            $this->access_token = $responseData['access_token'];
        }
        curl_close($ch);
    }

}

?>


خب در خط 7 و 8 و 9 مقادیری که گفتم کپی کن رو جایگزین کنید و تمام 🥳
دیگه می مونه فقط نحوه استفاده از این کلاس ولی چندتا نکنه هست که باید بهتون بگم:

چرا بصورت class نوشتم کدرو؟ چون می تونیم در همه پروژه هامون ازش استفاده کنیم و نیازی به کپی فایل و دستکاری و... نداره (یکی از مزیت های شی گرائی اینه)
چرا مصرف خرید درسمت سرور انجام میشه؟ چون من معتقدم که هیچ کار مهمی  نباید برای امنیت در سمت کلاینت (کاربر) انجام بشه و کاربر فقط باید مشاهده کننده باشه!!!

خب چطور استفاده کنیم از این کلاس؟؟؟
شما درون فایل php که به اپلیکیشنت وصله کافیه این class رو اینجوری فراخونی کنی:

require_once('bazar.php');
$cafebazaar = new cafebazaar();

 

بعد کافیه هر جایی از کدت خواستی خرید کاربر رو بررسی کنی این کد رو استفاده کنی:

$result = $cafebazaar->checkPurchase($_REQUEST['package_name'], $_REQUEST['product_id'], $_REQUEST['purchase_token'], $_REQUEST['userid']);
if ($result) {
    // خرید معتبر است
}else{
    // خرید جعلی است
}


خب کد که کاملا مشخص هستش و کافیه شما در جاهایی نوشته شده خرید معتبر و جعلی، کدهای خودت رو بنویسی.

حالا نکته آخر که باید سمت اپلیکیشن انجام بدی که مهم هستش پس خوب توجه کن:

شما در سمت کاربر یا همون اپلیکیشن باید این موارد رو انجام بدی:
1. حتما و حتما وقتی که از کتابخونه Poolaky یک متغییر PoolakeyPurchaseRequest تعریف کردی از Payload استفاده کن مقدارش رو هم آیدی یکتا کاربر بزار (android_id)
2. موقعی که میخای به سمت سرور درخواست بدی باید موارد زیر رو ارسال کنی:
پکیج نیم
آیدی محصول
توکن خرید
آیدی یکتا کاربر

درخواست به صورت GET فرستاده بشه و با کلید های:
🔑 package_name
🔑 product_id
🔑 purchase_token
🔑 userid


برای مثال:

https://website.ir/api.php?package_name=پکیج_نیم&product_id=آیدی_محصول&purchase_token=توکن_خرید&userid=آیدی_یکتا_کاربر


در مثال بالا مواردی که فارسی هستند باید جایگزین شه
همه موارد کاملا مشخصه فقط شاید توکن خرید براتون ناآشنا باشه 🤔

بعد از خرید موفق از بازار یک تابع که با اول نام ایونتی که شما موقع تعریف کتابخونه پولکی داشتید فراخونی میشه. ما اینجا فکر میکنیم نام این ایونت یا رویداد رو گذاشته بودیم bazaar پس این تابع بعد از خرید موفق فراخونی میشه:

Private Sub bazaar_PurchaseSucceed (PurchaseInfo As PoolakeyPurchaseInfo)
		PToken = PurchaseInfo.PurchaseToken
End Sub


در مثال بالا PToken همون مقدار string توکن خرید هستش که باید موقع بررسی خرید ارسال کنیم.
دیگه شما از چه کتابخونه ای برای ارسال مقادیر با متد GET استفاده می کنید با خودتونه. میتونی کتابخونه پیشفرض b4a باشه یا کتابخونه ای که خرید کردین 🥰

امیدوارم این آموزش به کارتون بیاد 🤩

و اینکه این فروم مکانی امن و رایگان برای یادگیری هستش، اگه حس میکنی نه تنها این مطلب بلکه مطالب، کتابخونه ها رایگان  و... انجمن بهت کمک کرده ممنون میشم به انجمن خودتون از طریق لینک زیر به مبلغ دلخواه کمک کنید.

لینک حمایت مالی جهت حفظ و ارتقا سیستم انجمن و ارتقا کتابخانه ها + به روزرسانی و حمایت از تیم برنامه نویسی





 

دمت گرم

شیر مادر نان پدر حلالت باشه

واقعا عالیییییییییییی بود 🥰

لینک ارسال
به اشتراک گذاری در سایت های دیگر

سلام دوستان من همه مراحل رو رفتم ولی برای چک کردن خرید مشکل دارم. یعنی فکر کنم قسمت آخرش مشکل دارم متد get و.. منظور چی هست؟ از okhttp استفاده کنیم باید؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
  • اضافه کردن...