以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]AES加解密问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=158090) |
-- 作者:kenmen -- 发布时间:2020/11/7 14:35:00 -- [求助]AES加解密问题 老师,请问一下~ 要如何再传送JSON格式的数据时,先将JSON格式数据先做 URL Encode 编码,再进行AES加密,AES加密相关讯息如下: AES加密的强度设定方式是 128 bit CipherMode : CBC PaddingMode PKCS7 目前手边有的资料如下: 加密范例: Key= ejCk326UnaZWKisg IV= q9jcZX8Ib9LM8wYk (1)加密前 Data 资料: {"Name":"Test","ID":"A123456789"} (2)URLEncode 编码后结果: %7B%22Name%22%3A%22Test%22%2C%22ID%22%3A%22A123456789%22%7D (3)AES加密后结果: uvI4yrErM37XNQkXGAgRgJAgHn2t72jahaMZzYhWL1HmvH4WV18VJDP2i9pTbC+tby5nxVExLLFyAkbjbS2Dvg== 请问在Foxtable中要如何实现上述功能呢? |
-- 作者:有点蓝 -- 发布时间:2020/11/7 14:38:00 -- 请找服务商提供接口开发文档和.net示例 |
-- 作者:kenmen -- 发布时间:2020/11/7 14:48:00 -- 老师您好, 服务商所提供的开发文档及.NET示例如下, https://github.com/ECPay/Invoice_Net 小弟才疏学浅,不晓得该如何应用到Foxtable中, 能否帮忙一下!感激不尽!
|
-- 作者:有点蓝 -- 发布时间:2020/11/7 15:54:00 -- 里面提供了sdk,直接使用即可,下载3楼链接里的内容,解压。 1、把目录“SDK元件”里的Ecpay.EInvoice.Integration.dll复制到foxtable安装目录,然后添加引用:http://www.foxtable.com/webhelp/topics/1936.htm 2、打开foxtable安装目录里的Foxtable.exe.config,在以下节点添加红字的这部分内容即可: …… <runtime> <AppContextSwitchOverrides value="Switch.UseLegacyAccessibilityFeatures=false" /> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <dependentAssembly> <assemblyIdentity name="C1.C1Zip.4" publicKeyToken="79882d576c6336da" culture="neutral" /> <bindingRedirect oldVersion="4.0.20191.359" newVersion="4.0.20183.338" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="C1.Win.Bitmap.4" publicKeyToken="944ae1ea0e47ca04" culture="neutral" /> <bindingRedirect oldVersion="4.0.20183.338" newVersion="4.0.20191.359" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="C1.C1Excel.4" publicKeyToken="79882d576c6336da" culture="neutral" /> <bindingRedirect oldVersion="4.0.20191.359" newVersion="4.0.20183.338" /> </dependentAssembly> <dependentAssembly> <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> <bindingRedirect oldVersion="7.0.0.0" newVersion="12.0.0.0" /> </dependentAssembly> </assemblyBinding> </runtime> …… 添加后保存。最后记得备份一下Foxtable.exe.config,因为如果升级Foxtable新版本,这个文件会被覆盖,需要重新改一下。 3、到目录“Sample Code”里找到对应要做的功能的目录。比如04.一般开立发票,使用vs打开,或者找到其中的Issue.aspx.cs文件使用文本编辑器打开,转换为vb.net代码使用:http://converter.telerik.com/,转换后补上完整的命名空间(如下红字),如: Dim invc As New Ecpay.EInvoice.Integration.Models.InvoiceCreate() invc.MerchantID = "2000132" invc.RelateNumber = "ecPay" & New Random().[Next](0, 99999).ToString() invc.CustomerID = "" invc.CustomerIdentifier = "" invc.CustomerName = "" invc.CustomerAddr = "客戶地址" invc.CustomerPh invc.CustomerEmail = "test@ecpay.com.tw" invc.Print = Ecpay.EInvoice.Integration.Enumeration.PrintEnum.No invc.Donation = Ecpay.EInvoice.Integration.Enumeration.DonationEnum.No invc.LoveCode = "" invc.carruerType = Ecpay.EInvoice.Integration.Enumeration.CarruerTypeEnum.PhoneBarcode invc.CarruerNum = "/6G+X3LQ" invc.CarruerNum = invc.CarruerNum.Replace("+"c, " "c) invc.SalesAmount = "300" invc.InvoiceRemark = "(qwrrg)" invc.invType = Ecpay.EInvoice.Integration.Enumeration.TheWordTypeEnum.Normal Dim item As New Ecpay.EInvoice.Integration.Models.Item() With item .ItemName = "糧食" .ItemCount = "1" .ItemWord = "個" .ItemPrice = "100.1" .ItemAmount = "100.1" End With invc.Items.Add(item) item = New Ecpay.EInvoice.Integration.Models.Item() With item .ItemName = "糧食" .ItemPrice = "200" .ItemCount = "1" .ItemWord = "個" .ItemAmount = "200" End With invc.Items.Add(item) Dim inv As New Ecpay.EInvoice.Integration.Service.Invoice(Of Ecpay.EInvoice.Integration.Models.InvoiceCreate)() inv.Environment = Ecpay.EInvoice.Integration.Enumeration.EnvironmentEnum.Stage inv.HashIV = "q9jcZX8Ib9LM8wYk" inv.HashKey = "ejCk326UnaZWKisg" Dim json As String = inv.post(invc) \'调用接口 msgbox(json) \'查看返回结果 |
-- 作者:kenmen -- 发布时间:2020/11/7 16:21:00 -- 老师,您是说这个SDK已经包含了AES加解密及URL Encode 编码功能了吗? 我实作试试,有不懂得地方在请教老师,谢谢!
|
-- 作者:有点蓝 -- 发布时间:2020/11/7 16:23:00 -- SDK已经把相关功能都封装好了,不需要在自行处理 |
-- 作者:kenmen -- 发布时间:2020/11/7 17:08:00 -- 老师,不好意思,在打搅您一下! 有关引用部分,我用浏览将DLL档选进来之后,是否还要在『命名空间』这个页签设置『命名空间』及『空间别名』呢? 如果要的话,是否按照您教学上所提示的,使用『Ecpay.EInvoice.Integration』作为『命名空间』及『空间别名』, 这样是否可行? 感谢您拨空回覆我的问题,谢谢!
|
-- 作者:有点蓝 -- 发布时间:2020/11/7 17:16:00 -- 如果使用4楼的代码,不需要再加什么别名。 如果要加,自己把红字代码改为别名
|
-- 作者:kenmen -- 发布时间:2020/11/7 17:53:00 -- 谢谢老师!我有实作成功! 另外,能否再请教一下老师, 这个操作方式,是否只能在高级开发版使用呢? 如果是开发版的话,能否套用这样的方式进行处理呢? 以这个厂商所提供的SDK而言~ 感谢老师辛苦的回覆,谢谢!
|
-- 作者:有点蓝 -- 发布时间:2020/11/8 20:14:00 -- 这种用法所有版本都可以使用,包括试用版 |