TestOpenApiV1.java 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package com.iamberry.nuonuo.test;
  2. import com.iamberry.nuonuo.bean.PrivateData;
  3. import com.iamberry.nuonuo.bean.PublicData;
  4. import com.iamberry.nuonuo.bean.RequestMode;
  5. import com.iamberry.nuonuo.exception.OpensnsException;
  6. import com.iamberry.nuonuo.oauth.Oauth2AccessToken;
  7. import com.iamberry.nuonuo.service.OpenApiV1;
  8. import com.iamberry.nuonuo.util.SecurityUtil;
  9. import com.iamberry.nuonuo.util.StateData;
  10. import com.iamberry.nuonuo.util.ValidataUtil;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15. /**
  16. * 测试示例
  17. * @author sdk.jss.com.cn
  18. * @version 2.0
  19. * @since jdk1.6
  20. */
  21. public class TestOpenApiV1 {
  22. public static void main(String[] args) {
  23. TestOpenApiV1.setHeader();
  24. Map<String,String> headers = getHeaders();
  25. PublicData pdData = getPublicData();
  26. PrivateData<Object> pvData = new PrivateData<Object>();
  27. List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
  28. List<Map<String,Object>> list_invoiceDetail = new ArrayList<Map<String,Object>>();
  29. Map<String,Object> map_s = new HashMap<String,Object>();
  30. Map<String,Object> map_order = new HashMap<String,Object>();
  31. Map<String,Object> map_invoiceDetails = new HashMap<String,Object>();
  32. map_order.put("pushMode", "1");
  33. map_order.put("buyerName", "安徽省安迈达进出口有限公司");
  34. map_order.put("buyerTaxNum", "913400007349708745");
  35. map_order.put("buyerPhone", "17098074113");
  36. map_order.put("buyerAddress", "333");
  37. map_order.put("buyerAccount", "333");
  38. map_order.put("orderNo", System.currentTimeMillis() + "001");
  39. map_order.put("invoiceDate", "2016-06-15 01:59:41");
  40. map_order.put("clerk", "袁牧庆");
  41. map_order.put("salerAccount", "东亚银行杭州分行131001088303400");
  42. map_order.put("salerTel", "0571-87022168");
  43. map_order.put("salerAddress", "杭州市中河中路222号平海国际商务大厦5楼");
  44. map_order.put("salerTaxNum", "339901999999142");
  45. map_order.put("invoiceType", "1");
  46. map_order.put("remark", "开票机号为02 请前往诺诺网(www.jss.com.cn)查询发票详情");
  47. map_order.put("payee", "络克");
  48. map_order.put("checker", "朱燕");
  49. map_order.put("invoiceCode", "11");
  50. map_order.put("invoiceNum", "11");
  51. map_order.put("pushMode", "1");
  52. map_order.put("email", "122@qq.com");
  53. map_order.put("listFlag", "0");
  54. map_order.put("listName", "1111");
  55. map_order.put("buyerTel", "0571-88888888");
  56. map_order.put("proxyInvoiceFlag", "0");
  57. map_order.put("departmentId", "23456790");
  58. map_order.put("clerkId", "");
  59. map_invoiceDetails.put("goodsName", "1");
  60. map_invoiceDetails.put("num", "1");
  61. map_invoiceDetails.put("withTaxFlag", "1");
  62. map_invoiceDetails.put("price", "46.79");
  63. map_invoiceDetails.put("taxRate", "0.16");
  64. map_invoiceDetails.put("specType", "1");
  65. map_invoiceDetails.put("unit", "1");
  66. map_invoiceDetails.put("goodsCode", "1090511030000000000");
  67. map_invoiceDetails.put("selfCode", null);
  68. map_invoiceDetails.put("invoiceLineProperty", "0");
  69. map_invoiceDetails.put("favouredPolicyFlag", "0");
  70. map_invoiceDetails.put("favouredPolicyName", null);
  71. map_invoiceDetails.put("zeroRateFlag", null);
  72. map_invoiceDetails.put("deduction", null);
  73. map_invoiceDetails.put("tax", "6.45");
  74. map_invoiceDetails.put("taxIncludedAmount", "46.79");
  75. map_invoiceDetails.put("taxExcludedAmount", "40.34");
  76. list_invoiceDetail.add(map_invoiceDetails);
  77. map_order.put("invoiceDetail", list_invoiceDetail);
  78. map_order.put("invoiceLine", "p");
  79. map_order.put("productOilFlag", "0");
  80. map_s.put("order", map_order);
  81. list.add(map_s);
  82. pvData.setServicedata(list);
  83. RequestMode requestMode = getRequestMode(pdData,pvData);
  84. OpenApiV1 sdk = new OpenApiV1();
  85. try {
  86. String result = sdk.handle(StateData.url,headers, requestMode);
  87. } catch (OpensnsException e) {
  88. e.printStackTrace();
  89. }
  90. }
  91. public static void setHeader(){
  92. StateData.app_secret = "SD950B2179EB4A77"; // 填写本APP申请的 appSecret,注意区分正式环境与沙箱环境参数,如: 9B4CA8CEA5EE4823
  93. StateData.app_key = "SDnyMiOMQZ"; // 填写本APP申请的 appKey,注意区分正式环境与沙箱环境参数,如:fk5dWkPA
  94. StateData.app_api = "nuonuo.electronInvoice.requestBilling"; // 填写APP调用接口名称,如:nuonuo.speedBilling.billingByCode --开票:nuonuo.electronInvoice.requestBilling
  95. StateData.app_apiVersion = "V1.0.0"; // 填写本APP调用接口版本,如:1.0.0
  96. StateData.app_accessToken = "fdd052d08bbad090aeff770febrcasfs"; // 填写本APP申请的 令牌 ,注意区分正式环境与沙箱环境参数,如://{"access_token":"fdd052d08bbad090aeff770kgia1mkms","expires_in":86400}
  97. StateData.app_dataType = "JSON"; // 填写本APP传输数据格式,如:JSON,XML
  98. StateData.app_compressType = ""; // 填写本APP传输数据压缩格式,如:GZIP
  99. StateData.app_signType = "AES"; // 填写本APP传输数据加密格式,如:AES/AES
  100. StateData.user_Tax = ""; // 业务发生方税号(ISV类型用户必填);如:339901999999142 授权商户的税号(商家应用非必填,服务商应用必填)
  101. StateData.url = "https://sandbox.jss.com.cn/openPlatform/services";
  102. StateData.grant_type_token = "authorization_code";
  103. Oauth2AccessToken.client_id = "SDnyMiOMQZ"; //创建应用后,分配给应用的appKey
  104. Oauth2AccessToken.client_secret = "SD950B2179EB4A77"; //创建应用后,分配给应用的appSecret
  105. Oauth2AccessToken.token_grant_type = StateData.grant_type_token; //授权类型,在本步骤中,此值为“authorization_code”
  106. }
  107. // 定义请求头数据
  108. private static Map<String, String> getHeaders() {
  109. Map<String, String> headers = new HashMap<String, String>();
  110. headers.put("appKey", StateData.app_key); // 用户申请的appkey
  111. headers.put("accessToken", StateData.app_accessToken); // 用户Oauth登录后得到的令牌accessToken
  112. headers.put("compress", StateData.app_compressType);// 压缩方式:提供GZIP 置空“”不压缩
  113. headers.put("signMethod", StateData.app_signType); // 加密方式:提供AES/AES,不可为空
  114. headers.put("dataType", StateData.app_dataType); // 数据请求格式: JSON/XML
  115. headers.put("appRate", StateData.app_rate); // app并发请求数 ,平台默认10如需升级请联系开放平台
  116. headers.put("userTax", StateData.user_Tax); // ISV下商家需要填写当前商户税号,普通商家模式用户可以不填写此值
  117. headers.put("Content-Type", StateData.contentType); // http发送模式
  118. return headers;
  119. }
  120. // 定义请求体中的公共数据
  121. private static PublicData getPublicData() {
  122. PublicData pdData = new PublicData();
  123. pdData.setVersion(StateData.app_apiVersion); // API版本
  124. pdData.setTimestamp(String.valueOf(System.currentTimeMillis()));
  125. pdData.setMethod(StateData.app_api);// API名称
  126. return pdData;
  127. }
  128. private static RequestMode getRequestMode(PublicData pdata, PrivateData<Object> pvData) {
  129. RequestMode requestMode = new RequestMode();
  130. requestMode.setPrivate(pvData);
  131. requestMode.setPublic(pdata);
  132. return requestMode;
  133. }
  134. }