المشاركات : 44
المواضيع 14
الإنتساب : Jan 2020
السمعة :
0
الشكر: 0
تم شكره 4 مرات في 4 مشاركات
شباب
السلام عليكم
عندى مشكلة فى هذا الكود حيث استخدمه فى رفع فاتورة مبيعات ولكن عندما اقوم برفع الفاتورة يتم رفعها بصورة صحيحه ولكن عند الانتقال الى فاتورة اخرى يعطى رسالة الخطاء الموجودة بالكود ولا يقوم برفعها الا بعد اقفال البرنامج بالكامل وفتحه مره اخرى بعهدها يرفع فاتورة واحدة فقط ثم يعطى رسالة خطا وهكذا عشان ارفع فاتورة لازم اقفل البرنامج بشكل تام ثم افتحه مره اخرى ... وهذا هو الكود
Dim tokenInfo As ITokenInfo = slot.GetTokenInfo()
Dim slotInfo As ISlotInfo = slot.GetSlotInfo()
Using session = slot.OpenSession(SessionType.ReadWrite)
Try
session.Login(CKU.CKU_USER, Encoding.UTF8.GetBytes(Config_class.token_pin))
Catch ex As Exception
MessageBox.Show("pin_token is not correct")
Return
Exit Sub
End Try
يرجى التفضل بايجاد حل
المشاركات : 44
المواضيع 14
الإنتساب : Jan 2020
السمعة :
0
الشكر: 0
تم شكره 4 مرات في 4 مشاركات
الاخ المحترم هذا الكود كاملا
وقد استخدمت الكود الموضوع من حضرتك وهو ساعدنى حيث حل جذء كبير من المشكلة حيث المشكلة السابق قبل استخدام الكود كانت تتمثل فى لابد من اقفال البرنامج بشكل كامل بعد ارسال كل فاتورة على حدة ولكن بعد استخدام التعديل الزى قمت مشكورا برفعه اصبحت ارفع الفاتورة ثم اختار فاتورة اخرى دون اقفال البرنامج ياتى بنفس الرسالة ثم يكمل ويرسل الفاتورة
فاريد حل تلك الجزئية وهذا هو الكود
Private Async Sub Send()
Try
Dim factories As Pkcs11InteropFactories = New Pkcs11InteropFactories()
Using pkcs11Library As IPkcs11Library = factories.Pkcs11LibraryFactory.LoadPkcs11Library(factories, Config_class.DllLibPath, AppType.MultiThreaded)
Dim slot As ISlot = pkcs11Library.GetSlotList(SlotsType.WithTokenPresent).FirstOrDefault()
If (slot Is Nothing) Then
MessageBox.Show("No slots found - DllLibPath Erro")
Return
Exit Sub
End If
'##################
'##################
Dim tokenInfo As ITokenInfo = slot.GetTokenInfo()
Dim slotInfo As ISlotInfo = slot.GetSlotInfo()
Using session = slot.OpenSession(SessionType.ReadWrite)
Try
session.Login(CKU.CKU_USER, Encoding.UTF8.GetBytes(Config_class.token_pin))
Catch ex As Exception
MessageBox.Show("pin_token is not correct")
Return
Finally
session.Logout()
End Try
'##################
'##################
Dim certificateSearchAttributes = New List(Of IObjectAttribute)() From {
session.Factories.ObjectAttributeFactory.Create(CKA.CKA_CLASS, CKO.CKO_CERTIFICATE),
session.Factories.ObjectAttributeFactory.Create(CKA.CKA_TOKEN, True),
session.Factories.ObjectAttributeFactory.Create(CKA.CKA_CERTIFICATE_TYPE, CKC.CKC_X_509)
}
Dim certificate As IObjectHandle = session.FindAllObjects(certificateSearchAttributes).FirstOrDefault()
If certificate Is Nothing Then
MessageBox.Show("Certificate not found")
Return
Exit Sub
End If
'##################
'##################
Dim store As X509Store = New X509Store(StoreName.My, StoreLocation.CurrentUser)
store.Open(OpenFlags.MaxAllowed)
Dim foundCerts = store.Certificates.Find(X509FindType.FindByIssuerName, Config_class.token_type, False)
If foundCerts.Count = 0 Then
MessageBox.Show("no device detected - token_type Erro")
Return
Exit Sub
End If
'##################
'##################
Dim certForSigning = foundCerts(0)
store.Close()
End Using
End Using
'##################
'##################
Dim fileEntries() As String = Directory.GetFiles(path_send)
For Each fileName As String In fileEntries
Dim readText As String = File.ReadAllText(fileName)
Await Sendinvoice(readText)
Next fileName
MessageBox.Show("done")
Return
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
المشاركات : 44
المواضيع 14
الإنتساب : Jan 2020
السمعة :
0
الشكر: 0
تم شكره 4 مرات في 4 مشاركات
25-02-24, 02:41 AM
(آخر تعديل لهذه المشاركة : 25-02-24, 03:31 AM {2} بواسطة asdfar1977.)
الف شكر على الاهتمام جارى التجربة
المشاركات : 44
المواضيع 14
الإنتساب : Jan 2020
السمعة :
0
الشكر: 0
تم شكره 4 مرات في 4 مشاركات
للاسف الكود لا يعمل الاخ Kamil