using System; using System.Collections; using System.Text; namespace ConsoleDemo { public class StarDemo { //私钥(与发给票通的公钥为一对) private static String privateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAIVLAoolDaE7m5oMB1ZrILHkMXMF6qmC8I/FCejz4hwBcj59H3rbtcycBEmExOJTGwexFkNgRakhqM+3uP3VybWu1GBYNmqVzggWKKzThul9VPE3+OTMlxeG4H63RsCO1//J0MoUavXMMkL3txkZBO5EtTqek182eePOV8fC3ZxpAgMBAAECgYBp4Gg3BTGrZaa2mWFmspd41lK1E/kPBrRA7vltMfPj3P47RrYvp7/js/Xv0+d0AyFQXcjaYelTbCokPMJT1nJumb2A/Cqy3yGKX3Z6QibvByBlCKK29lZkw8WVRGFIzCIXhGKdqukXf8RyqfhInqHpZ9AoY2W60bbSP6EXj/rhNQJBAL76SmpQOrnCI8Xu75di0eXBN/bE9tKsf7AgMkpFRhaU8VLbvd27U9vRWqtu67RY3sOeRMh38JZBwAIS8tp5hgcCQQCyrOS6vfXIUxKoWyvGyMyhqoLsiAdnxBKHh8tMINo0ioCbU+jc2dgPDipL0ym5nhvg5fCXZC2rvkKUltLEqq4PAkAqBf9b932EpKCkjFgyUq9nRCYhaeP6JbUPN3Z5e1bZ3zpfBjV4ViE0zJOMB6NcEvYpy2jNR/8rwRoUGsFPq8//AkAklw18RJyJuqFugsUzPznQvad0IuNJV7jnsmJqo6ur6NUvef6NA7ugUalNv9+imINjChO8HRLRQfRGk6B0D/P3AkBt54UBMtFefOLXgUdilwLdCUSw4KpbuBPw+cyWlMjcXCkj4rHoeksekyBH1GrBJkLqDMRqtVQUubuFwSzBAtlc"; //票通公钥(票通提供) private static String ptPublicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJkx3HelhEm/U7jOCor29oHsIjCMSTyKbX5rpoAY8KDIs9mmr5Y9r+jvNJH8pK3u5gNnvleT6rQgJQW1mk0zHuPO00vy62tSA53fkSjtM+n0oC1Fkm4DRFd5qJgoP7uFQHR5OEffMjy2qIuxChY4Au0kq+6RruEgIttb7wUxy8TwIDAQAB"; //3DES秘钥(票通提供) private static String password = "lsBnINDxtct8HZB7KCMyhWSJ"; //请更换请求平台简称(票通提供) private static String platform_alias = "DEMK"; //请更换请求平台编码(票通提供) private static String platform_code = "11111111"; public static void Main(string[] args) { Console.Write(PublicData.disposeResponse(Blue(), ptPublicKey, password));//蓝票接口 // testqueryInvoice();//查询接口 // testGetInvoiceRepertoryInfo();//库存接口 // testAuthWeChatCards();//插入微信卡包接口 // testTitleInfo();//查询抬头接口 // testGetPTBoxStatus();//查询设备状态 // testGetQrCodeByItems();//获取开票二维码和提取码 // testdeleteInvoiceQrCode();//作为二维码 // testInvoiceRed();//冲红接口 // testRegister();// 注册接口 //string content = "{\"code\":\"0000\",\"msg\":\"处理成功\",\"sign\":\"ZjAqLXwvEEgz2+jzP/+vUWGuvhBr4N4Gg/pLLOt90sMP160SC1RrkOy6b5p1CCx3y4QYRkbqq2NmkYXpAJX5BdkoXFYUO1hF4ufUvYPmIjQvKT9JMnXt1RV0EdNLliiEowJPjjXDSlTZdthIsTXdVirCkGohzLt3b/2YU9moAM8=\",\"serialNo\":\"CTXP20181206100927n5ObjiJM\",\"content\":\"q55jwSlpLhWV7cnEgNTvm+bswSXLiOPDbw8HvqR7SKhQDWJ/x1qlcJHAOB2lYHmQmefePoaVJ4abG7O9aJwIssDZsit2a2pqNeiCWqVmKhceLAsD/IV4DAlHmwZZhb9tqqco+HDHmZlqJy9pQv478OW0UDx/X0kTbIy4au5pZvJdODh4t31o5I2HrGm1HNcykyKMDpr5D1Mx2mYsjHm95OKBAzLPKMo+o1JrotnyjlS08CbbF6CF5OPZPB8tu88g0xl1u7/3kkjgc0KEmE+bQTEF6RoLqtQ9XRdfHf+tjzLpUcfS7j/nzPcHJnU3d1PGU0NsR+QNyHvI2cfo8HLlmnL5V7GDX+iSMNKMJ8vq7lWwcHvxZjyrHRzSpmxsQJXkQN4hungnNjiNGWzJZ8FssSLLkHw3VlQVJ8mz9sugsCn3Gr/muwUG46W7AsxUqM0Oo1JrotnyjlT6yPhLDxoIzumCiet4Hf02Gxfox417aZ6Jw+BGXo/B9KtKAIlQfkV8Zen4leGaPYo+6G+NPE2a7E+g3FRb571HMiwddiHpNVYzpc/pGTxna1JDIOODExKTJPCrI47HGZGbG7O9aJwIssDZsit2a2pqTWa8x1ePRf8eLAsD/IV4DAlHmwZZhb9tqqco+HDHmZlqJy9pQv478OW0UDx/X0kTbIy4au5pZvJdODh4t31o5JaXBuJBVtYBkyKMDpr5D1Mx2mYsjHm95F0rfY1FyxjYo1JrotnyjlS08CbbF6CF5MlEbxEcfrXqIRR3QbB604fgc0KEmE+bQTEF6RoLqtQ9XRdfHf+tjzILJodvesFM/gbYzWVOUKLKkw3+uglxfg0H9K+suDCPJFRGRT6xxFCnTglsJo/q9b0bF+jHjXtpnu9+bNNgN22dfgeGCjXTZ52gwQVlALiNUkaR5cdbKH8gRWCS9TRcrE1pnHLSywkCgr2LCkRS/wEd1863dwA7HMJuY8TDqXWlYC/kkUF84Oo8kyKMDpr5D1NA31vurQ5/BHbrS0QR43dycGeIzhqufLnEBxK01e2CYnK3sqwBwwBa6qhdLFlh9DTb7pjjR5w00A/i74mi2g8Fq91vU5nj5kkoL7fsH3ChjxJwiAQA8RwGPsTnkCcQSnzqj8s+uTYMPFzmWuWd2UYP\"}"; //PublicData.disposeResponse(content,ptPublicKey,password); } /** * 注册接口 */ public static string testRegister() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/register.pt"; Hashtable map = new Hashtable(); map.Add("taxpayerNum", platform_alias + "0003242300000"); //销方纳税人识别号 map.Add("enterpriseName", "测试C#"); //销方企业名称 map.Add("legalPersonName", "AA"); //法人名称 map.Add("contactsName", "AA"); //联系人名称 map.Add("contactsEmail", "1121@qq.com"); //联系人邮箱 map.Add("contactsPhone", "15111111133"); //联系人手机号 map.Add("regionCode", "11"); //地区编码 map.Add("cityName", "海淀区"); //市(区)名 map.Add("enterpriseAddress", "地址"); //详细地址 // TODO 请修改为正确的图片Base64传 map.Add("taxRegistrationCertificate", "sdddddddddddddddddddd"); //证件图片base64 string content = ToJson.Table2Json(map); String builderrequest = PublicData.publicparam(content, platform_code, platform_alias, privateKey, password); string response = PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:" + response); return response; } /** * 开具蓝票 */ public static string Blue() { string url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/invoiceBlue.pt"; ArrayList itemList = new ArrayList(); Hashtable OuterMessage = new Hashtable(); OuterMessage.Add("taxpayerNum", "500102201007206608"); // TODO 请更换请求流水号前缀 OuterMessage.Add("invoiceReqSerialNo", "SCPTT538117842484711"); OuterMessage.Add("buyerName", "购买购买方名称购买方名称购买方名称"); OuterMessage.Add("buyerAddress", "购买方地址"); OuterMessage.Add("buyerTel", "1234-56789104"); OuterMessage.Add("sellerBankAccount", "123456789"); OuterMessage.Add("sellerAddress", "深圳市福田区沙头街道天安社区深南大道车是多少大所大所大多所大所大cdtuiolj"); OuterMessage.Add("sellerTel", "17603327743"); OuterMessage.Add("takerEmail", "767034475@qq.com"); OuterMessage.Add("drawerName", ""); OuterMessage.Add("casherName", "收款人Dd"); OuterMessage.Add("reviewerName", "复核人Bb"); OuterMessage.Add("takerName", ""); OuterMessage.Add("definedData", "测试数据1,测试数据2"); Hashtable InnerMessageOne = new Hashtable(); InnerMessageOne.Add("taxClassificationCode", "1010101020000000000"); //税收分类编码(可以按照Excel文档填写) InnerMessageOne.Add("quantity", "1.00"); //数量 InnerMessageOne.Add("goodsName", "货物名称"); //货物名称 InnerMessageOne.Add("unitPrice", "5.64"); //单价 InnerMessageOne.Add("invoiceAmount", "5.64"); //金额 InnerMessageOne.Add("taxRateValue", "0.16"); //税率 InnerMessageOne.Add("includeTaxFlag", "0"); //含税标识 Hashtable InnerMessageTwo = new Hashtable(); InnerMessageTwo.Add("taxClassificationCode", "1010101020000000000"); //税收分类编码(可以按照Excel文档填写) InnerMessageTwo.Add("quantity", "1.00"); //数量 InnerMessageTwo.Add("goodsName", "货物名称"); //货物名称 InnerMessageTwo.Add("unitPrice", "5.64"); //单价 InnerMessageTwo.Add("invoiceAmount", "5.64"); //金额 InnerMessageTwo.Add("taxRateValue", "0.16"); //税率 InnerMessageTwo.Add("includeTaxFlag", "0"); //含税标识 itemList.Add(InnerMessageOne); itemList.Add(InnerMessageTwo); OuterMessage.Add("itemList", itemList); string content = ToJson.Table2Json(OuterMessage); String builderrequest = PublicData.publicparam(content, platform_code, platform_alias, privateKey, password); string response = PostJson.Post4Json(url, builderrequest); Console.WriteLine("最终返回:" + response); return response; } /** * 红票开具接口 */ public static void testInvoiceRed() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/invoiceRed.pt"; Hashtable map = new Hashtable(); map.Add("taxpayerNum", "110101201702071"); //销方税号(请于要冲红的蓝票税号一致) // TODO 请更换请求流水号前缀 map.Add("invoiceReqSerialNo", platform_alias + "5678902275418903"); //发票流水号 (唯一, 与蓝票发票流水号不一致) map.Add("invoiceCode", "150003529999"); //冲红发票的发票代码 map.Add("invoiceNo", "61033842"); //冲红发票的发票号码 map.Add("redReason", "冲红"); //冲红原因 map.Add("amount", "-65.70"); //冲红金额 (要与原发票的总金额一致) string content = ToJson.Table2Json(map); String builderrequest = PublicData.publicparam(content, platform_code, platform_alias, privateKey, password); string response = PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:" + response); } /** * 开票二维码接口 */ public static void testGetQrCodeByItems() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/getQrCodeByItems.pt"; Hashtable map = new Hashtable(); map.Add("taxpayerNum", "110101201705230001"); //销方纳税人识别号 map.Add("enterpriseName", "测试"); //销方企业名称 map.Add("tradeNo", platform_alias + "10002001");//订单号(唯一) map.Add("tradeTime", "2017-06-26 09:15:54"); //交易时间 map.Add("invoiceAmount", "100"); //发票金额(含税) map.Add("casherName", "收款人A"); //收款人姓名(校验规则: 中文/字母大小写/及其两者组合) map.Add("reviewerName", "审核人A"); //审核人姓名(校验规则: 中文/字母大小写/及其两者组合) map.Add("drawerName", "开票人A"); //开票人姓名(校验规则: 中文/字母大小写/及其两者组合) map.Add("allowInvoiceCount", "1"); //允许开票张数(非必填 默认值:1) // map.put("smsFlag", "false"); //是否发送短信 (非必填 默认值:false 测试环境不发送短信) // map.put("expireTime", ""); //有效时间 (非必填 默认值:永久有效 填写格式 yyyy-MM-dd HH:mm:ss) // map.put("email","XXXXX@XX.com"); //二维码发送邮箱地址(非必填) //其他参数见接口文档 ArrayList list = new ArrayList(); Hashtable listMapOne = new Hashtable(); listMapOne.Add("itemName", "小麦"); //开票项目名 listMapOne.Add("taxRateValue", "0.16"); //税率 listMapOne.Add("taxClassificationCode", "1010101020000000000");//税收分类编码 listMapOne.Add("quantity", "1"); //数量 listMapOne.Add("unitPrice", "50"); //单价 listMapOne.Add("invoiceItemAmount", "50"); //金额 Hashtable listMapTwo = new Hashtable(); listMapTwo.Add("itemName", "大米"); listMapTwo.Add("taxRateValue", "0.16"); listMapTwo.Add("taxClassificationCode", "1010101020000000000"); listMapTwo.Add("quantity", "1"); listMapTwo.Add("unitPrice", "50"); listMapTwo.Add("invoiceItemAmount", "50"); list.Add(listMapOne); list.Add(listMapTwo); map.Add("itemList", list); string content = ToJson.Table2Json(map); String builderrequest=PublicData.publicparam(content,platform_code,platform_alias,privateKey,password); string response= PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:"+response); } /** * 作废二维码接口 */ public static void testdeleteInvoiceQrCode() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/deleteInvoiceQrCode.pt"; string content = "[{\"taxpayerNum\":\"110101201705230001\",\"enterpriseName\":\"测试\",\"tradeNo\":\"DEMO10002001\",\"tradeTime\":\"2017-06-26 09:15:54\",\"invoiceAmount\":\"100\"}]"; String builderrequest=PublicData.publicparam(content,platform_code,platform_alias,privateKey,password); string response= PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:"+response); } /** * 查询发票 */ public static void testqueryInvoice() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/queryInvoice.pt"; // String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/queryInvoiceInfo.pt"; //查询发票票面全面信息地址 String content = "{ \"taxpayerNum\": \"110101201702071\", \"invoiceReqSerialNo\": \"DEMO6678997514279636\"}"; String builderrequest = PublicData.publicparam(content, platform_code, platform_alias, privateKey, password); string response = PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:" + response); } /* * 获取库存接口 */ public static void testGetInvoiceRepertoryInfo() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/getInvoiceRepertoryInfo.pt"; String content = "{\"taxpayerNum\":\"110101201702071\",\"enterpriseName\":\"电子票测试新1\"}"; String builderrequest = PublicData.publicparam(content, platform_code, platform_alias, privateKey, password); string response = PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:" + response); } /** * 插入微信卡包接口 */ public static void testAuthWeChatCards() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/authWeChatCards.pt"; String content = "{\"taxpayerNum\":\"110101201705230001\",\"invoiceReqSerialNo\":\"GAGA0000000000000009\"}"; String builderrequest = PublicData.publicparam(content, platform_code, platform_alias, privateKey, password); string response = PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:" + response); } /** * 查询发票抬头 */ public static void testTitleInfo() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/getInvoiceTitleInfo.pt"; String content = "{\"enterpriseName\":\"测试\"}"; String builderrequest = PublicData.publicparam(content, platform_code, platform_alias, privateKey, password); string response = PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:" + response); } /** * 查询票通宝状态接口 */ public static void testGetPTBoxStatus() { String url = "http://fpkj.testnw.vpiaotong.cn/tp/openapi/getPTBoxStatus.pt"; String content = "{\"taxpayerNum\":\"110101201702071\",\"enterpriseName\":\"电子票测试新1\"}"; String builderrequest = PublicData.publicparam(content, platform_code, platform_alias, privateKey, password); string response = PostJson.Post4Json(url, builderrequest); Console.Write("最终返回:" + response); } } }