PayServiceImpl.java 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package com.iamberry.wechat.service.pay;
  2. import java.net.InetAddress;
  3. import java.net.UnknownHostException;
  4. import java.util.regex.Pattern;
  5. import com.iamberry.wechat.tools.NameUtils;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.stereotype.Service;
  8. import com.iamberry.app.tool.log.RatFWLogger;
  9. import com.iamberry.wechat.core.entity.pay.PayResult;
  10. import com.iamberry.wechat.face.pay.PayService;
  11. import com.iamberry.wechat.tools.WxPayUtil;
  12. import com.iamberry.wechat.tools.WxPrepayIdErrorResult;
  13. /**
  14. * @author 何秀刚 Class Description: 微信支付service实现 Create Date:2016年4月19日 Update
  15. * Date:2016年4月19日
  16. */
  17. @Service
  18. public class PayServiceImpl implements PayService {
  19. @Autowired
  20. private RatFWLogger logger;
  21. @Autowired
  22. private WxPayUtil wxPayUtil;
  23. public void setWxPayUtil(WxPayUtil wxPayUtil) {
  24. this.wxPayUtil = wxPayUtil;
  25. }
  26. private static String ip = null;
  27. static {
  28. ip = getLocalIP();
  29. }
  30. public static void main(String[] args) throws UnknownHostException {
  31. String localIP = "";
  32. InetAddress addr = (InetAddress) InetAddress.getLocalHost();
  33. // 获取本机IP
  34. localIP = addr.getHostAddress().toString();
  35. System.out.println(localIP);
  36. }
  37. public static String getLocalIP() {
  38. try {
  39. String localIP = "";
  40. InetAddress addr = (InetAddress) InetAddress.getLocalHost();
  41. // 获取本机IP
  42. localIP = addr.getHostAddress().toString();
  43. return localIP;
  44. } catch (Exception e) {
  45. return "120.76.152.52";
  46. }
  47. }
  48. private final Pattern pattern = Pattern
  49. .compile("(http[s]{0,1})://[a-zA-Z0-9\\.\\-]+\\.([a-zA-Z]{2,4})(:\\d+)?(/[a-zA-Z0-9\\.\\-~!@#$%^&*+?:_/=<>]*)?");
  50. @Override
  51. public PayResult requestPay(String openid, String orderId, Integer money,
  52. String reqPayGoodsName, String backUrl) {
  53. // TODO Auto-generated method stub
  54. PayResult payResult = new PayResult();
  55. if (!pattern.matcher(backUrl).find()) {
  56. payResult.setPayData("回调URL不正确!");
  57. return payResult;
  58. }
  59. Object object = wxPayUtil.getPackage(openid, orderId, money,
  60. ip, reqPayGoodsName, NameUtils.appId, backUrl);
  61. if (object.getClass() == String.class) {
  62. payResult.setPaySuccess(true);
  63. payResult.setPayData(object.toString());
  64. } else {
  65. WxPrepayIdErrorResult errorResult = (WxPrepayIdErrorResult) object;
  66. payResult.setPayData(errorResult.getErr_code_des());
  67. payResult.setPaySuccess(false);
  68. }
  69. return payResult;
  70. }
  71. }