پرچمداران

  1. Ramtin

    Ramtin

    مدیر کل


    • امتیاز: پسندیدن

      1

    • تعداد ارسال ها

      240



مطالب محبوب

در حال نمایش بیشترین مطالب پسند شده در سه شنبه, 7 فروردین 1397 در همه بخش ها

  1. 1 پسند
    به نام پروردگار یگانه سلام فراوان خدمت تمامی وین نویسی ها، امیدوارم حالتون خوب باشه. چندی پیش داخل تاپیک های انجمن در مورد پرداخت های درون برنامه ای بعضی از دوستان سوالاتی پرسیده بودند که البته حسام کاشفی عزیز آموزش جامعی رو درباره روش کسب درآمد از فروشگاه مایکروسافت رو توضیح داده، این آموزش رو می تونید از آدرس زیر فرا بگیرید: آموزش کسب درآمد از ویندوز استور در این آموزش، شما با استفاده از درگاه زرین پال می توانید برای نرم افزار خود یک پرداخت درون برنامه ای کوچک راه اندازی کنید. مواردی که شما باید پیش از آنها داشته باشید: 1. مرچنت کد زرین پال(کد درگاه پرداخت): کدی یکتا و 36 کاراکتری است که زرین پال به ازای هر درخواست درگاه پرداخت به پذیرنده اختصاص می دهد. 2. سایتی برای خودتان 3. ویژوال استودیو 2015 + SDK ویندوز 10 نکته: این آموزش بر روی ویندوز/فون 8.1 عملی نیست، برای عملی کردن این آموزش برای ویندوز/فون 8.1 شما باید وبسایتی با هاست ویندوزی تهیه کنید و با استفاده از ASP برای خود واسطه ای ایجاد نمایید تا بتوانید در ویندوز/فون 8.1 از وب سرویس استفاده کنید. خب چنانچه هنوز در زرین پال عضو نشده اید می توانید از طریق لینک زیر استفاده کنید: عضویت در زرین پال نکته: شاید برای اولین بار که عضو زرین پال می شوید یا درگاه سفارش میدهید، باید تمامی اطلاعات خود اعم از کپی کارت ملی(عکس از کارت ملی نیز بگیرید قابل قبول است) ، سن و ... را وارد نمایید. پس از تایید زرین پال و ساخت کیف پول برای شما: برای درخواست درگاه زرین پال بعد از عضویت به پنل کاربری خود رفته و در منو سمت راست گزینه درگاه های پرداخت را انتخاب کنید. در این صفحه روی "درخواست درگاه پرداخت" کلیک کنید. اطلاعات بالا را باید تکمیل و ثبت نمایید. نکته: هر سایت فقط می تواند یک درگاه پرداخت داشته باشد. نکته: فرض کنید شما یک وبسایت با هاست لینوکسی دارید اکنون یک وبسایت با هاست ویندوزی ایجاد کرده اید اما چیزی جز کدهای ASP نمی خواهید در هاست جدید خود داشته باشید، زرین پال برای اینکه به شما درگاه پرداخت دهد سایت شما باید نوشته ای یا کالایی را در خود داشته باشد، پس اگر برای سایت جدیدتان درخواست دهید 100% از شما می خواهند که سایت شما باید اطلاعاتی داشته باشد. راه آسانتر این است که درگاه پرداخت سایتی که در آن اطلاعات یا کالایی را در اختیار دیگران قرار می دهد استفاده کنید(اگر درگاه ندارد برای همین سایت درگاه سفارش دهید). به صورت پیشفرض گزینه "با محدودیت آی پی" برای درگاه های شما فعال است، شما باید در تنظیمات مربوط به درگاه پرداخت خود، گزینه "بدون محدودیت آی پی" را برای درگاه خود انتخاب کنید: خب پس از ساختن درگاه توسط زرین پال، در صفحه "درگاه های پرداخت" درگاه هایی که دارید برای شما نمایش داده می شود: خب این صفحه را باز گذاشته یا کد درگاه پرداخت مربوطه را در NotePad کپی کنید. پروژه ویندوز 10ـیه جدیدی به نام WN ZarinPal Payment ایجاد نمایید. پس از ساخت پروژه، صفحه طراحی MainPage.xaml را باز کنید و کدهای زیر را در آن بنویسید: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Grid.ColumnDefinitions> <ColumnDefinition Width="2.5*" /> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBox x:Name="txtAmount" VerticalAlignment="Top" HorizontalAlignment="Stretch" InputScope="Number" PlaceholderText="Type your price to pay..."/> <Button x:Name="btnPay" Content="Pay" Grid.Column="1" VerticalAlignment="Top" HorizontalAlignment="Center" Click="btnPay_Click" /> <WebView x:Name="webView" Grid.ColumnSpan="2" Visibility="Collapsed" NavigationCompleted="webView_NavigationCompleted" /> </Grid> تکست باکس برای تعیین مقدار پول پرداختی است. نکته: پولی که قرار است کاربر پرداخت کند بر اساس تومان است. کنترل وب ویو نیز برای پرداخت کردن است. خب حال در پنجره راه حل یا Solution Explorer روی References راست کلیک کرده و گزینه Add Service Reference… را انتخاب نمایید: صفحه برای شما باز خواهد شد: آدرس زیر، برای وب سرویس زرین پال استفاده می شود، آنرا باید در قسمت Address صفحه ای که باز شده است بنویسید و روی Go کلیک کنید: https://www.zarinpal.com/pg/services/WebGate/wsdl این آدرس از کتاب مستندات فنی اتصال به وب سرویس زرین پال گرفته شده است! آدرس کتاب: https://github.com/SamanSystems/Zarinpal-Gateway-Documentation/archive/master.zip سپس تکست Namespace را حذف کرده و کلمه ZarinPal را در آن بنویسید و روی OK کلیک کنید: حال صفحه کدنویسی MainPage.xaml.cs را باز کنید و فضای نامی زیر را در فضاهای نامی بنویسید: using WN_ZarinPal_Payment.ZarinPal; در بالای Constructorـه MainPage کدهای زیر را بنویسید: string merchantCode = "YOUR MERCHANT CODE"; string authority = string.Empty; int amount = 0; string description = string.Empty; string email = string.Empty; string mobile = string.Empty; string callBackUrl = "https://www.win-nevis.com/app/payment.txt"; MerchantCode: کدی یکتا و 36 کاراکتری است که زرین پال به ازای هر درخواست درگاه پرداخت به پذیرنده اختصاص می دهد. Authority: شناسه یکتایی که سایت زرین پال به ازای هر درخواست خرید، به پذیرنده ارسال می کند، این شناسه 36 کاراکتر دارد. Amount: مبلغ پرداختی است. این مبلغ بر حسب تومان است. کمترین میزان پرداختی 100 تومان است.(البته اگه اشتباه نکنم) Description: توضیحات تراکنش متنی است که توسط پذیرنده تعیین می شود که نشان دهنده خلاصه محصول یا سرویسی است که پذیرنده قصد فروش آنرا دارد.(منظور از پذیرنده خودتان هستید!) Email: ایمیل خریدار است که توسط پذیرنده در وب سرویس تعیین می شود که جهت سهولت در پیگیری های پس از پرداخت استفاده خواهد شد( این پارامتر اختیاری است). Mobile: شماره تماس خریدار است که توسط پذیرنده وب سرویس تعیین می شود که جهت سهولت در پیگیری های پس از پرداخت استفاده خواهد شد( این پارامتر اختیاری است). CallbackUrl: آدرسی که بعد از پایان عملیات در سمت زرین پال، خریدار به آنجا بازگشت داده می شود. در اینجا یک فایل Textـه خالی در سایت وین نویس آپلود شده است که پس از پرداخت به آن ارجاع داده شود. تابع ShowMessage را بنویسید. این تابع برای نمایش پیغام هاست. async private void btnPay_Click(object sender, RoutedEventArgs e) { description = "امتحان درگاه پپرداخت"; int.TryParse(txtAmount.Text, out amount); if (amount < 100 || string.IsNullOrEmpty(merchantCode) || string.IsNullOrEmpty(description) || string.IsNullOrEmpty(callBackUrl)) return; PaymentGatewayImplementationServicePortTypeClient zp = new PaymentGatewayImplementationServicePortTypeClient(); PaymentRequestResponse response = await zp.PaymentRequestAsync(merchantCode, amount, description, email, mobile, callBackUrl); authority = response.Body.Authority; if (response.Body.Status == 100) { webView.Visibility = Visibility.Visible; webView.Navigate(new Uri("https://www.zarinpal.com/pg/StartPay/" + authority)); } else ShowMessage("There is a problem in creating authority code.\r\nStatus code: " + response.Body.Status); } متغیر zp که از نوع PaymentGatewayImplementationServicePortTypeClient برای درخواست به وب سرویس زرین پال ساخته شده است. اما سوالی که باقی می ماند این است که این کلاس چگونه ایجاد شده است؟[K هنگامی که در قسمت Add Service Reference وب سرویس زرین پال را اضافه کردیم، ویژوال استدیو به صورت خودکار کلاس های مورد نیازی را که برای ما لازم است با استفاده کد XMLـی که درون آن آدرس وجود داشت ایجاد کرد. متغیر response را با استفاده از تابع PaymentRequestAsync ایجاد کردیم، در این تابع مرچنت کد، هزینه پرداختی، توضیحات، موبایل، ایمیل و آدرس بازگشتی به عنوان پارامتر های ورودی است که مقدار بازگشتی آن از نوع PaymentRequestResponse خواهد بود. درون این متغیر، داده ای به عنوان Body وجود دارد که دارای Authority و Status است. Status وضعیت تراکنش را نشان می دهد. اگر وضعیت برابر با صد بود یعنی درگاه با موفقیت کد Authority را ایجاد کرده و شما می توانید به صفحه شروع پرداخت بروید، شما می توانید معانی کدهای وضعیت ها را در صفحه آخر کتاب "مستندات فنی اتصال به وب سرویس زرین پال" مطالعه نمایید. اگر وضعیت برابر با صفر بود، وب ویو را نمایش می دهیم و سپس آدرس https://www.zarinpal.com/pg/StartPay/ + کد authority را باز می کنیم. چنانچه وضعیت برابر با صد نبود پس خطایی را به کاربر نمایش میدهیم. حال باید تابع رویداد NavigationCompletedـه وب ویو را بنویسیم: async private void webView_NavigationCompleted(WebView sender, WebViewNavigationCompletedEventArgs args) { // آدرس فعلی ای که وب ویو در آن است string myUrl = sender.Source.ToString(); if (myUrl.Contains(callBackUrl)) { sender.Visibility = Visibility.Collapsed; PaymentGatewayImplementationServicePortTypeClient zp = new PaymentGatewayImplementationServicePortTypeClient(); PaymentVerificationResponse response = await zp.PaymentVerificationAsync(merchantCode, authority, amount); if (response.Body.Status == 100) ShowMessage("Purchase succeed.\r\n RefId in case you need: " + response.Body.RefID); else ShowMessage("There is a problem while purchasing...\r\nStatus code: " + response.Body.Status); } } خب در خط اول این تابع، آدرسی که وب ویو در آن است را با استفاده از مقدار Sourceـه وب ویو میگیریم. سپس شرط می گذاریم چنانچه قسمتی از مقدار این آدرس برابر با آدرس بازگشتی ما بود، شرط درست است. درون بلاک شرط اولین کاری که می کنیم این است که وب ویو را پنهان می کنیم. متغیری از نوع PaymentGatewayImplementationServicePortTypeClient ایجاد می کنیم چون باید پس از پرداخت حتما پرداخت توسط زرین پال تایید گردد. تابع PaymentVerificationAsync برای تاییدیه گرفتن از زرین پال است، این تابع دارای سه پارامتر ورودی است که به ترتیب کد مرچنت، authority مربوط به همین پرداخت و هزینه مربوط به همین را باید در آن وارد کنیم. نوع جواب PaymentVerificationResponse است که دارای متغیری از نوع Body است که این متغیر نیز دو متغیر دیگر در خود دارد، یکی Status یا وضعیت(اگر صد باشد پرداخت با موفقیت انجام شده است)، یکی RefId. RefId: شناسه یکتایی که زرین پال بعد از اتمام موفق تراکنش به پذیرنده می دهد. این شناسه جهت پیگیری های مالی استفاده می گردد. عکس ها: کتاب الکترونیک این آموزش + سورس کد پروژه پیوست شد. امیدوارم همچنان همراه ما باشید... . منبع: وین نویس In App Purchase Sample.zip Zarinpal Payment (In App Purchase).pdf
این صفحه از پرچمداران بر اساس منطقه زمانی تهران/GMT+04:30 می باشد