SaoBeiPayController.java 9.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package com.platform.yijia.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.google.gson.Gson;
  4. import com.platform.yijia.config.YiJiaRequest;
  5. import com.platform.yijia.param.request.PayInfoRequest;
  6. import com.platform.yijia.service.*;
  7. import com.platform.yijia.utils.ResultData;
  8. import com.platform.yijia.utils.weixinapp.WxPushUtil;
  9. import com.saobei.open.sdk.DefaultSaobeiApiClient;
  10. import com.saobei.open.sdk.SaobeiApiClient;
  11. import com.saobei.open.sdk.model.requst.trade.SaobeiJsPayRequest;
  12. import com.saobei.open.sdk.model.requst.trade.SaobeiMiniPayRequest;
  13. import com.saobei.open.sdk.model.requst.trade.preauth.SaobeiPreAuthMiniPayRequest;
  14. import com.saobei.open.sdk.model.response.trade.SaobeiJsPayResponse;
  15. import com.saobei.open.sdk.model.response.trade.SaobeiMiniPayResponse;
  16. import com.saobei.open.sdk.model.response.trade.preauth.SaobeiPreAuthMiniPayResponse;
  17. import net.sf.json.JSONObject;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20. import org.springframework.beans.factory.annotation.Value;
  21. import org.springframework.stereotype.Controller;
  22. import org.springframework.transaction.annotation.Transactional;
  23. import org.springframework.web.bind.annotation.*;
  24. import javax.annotation.Resource;
  25. import java.text.SimpleDateFormat;
  26. import java.util.Date;
  27. import java.util.Random;
  28. /*
  29. * <Title> SaoBeiPayController </Title>
  30. * <Description> 第三方扫呗支付 </Description>
  31. * @Author JK
  32. * @Date 2021年8月18日
  33. */
  34. @Controller
  35. @YiJiaRequest()
  36. @CrossOrigin
  37. public class SaoBeiPayController {
  38. private static Logger logger =(Logger) LoggerFactory.getLogger(SaoBeiPayController.class);
  39. @Resource
  40. private PayOrderService payOrderService;
  41. @Resource
  42. private AppUserInfoService appUserInfoService;
  43. @Resource
  44. private StationOilGunService stationOilGunService;
  45. @Resource
  46. private CustomerGradeServices customerGradeServices;
  47. @Resource
  48. private StationService stationService;
  49. @Resource
  50. private CustomerPointsService customerPointsService;
  51. @Resource
  52. private IntegralRuleService integralRuleService;
  53. @Resource
  54. private CustomerPointsRecordService customerPointsRecordService;
  55. @Resource
  56. private WxPushUtil wxPushUtil;
  57. @Resource
  58. private GzhNewsTemplateService gzhNewsTemplateService;
  59. @Resource
  60. private CustomerManagerService customerManagerService;
  61. @Value("${yijia.path.global-prefix}")
  62. private String globalPrefix;
  63. @Value("${yijia.domainName}")
  64. private String domainName;
  65. // 商户号:852107011000070
  66. // 终端号:33336510
  67. // 密钥(token):dbea558077934b95a2f2adf57d278c40
  68. //测试
  69. // 商户号码:852105942000011
  70. // 终端号:18237172
  71. // 密钥:2ef428f4f76c414282e831baea9e4b0e
  72. //智慧易加
  73. // 商户号码:845104816000034
  74. // 终端号:18241101
  75. // 密钥:23570b46a955484d92038f6a18d2b9d6
  76. // public static final String PAY_VER = "110"; //版本号
  77. // public static final String KEY = ""; //机构秘钥
  78. // public static final String ACCESS_TOKEN = "2ef428f4f76c414282e831baea9e4b0e"; //支付秘钥
  79. // public static final String INST_NO = ""; //机构号
  80. // public static final String MERCHANT_NO = "852105942000011"; //商户号
  81. // public static final String TERMINAL_ID = "18237172"; //终端号
  82. /***
  83. * 公众号云闪付拉起支付
  84. * @param payInfoRequest
  85. * @return
  86. * @throws Exception
  87. */
  88. @RequestMapping(value = {"/yunPayGzh"}, consumes = {"application/json"}, method = {RequestMethod.POST})
  89. @ResponseBody
  90. public String yunPayGzh(@RequestBody PayInfoRequest payInfoRequest) throws Exception {
  91. //智慧易加
  92. // 商户号码:845104816000034
  93. // 终端号:18241101
  94. // 密钥:23570b46a955484d92038f6a18d2b9d6
  95. Gson gson = new Gson();
  96. ResultData resultData = null;
  97. //创建client
  98. SaobeiApiClient<SaobeiJsPayRequest, SaobeiJsPayResponse> client = new DefaultSaobeiApiClient<>("23570b46a955484d92038f6a18d2b9d6");
  99. //创建requst
  100. SaobeiJsPayRequest requst = new SaobeiJsPayRequest();
  101. requst.setPay_ver("110");
  102. requst.setPay_type("010");
  103. requst.setService_id("012");
  104. requst.setMerchant_no("845104816000034");
  105. requst.setTerminal_id("18241101");
  106. Random random = new Random();
  107. String result = "";
  108. for (int i = 0; i < 6; i++) {
  109. result += random.nextInt(10);
  110. }
  111. String ordNo_1 = System.nanoTime() + result;
  112. requst.setTerminal_trace(ordNo_1); //202003252204310000
  113. requst.setTerminal_time(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));
  114. requst.setTotal_fee("1");
  115. requst.setSub_appid("wxc8189d3b3a7283e0");
  116. requst.setOpen_id("oJR5R6r4EJhaORFcPap70r_mtFZo"); //oJR5R6r4EJhaORFcPap70r_mtFZo //oRwjv4iHjSUgxNxOJOQ_60Ln7cno
  117. requst.setOrder_body("sdk测试");
  118. String notifyUrl = "https://" + this.domainName + "/" + this.globalPrefix + "/getYunPayGzhCallback";
  119. logger.info("回调地址:"+ notifyUrl);
  120. requst.setNotify_url(notifyUrl);
  121. //发送请求
  122. System.out.println("请求报文:"+JSON.toJSONString(requst));
  123. SaobeiJsPayResponse response = client.execute(requst);
  124. System.out.println("返回报文:"+JSON.toJSONString(response));
  125. resultData = ResultData.success(response);
  126. return gson.toJson(resultData);
  127. }
  128. /***
  129. * 公众号扫呗支付回调
  130. * @param jsonObject
  131. * @return
  132. */
  133. @RequestMapping(value = "/getYunPayGzhCallback", consumes = "application/json", method = RequestMethod.POST)
  134. @ResponseBody
  135. @Transactional
  136. public JSONObject getYunPayGzhCallback(@RequestBody JSONObject jsonObject){
  137. JSONObject result = new JSONObject(); //返回给扫呗状态码
  138. System.out.println("扫呗调用回调接口返回参数:" + jsonObject);
  139. if(jsonObject.containsKey("result_code") && jsonObject.get("result_code").toString().equals("01")){
  140. //业务逻辑
  141. //返给扫呗状态码
  142. result.put("return_code", "01");
  143. result.put("return_msg", "success");
  144. }else {
  145. result.put("return_code", "02");
  146. result.put("return_msg", "fail");
  147. }
  148. return result;
  149. }
  150. /***
  151. * 小程序云闪付拉起支付
  152. * @param payInfoRequest
  153. * @return
  154. * @throws Exception
  155. */
  156. @RequestMapping(value = {"/yunPay"}, consumes = {"application/json"}, method = {RequestMethod.POST})
  157. @ResponseBody
  158. public String yunPay(@RequestBody PayInfoRequest payInfoRequest) throws Exception {
  159. //智慧易加
  160. // 商户号码:845104816000034
  161. // 终端号:18241101
  162. // 密钥:23570b46a955484d92038f6a18d2b9d6
  163. Gson gson = new Gson();
  164. ResultData resultData = null;
  165. DefaultSaobeiApiClient defaultSaobeiApiClient = new DefaultSaobeiApiClient("23570b46a955484d92038f6a18d2b9d6"); //2ef428f4f76c414282e831baea9e4b0e
  166. SaobeiMiniPayRequest requst = new SaobeiMiniPayRequest();
  167. requst.setPay_ver("110");
  168. requst.setPay_type("010");
  169. requst.setService_id("015");
  170. requst.setMerchant_no("845104816000034"); //852105942000011
  171. requst.setTerminal_id("18241101"); //18237172
  172. Random random = new Random();
  173. String result = "";
  174. for (int i = 0; i < 6; i++) {
  175. result += random.nextInt(10);
  176. }
  177. String ordNo_1 = System.nanoTime() + result;
  178. requst.setTerminal_trace(ordNo_1); //202003252204310000
  179. requst.setTerminal_time(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date())); //"20200325220431"
  180. String amt = payInfoRequest.getAmt();
  181. requst.setTotal_fee("1");
  182. String openId = payInfoRequest.getOpenId();
  183. requst.setOpen_id("oJR5R6r4EJhaORFcPap70r_mtFZo"); // oRwjv4iHjSUgxNxOJOQ_60Ln7cno obnG9jhDLvom5fGwuhYysmQTW4qQ
  184. requst.setOrder_body("sdk测试");
  185. String notifyUrl = "https://" + this.domainName + "/" + this.globalPrefix + "/getYunPayCallback";
  186. logger.info("回调地址"+ notifyUrl);
  187. requst.setNotify_url(notifyUrl);
  188. requst.setSub_appid("wxc8189d3b3a7283e0"); // wxe1135cd390b38a54 wxe568c727d466aef9 智慧易加公众号:wxc8189d3b3a7283e0
  189. System.out.println("请求报文"+ JSON.toJSONString(requst));
  190. SaobeiMiniPayResponse response = (SaobeiMiniPayResponse)defaultSaobeiApiClient.execute(requst);
  191. System.out.println("返回报文"+ JSON.toJSONString(response));
  192. resultData = ResultData.success(response);
  193. return gson.toJson(resultData);
  194. }
  195. /***
  196. * 小程序云闪付扫呗回调
  197. * @param jsonObject
  198. * @return
  199. */
  200. @RequestMapping(value = "/getYunPayCallback", consumes = "application/json", method = RequestMethod.POST)
  201. @ResponseBody
  202. @Transactional
  203. public JSONObject getYunPayCallback(@RequestBody JSONObject jsonObject){
  204. JSONObject result = new JSONObject(); //返回给扫呗状态码
  205. System.out.println("扫呗调用回调接口返回参数:" + jsonObject);
  206. if(jsonObject.containsKey("result_code") && jsonObject.get("result_code").toString().equals("01")){
  207. //业务逻辑
  208. //返给扫呗状态码
  209. result.put("return_code", "01");
  210. result.put("return_msg", "success");
  211. }else {
  212. result.put("return_code", "02");
  213. result.put("return_msg", "fail");
  214. }
  215. return result;
  216. }
  217. }