payment.java 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. package com.cnd3b.restcontroller.system.payment;
  2. import com.cnd3b.utility.Encryption;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.cnd3b.common.Controller;
  5. import com.cnd3b.utility.wechatpay.apppay.POJO.APPCreateOrderResponse;
  6. import com.cnd3b.utility.wechatpay.apppay.apppay;
  7. import com.cnd3b.utility.wechatpay.apppay.parameter;
  8. import com.cnd3b.utility.wechatpay.jsapipay.POJO.JSCreateOrderResponse;
  9. import com.cnd3b.utility.wechatpay.jsapipay.jsapipay;
  10. import com.cnd3b.utility.wechatpay.nativepay.nativepay;
  11. import java.util.Calendar;
  12. public class payment extends Controller {
  13. public payment(JSONObject content) {
  14. super(content);
  15. }
  16. /**
  17. * 创建微信支付订单
  18. *
  19. * @return
  20. */
  21. public String createAPPWechatOrder() {
  22. String fappmodel = "";
  23. if (content.containsKey("fappmodel") && !"".equals(content.getString("fappmodel"))) {
  24. fappmodel = content.getString("fappmodel");
  25. }
  26. int famount = content.getIntValue("famount");
  27. String custip = content.getString("custip");
  28. apppay apppay = new apppay();
  29. APPCreateOrderResponse response = null;
  30. if (fappmodel.equals("")) {
  31. /**
  32. * 账户充值
  33. */
  34. response = apppay.createOrder(siteid, userid, famount, custip);
  35. } else {
  36. /**
  37. * 系统授权?
  38. */
  39. response = apppay.createOrder(siteid, userid, fappmodel, famount, custip);
  40. }
  41. if ("SUCCESS".equals(response.getReturn_code()) && "SUCCESS".equals(response.getResult_code())) {
  42. String appid = response.getAppid();//应用ID
  43. String noncestr = createNonce_str(appid);//随机码
  44. String package_str = "Sign=WXPay";
  45. String partnerid = response.getMch_id();//商户号
  46. String prepayid = response.getPrepay_id();//预支付交易会话ID
  47. String timestamp = String.valueOf(Calendar.getInstance().getTime().getTime() / 1000);
  48. JSONObject object = new JSONObject();
  49. object.put("appid", appid);
  50. object.put("noncestr", noncestr);
  51. object.put("package", package_str);
  52. object.put("partnerid", partnerid);
  53. object.put("prepayid", prepayid);
  54. object.put("timestamp", timestamp);
  55. String A = "appid=" + appid + "&noncestr=" + noncestr + "&package=" + package_str + "&partnerid=" + partnerid + "&prepayid=" + prepayid + "&timestamp=" + timestamp;
  56. String stringSignTemp = A + "&key=" + parameter.key;
  57. object.put("sign", new Encryption().Encode_MD5(stringSignTemp).toUpperCase());
  58. return getSucReturnObject().setData(object).toString();
  59. } else {
  60. return getErrReturnObject().setErrMsg(response.getErr_code_des()).toString();
  61. }
  62. }
  63. /**
  64. * 创建微信小程序支付订单
  65. *
  66. * @return
  67. */
  68. public String createWechatAPPOrder() {
  69. int famount = content.getIntValue("famount");
  70. String custip = content.getString("custip");
  71. String wechat_code = content.getString("wechat_code");
  72. jsapipay apppay = new jsapipay();
  73. JSCreateOrderResponse
  74. response = apppay.createOrder(siteid, userid, famount, custip, wechat_code);
  75. if ("SUCCESS".equals(response.getReturn_code()) && "SUCCESS".equals(response.getResult_code())) {
  76. String appid = response.getAppid();//应用ID
  77. String nonceStr = createNonce_str(appid);//随机码
  78. String package_str = "prepay_id=" + response.getPrepay_id();
  79. String timeStamp = String.valueOf(Calendar.getInstance().getTime().getTime() / 1000);
  80. String signType = "MD5";
  81. JSONObject object = new JSONObject();
  82. object.put("appId", appid);
  83. object.put("nonceStr", nonceStr);
  84. object.put("package", package_str);
  85. object.put("timeStamp", timeStamp);
  86. object.put("signType", signType);
  87. String A = "appId=" + appid + "&nonceStr=" + nonceStr + "&package=" + package_str + "&signType=" + signType + "&timeStamp=" + timeStamp;
  88. String stringSignTemp = A + "&key=" + parameter.key;
  89. object.put("paySign", new Encryption().Encode_MD5(stringSignTemp).toUpperCase());
  90. return getSucReturnObject().setData(object).toString();
  91. } else {
  92. return getErrReturnObject().setErrMsg(response.getErr_code_des()).toString();
  93. }
  94. }
  95. /**
  96. * 创建微信扫码支付订单
  97. *
  98. * @return
  99. */
  100. public String createNativeWechatOrder() {
  101. String fappmodel = "";
  102. if (content.containsKey("fappmodel") && !"".equals(content.getString("fappmodel"))) {
  103. fappmodel = content.getString("fappmodel");
  104. }
  105. int famount = content.getIntValue("famount");
  106. nativepay nativepay = new nativepay();
  107. try {
  108. nativepay.setup();
  109. String codeurl = "";
  110. if (fappmodel.equals("")) {
  111. codeurl = nativepay.createOrder(siteid, userid, famount);
  112. } else {
  113. codeurl = nativepay.createOrder(siteid, userid, fappmodel, famount);
  114. }
  115. nativepay.after();
  116. if (!codeurl.equals("")) {
  117. return getSucReturnObject().setData(JSONObject.parseObject(codeurl)).toString();
  118. }
  119. } catch (Exception e) {
  120. e.printStackTrace();
  121. }
  122. return getErrReturnObject().setErrMsg("调用失败").toString();
  123. }
  124. /**
  125. * 生成随机字符串
  126. *
  127. * @return
  128. */
  129. protected String createNonce_str(String str) {
  130. return new Encryption().Encode_MD5(str + Calendar.getInstance().getTimeInMillis()).substring(0, 30);
  131. }
  132. }