رفتن به مطلب
  • 0

شرط گذاشتن برای مولتی پنل برای پرداخت درون برنامه ای


torab

سوال

سلام و درود خدمت همه اساتید انسر سنتر

بنده داخل برنامم یه مولتی پنل دارم که داخلش دوتا ایمیج ویو هست و وقتی روی اونا کلیک میشه آهنگ مخصوص اون پخش میشه

اطلاعات رو هم از دیتابیس میگیرم و یه ستون به اسم خرید دارم که آهنگ های رایگان رو 1 دادم و قسمت پولی رو 0

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

اگرم پرداخت صورت نگیره و دوباره روی یه آهنگ دیگه کلیک بشه خطا میده

♥ممنون میشم راهنماییم کنید

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

16 پاسخ به این سوال تاکنون داده شده است

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

خیلی سخت نیست.

این کدشه:

Imgitem1.Tag = cr1.GetString("sporang1") & "," & cr1.GetInt("Kharid")

 

حالا موقع چک کردن ستون خرید، از این استفاده کنید:

Dim StrCheck() As String
StrCheck = Regex.Splite("," , imgitem1.Tag)

If StrCheck(1) = 1 Then
	....
End If

 

اینم برای اسم آهنگ:

Dim Ahang As String = StrCheck(0)

 

 

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

در 4 ساعت قبل، Salar82 گفته است :

کدهاتون ظاهراً مشکلی نداره.

خط به خط اجرا کنید شاید به موردی برسید.

مشکل این هست که من 3 تا تیبل دارم و وقتی پرداخت صورت میگیره فقط یک تیبل که مربوط به همون اکتیویتی میشه آپدیت میشه و مقادیرش از 0 به 1 تغییر می کنه

ولی دوتا تیبل دیگه آپدیت نمیشه

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

Sub pardakht_PurchaseCompleted (Success As Boolean, Product As Purchase)
	
	cr1=Main.sq1.ExecQuery("SELECT * FROM tblporang & tblomid & tblgolchin")
	
	If Success=True Then
		For i=0 To cr1.RowCount
			Main.sq1.ExecNonQuery("update tblporang & tblomid & tblgolchin set kharid=1 WHERE id="&i)
		Next
		ToastMessageShow("پرداخت با موفقیت انجام شد",False)
		ExitApplication
	Else
		ToastMessageShow("پرداخت انجام نشد",False)
	End If
End Sub

 

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

در 8 ساعت قبل، torab گفته است :

مشکل این هست که من 3 تا تیبل دارم و وقتی پرداخت صورت میگیره فقط یک تیبل که مربوط به همون اکتیویتی میشه آپدیت میشه و مقادیرش از 0 به 1 تغییر می کنه

ولی دوتا تیبل دیگه آپدیت نمیشه

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

 

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

 

Main.sq1.ExecNonQuery2("UPDATE tblporang SET kharid = 1 WHERE id = ?", Array As String(i))
Main.sq1.ExecNonQuery2("UPDATE tblomid SET kharid = 1 WHERE id = ?", Array As String(i))
Main.sq1.ExecNonQuery2("UPDATE tblgolchin SET kharid = 1 WHERE id = ?", Array As String(i))

 

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

در 24 دقیقه قبل، Salar82 گفته است :

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

 


Main.sq1.ExecNonQuery2("UPDATE tblporang SET kharid = 1 WHERE id = ?", Array As String(i))
Main.sq1.ExecNonQuery2("UPDATE tblomid SET kharid = 1 WHERE id = ?", Array As String(i))
Main.sq1.ExecNonQuery2("UPDATE tblgolchin SET kharid = 1 WHERE id = ?", Array As String(i))

 

ممنون از پاسخگویی تون:53:♥:53:

کارم یکم بیخ پیدا کرده فکر کنم باید سورس رو بدم یه نگاه بندازین

چون سه تا تیبل رو ریختم تو یه تیبل و اجرا کردم

رو گوشی خودم  جواب داد و همه ردیف ها مقدارشون از 0 به 1 تغییر کرد

اما روی یه گوشی دیگه اجرا کردم روی 4 تا اکتیویتی اون ردیف ها که مقدارشون 0 هست وقتی کلیک می کنم پیام میده که درون پرداخت آماده نیست

روی اکتیویتی اولی روی ردیف های 0 کلیک می کنم خطای زیر رو میده:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.Activity.startIntentSenderForResult(android.content.IntentSender, int, android.content.Intent, int, int, int)' on a null object reference

اگه سختتون نیست سورس بدم نگاه کنید:53:

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

در 3 دقیقه قبل، torab گفته است :

اگه سختتون نیست سورس بدم نگاه کنید:53:

مشکلی نیست...

:53:

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

در 5 ساعت قبل، Salar82 گفته است :

مشکلی نیست...

:53:

خیلی ممنون:53:

خدا خیرتون بده:heart:

سورس رو براتون فرستادم

ببخشید باعث زحمت شدم

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

در در 31 تیر 1399 در 11:01، torab گفته است :

سلام و درود خدمت همه اساتید انسر سنتر

بنده داخل برنامم یه مولتی پنل دارم که داخلش دوتا ایمیج ویو هست و وقتی روی اونا کلیک میشه آهنگ مخصوص اون پخش میشه

اطلاعات رو هم از دیتابیس میگیرم و یه ستون به اسم خرید دارم که آهنگ های رایگان رو 1 دادم و قسمت پولی رو 0

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

اگرم پرداخت صورت نگیره و دوباره روی یه آهنگ دیگه کلیک بشه خطا میده

♥ممنون میشم راهنماییم کنید

لطفا کمک کنید فقط این بخشش مونده تا برنامه رو بذارم بازار

چند ماهه درگیرشم دیگه حوصلم سر رفت از بس وقت گذاشتم براش

اینم کدهام هست:

Sub Globals
	Private Svtaraneh As ScrollView
	Private Pntaraneh As Panel
	Private Imgitem1 As ImageView
	Private Imgitem2 As ImageView
	Private pnitem As Panel
'********************************************
	Dim cr1 As Cursor
	Dim mp1 As MediaPlayer
	Dim h As Int=0 
	Dim offset As Int = 0
'*******************************************
	Dim pardakht As PersianBillingManager
	Dim key As String=".........."
	Private  isInappReady As Boolean
End Sub

Sub Activity_Create(FirstTime As Boolean)

	pardakht.Initialize("pardakht",key)
	Activity.LoadLayout("taraneh")
	mp1.Initialize2("mp1")
	show("SELECT * FROM tblporang WHERE id BETWEEN 1 AND 8 LIMIT 8 OFFSET "&offset&"")
End Sub

Sub show(query As String)

	cr1 = Main.sq1.ExecQuery(query)
	For i = 0 To cr1.RowCount-1
		cr1.Position = i	
		Dim p As Panel
		p.Initialize("")
		Svtaraneh.Panel.AddView(p,0,h,100%x,100%y)
		h=h+40%y
		p.LoadLayout("item")
		Imgitem1.Bitmap=LoadBitmapSample(File.DirAssets,cr1.GetString("pporang1"),40%x,30%y)
		Imgitem1.Gravity=Gravity.FILL
		Imgitem2.Bitmap=LoadBitmapSample(File.DirAssets,cr1.GetString("pporang2"),40%x,30%y)
		Imgitem2.Gravity=Gravity.FILL

		Imgitem1.Tag=cr1.GetString("sporang1")
		Imgitem2.Tag=cr1.GetString("sporang2")
		Svtaraneh.Panel.Height=h+6%y
	Next

End Sub

Sub pardakht_BillingSupported (Supported As Boolean, Message As String)
	isInappReady=True
End Sub

Sub imgitem1_Click	
	Dim im As ImageView
	im=Sender
	
		If cr1.Getint("kharid")=1 Then
			mp1.Load(File.DirAssets,im.Tag )

				If mp1.IsPlaying = True Then
					mp1.Stop
				Else
					mp1.Play
				End If	
		Else
			If isInappReady Then
				pardakht.RequestPayment("inapptarane","inapp","inapptarane1")
			Else
				ToastMessageShow("درون پرداخت آماده نیست",False)
			End If
		End If
End Sub


Sub pardakht_PurchaseCompleted (Success As Boolean, Product As Purchase)
	If Success=True Then
		For i=0 To cr1.RowCount-1
			Main.sq1.ExecNonQuery("UPDATE tblporang SET kharid=1 WHERE id="&i)
		Next
		ToastMessageShow("پرداخت با موفقیت انجام شد",False)
	Else
		ToastMessageShow("پرداخت انجام نشد",False)
	End If
End Sub

 

اینم تصویر دیتابیسم:

%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%

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

سلام دوست عزیز

در 11 ساعت قبل، torab گفته است :

For i = 0 To cr1.RowCount-1

cr1.Position = i

شما تو این قسمت، میاین position رو برابر i قرار میدین. پس زمانی که آخرین آیتم لود میشه، Position هم برابر همون آیتم میشه.(یعنی آخرین آیتم)

در 11 ساعت قبل، torab گفته است :

If cr1.Getint("kharid")=1 Then

بعد شما تو این خط میاین بدون اینکه پوزیشن Cursor رو تغییر بدین، چک میکنین که رایگان هست یا نه. ( پس الان Position شما، همون آخرین آیتم مونده)

 

برای حل این موضوع، کافیه که موقع لود کردن ImageView ها، تگ اون رو برابر با همون فیلد خرید بذارین. مثل زیر:

ImageView1.Tag = Cursor1.GetInt("Kharid")

 

 

خب؛ حالا بجای این خط:

در 11 ساعت قبل، torab گفته است :

If cr1.Getint("kharid")=1 Then

خط زیر رو بنویسید:

If im.Tag = 1 Then

قاعدتاً باید مشکلتون حل بشه.

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

در 19 دقیقه قبل، Salar82 گفته است :

سلام دوست عزیز

شما تو این قسمت، میاین position رو برابر i قرار میدین. پس زمانی که آخرین آیتم لود میشه، Position هم برابر همون آیتم میشه.(یعنی آخرین آیتم)

بعد شما تو این خط میاین بدون اینکه پوزیشن Cursor رو تغییر بدین، چک میکنین که رایگان هست یا نه. ( پس الان Position شما، همون آخرین آیتم مونده)

 

برای حل این موضوع، کافیه که موقع لود کردن ImageView ها، تگ اون رو برابر با همون فیلد خرید بذارین. مثل زیر:


ImageView1.Tag = Cursor1.GetInt("Kharid")

 

 

خب؛ حالا بجای این خط:

خط زیر رو بنویسید:


If im.Tag = 1 Then

قاعدتاً باید مشکلتون حل بشه.

خیلی ممنون که جواب دادین:53:

حرفتون درسته ولی مشکل این هست که ایمیج ویوم یک تگ به این صورت داره:

Imgitem1.Tag=cr1.GetString("sporang1")

که آهنگ مربوط به اون ایمیج ویو رو پخش می کنه

حالا چه جوری اون تگی که گفتید رو با هم اضافه کنم؟

یعنی در واقع یه تگ مربوط به آهنگ میشه و یه تگ مربوط به ستون خرید و هر دوتاش روی ایمیج ویو باید پیاده بشه دیگه

 

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

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

	Dim components() As String
	components = Regex.Split(",", "num1,num2")
	
	'components(0) = "num1"
	'components(1) = "num2"

 

یعنی دو تا تگ رو با , از هم جدا کنید و با دستور بالا، مقادیر رو بدست بیارید.

 

:53::53::53::53:

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

در 2 ساعت قبل، Salar82 گفته است :

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


	Dim components() As String
	components = Regex.Split(",", "num1,num2")
	
	'components(0) = "num1"
	'components(1) = "num2"

 

یعنی دو تا تگ رو با , از هم جدا کنید و با دستور بالا، مقادیر رو بدست بیارید.

 

:53::53::53::53:

خیلی ممنون از وقتی که گذاشتید♥♥♥

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

https://answercenter.ir/topic/5695-استفاده-از-2تگ-در-باتن/#comment-37439

اگه براتون سخت نیست سورس رو براتون بفرستم یه نگاه بندازین

چند روزه درگیرشم خیلی مطالب سایت رو هم دیدم ولی درست نشد...

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

در 5 ساعت قبل، Salar82 گفته است :

خیلی سخت نیست.

این کدشه:


Imgitem1.Tag = cr1.GetString("sporang1") & "," & cr1.GetInt("Kharid")

 

حالا موقع چک کردن ستون خرید، از این استفاده کنید:


Dim StrCheck() As String
StrCheck = Regex.Splite("," , imgitem1.Tag)

If StrCheck(1) = 1 Then
	....
End If

 

اینم برای اسم آهنگ:


Dim Ahang As String = StrCheck(0)

 

 

داداش دستت درد نکنه مشکلم حل شد، خدا خیرت بده و ایشالله بری کربلا...:53::53::53:

اینجوری نوشتم حل شد:

Sub Activity_Create(FirstTime As Boolean)

cr1 = Main.sq1.ExecQuery
	For i = 0 To cr1.RowCount-1
		cr1.Position = i	
		Dim p As Panel
		p.Initialize("")
		Svtaraneh.Panel.AddView(p,0,h,100%x,100%y)
		h=h+40%y
		p.LoadLayout("item")
		Imgitem1.Bitmap=LoadBitmapSample(File.DirAssets,cr1.GetString("pporang1"),39%x,27%y)
		Imgitem1.Gravity=Gravity.FILL
		Imgitem2.Bitmap=LoadBitmapSample(File.DirAssets,cr1.GetString("pporang2"),39%x,27%y)
		Imgitem2.Gravity=Gravity.FILL
		Imgitem1.Tag=cr1.GetString("sporang1") & "#" & cr1.Getint("kharid")
		Imgitem2.Tag=cr1.GetString("sporang2") & "#" & cr1.Getint("kharid")
		Svtaraneh.Panel.Height=h+6%y
	next
End sub

Sub imgitem1_Click
	Dim im As ImageView
	im=Sender
		
	Dim StrCheck() As String = Regex.split("#",im.tag)

	If StrCheck(1) = 1 Then
		mp1.Load(File.DirAssets, StrCheck(0))
			If mp1.IsPlaying = True Then
				mp1.Stop
			Else
				mp1.Play
			End If	

	Else
		If isInappReady Then
			pardakht.RequestPayment("inapptarane","inapp","inapptarane1")
		Else
			ToastMessageShow("درون پرداخت آماده نیست",False)
		End If
	End If
End Sub

 

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

در 22 ساعت قبل، Salar82 گفته است :

خیلی سخت نیست.

این کدشه:


Imgitem1.Tag = cr1.GetString("sporang1") & "," & cr1.GetInt("Kharid")

 

حالا موقع چک کردن ستون خرید، از این استفاده کنید:


Dim StrCheck() As String
StrCheck = Regex.Splite("," , imgitem1.Tag)

If StrCheck(1) = 1 Then
	....
End If

 

اینم برای اسم آهنگ:


Dim Ahang As String = StrCheck(0)

 

 

سلام و عرض ادب مجدد

بازم ممنون از جوابی که دادین:give_heart:

اگه میشه یه راهنمایی دیگه بفرمایید ♥:53:

مشکلی که برام ایجاد شده این هست که موقعی که خرید انجام میشه ستون خرید مقدارش از 0 به 1 تغییر نمی کنه و هر دفعه صفحه پرداخت رو میاره

اینم کدهای قسمت پرداخت:

Sub pardakht_PurchaseCompleted (Success As Boolean, Product As Purchase)
	
	cr1=Main.sq1.ExecQuery("SELECT * FROM tblporang WHERE id BETWEEN 1 AND 8 ")
	
	If Success=True Then
		For i=1 To 8
			Main.sq1.ExecNonQuery("update tblporang set kharid=1 WHERE id="&i)
		Next
		ToastMessageShow("پرداخت با موفقیت انجام شد",False)
	Else
		ToastMessageShow("پرداخت انجام نشد",False)
	End If
End Sub

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

بازم ممنون

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

در 4 ساعت قبل، Salar82 گفته است :

Sql رو چطور Initialize میکنین؟

توی اکتیویتی اصلی به شکل زیر:

If File.Exists(File.DirInternal,"sql1.db") =False Then
	File.Copy(File.DirAssets,"sql1.db",File.DirInternal,"sql1.db")
End If
sq1.Initialize(File.DirInternal,"sql1.db",False)

 

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

کدهاتون ظاهراً مشکلی نداره.

خط به خط اجرا کنید شاید به موردی برسید.

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

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

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

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