|
|
@ -14,17 +14,25 @@ import org.slf4j.Logger; |
|
|
import org.slf4j.LoggerFactory; |
|
|
import org.slf4j.LoggerFactory; |
|
|
import org.springframework.stereotype.Service; |
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
|
|
|
|
|
@Service |
|
|
@Service |
|
|
public class WecPaymentServiceImp implements WecPaymentService { |
|
|
public class WecPaymentServiceImp implements WecPaymentService { |
|
|
|
|
|
|
|
|
Logger logger = LoggerFactory.getLogger(WecPaymentServiceImp.class); |
|
|
Logger logger = LoggerFactory.getLogger(WecPaymentServiceImp.class); |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* Native支付 |
|
|
|
|
|
* |
|
|
|
|
|
* @param orderBO |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
@Override |
|
|
@Override |
|
|
public String nativePay(OrderBO orderBO) { |
|
|
public String nativePay(OrderBO orderBO) { |
|
|
String res = ""; |
|
|
String res = ""; |
|
|
HiiposmUtil util = new HiiposmUtil(); |
|
|
HiiposmUtil util = new HiiposmUtil(); |
|
|
String merchantId = "888027018000004"; |
|
|
String merchantId = orderBO.getMchId(); |
|
|
String privateKey = "308204bc020100300d06092a864886f70d0101010500048204a6308204a202010002820101008fe86bc46878d127d0bd59b8d0ed81b5dd4066a8af2729ade7df76d4022ee9535de274d0a786e654bea82c6a6450c64cc428a79326583accbcf7724d38b5895dcd9eb542a8078ba0d9d8d2a69bd5890966aacdb6daea387b52ed662c2fef8932bd0f69155d7c1729d9da004920508dd4be72e78a0c33cbf847d3c4bce0cf2e42190e5166fea223544c1c0d7dc0fda964adc1deffce527fb75c13c802c37dd6071f071c220a8f6036c72fae13bf78c02b7fdefdc771298f05b85e341ec7e521d9d7b2d535bc16bae35c6d7b8abc670c5da46b4404ea164915d6cdd102c170c542839b0a386ce9eb46a741a11678320271d53253087c5ca44ac7851507cef9787902030100010282010061d895eda55b005b22029cce9cbfe041d77dc24f4f48417e8cf9d3c1b2fa528aec7add1241d5e72617bc20f6f5de35f65c298846f4fb687f6cbc926b0ef3dfc277dc4142611d4042cddc2ede3976a7064d583526ef11f1f5681d222b492c850c8a9fbfc3571cd8630c4cbd84fb03ca6bac52543bf8afff2f8126ebcdc0cd1d95abc8bc00d310240b16a3afbc5d0ac88a60005a2a0f149246513a4b2375142f2f41d1f84db337e834d65c76ff54291e0d45051be37dceaa7468f4becf3547905dba823ee9b5b449e24c97ea2fd74387a121018e595592735ae7234563bf1c204cd5e523169fb80838f6154c046b01f847f22e348d09210ad737ba1a9b43fbf50102818100de15a6916a0244c461305c8d8f0bd1df1f82279f9b4ae70966f61fc25d310825ccef8305146500f16154674be702f3d5f4ec639e9e03fd040c925ea1df18b19c1255f996045cd5dcd68dc0782b7760f9ce3f4279972a1a49f3a4cb8f0e2d2f2f5698667004cfdeca84335665870d95c2ab625074b73afba33aab1481be5c04dd02818100a5e278390b618190c686e8bbe91a29c2e8e9cdbea419b2725f5f7e59378f6c25fada22ff1cec891d250b75511c866c54f93d3ca05bba9e65eff2f29aab14a7ea3e83c73d9c876eaf6fc11504c5093ada16de6dac3588369ffb11f8154582d4ce3310d5fefdd94a6f18090a4a68e0ef85d4a8898b6b26e020986d0fef81a2ea4d02818036dce65f39ef0189f9f0768cc9efc392f937b00e2fd0db2e696f17fd6e0434dd11b9818679b951f84f71086ba9d002e8b22ecb955db7e283638fad2d13ee07c2648d34b128b6be6665e272cfbcfd2ac9cb77b9364c6fac3ae4a3ab5dd5c4b7c95bfd1e21422f0ffcbb97eb19fdb90f6c1de695b59fa6448fd86877126e3251490281807934611d6518687fecdeb3fc60d49200ed07b022046b163c853d13e7823614122818ec8b348a0ba134e90b5e29967a5f18014b63ebc20e6c73073386194cad67f5277a13a5643b568a342cf460375f3dec89b6dea5fa91d710aecf725368c5aea8173c14e54bb81c36169ce343805ee28d405bc777925f1ed1e0964d2c8e69dd02818073bfa2ced7b2911b5c8f9534bc5b0de8c13afeaf6d60ce5f0e6d3f732eb23a0c98586cbade606181b6c78825605c5d4b600f89aa08624c65dd649ffb093a914afe55b39943d1e10f509c67f5e344c73deaa5a10f94154a0df705942f98d8193675addb33d841a5a09f20c388898fda30b974cb9a4a6a74d5212d11a1f394971d"; |
|
|
String privateKey = orderBO.getMchPrivateKey(); |
|
|
String req_url = "https://ipos.10086.cn/cps/cmpayService"; |
|
|
String req_url = "https://ipos.10086.cn/cps/cmpayService"; |
|
|
String type = "AggregPayAmt"; |
|
|
String type = "AggregPayAmt"; |
|
|
String version = "1.0.0"; |
|
|
String version = "1.0.0"; |
|
|
@ -49,9 +57,15 @@ public class WecPaymentServiceImp implements WecPaymentService { |
|
|
signDate.append(DecimalUtil.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount())); |
|
|
signDate.append(DecimalUtil.stripTrailingZeros(orderBO.getSaleBill().getTotalAmount())); |
|
|
signDate.append(createDate); |
|
|
signDate.append(createDate); |
|
|
switch (order.getOrderType()) { |
|
|
switch (order.getOrderType()) { |
|
|
case PaymentConstant.WEC : signDate.append(PaymentConstant.QRCWC); break; |
|
|
case PaymentConstant.WEC: |
|
|
case PaymentConstant.AL : signDate.append(PaymentConstant.QRCAL); break; |
|
|
signDate.append(PaymentConstant.QRCWC); |
|
|
case PaymentConstant.CP : signDate.append(PaymentConstant.QRCCP); break; |
|
|
break; |
|
|
|
|
|
case PaymentConstant.AL: |
|
|
|
|
|
signDate.append(PaymentConstant.QRCAL); |
|
|
|
|
|
break; |
|
|
|
|
|
case PaymentConstant.CP: |
|
|
|
|
|
signDate.append(PaymentConstant.QRCCP); |
|
|
|
|
|
break; |
|
|
} |
|
|
} |
|
|
signDate.append(order.getOrderNo()); |
|
|
signDate.append(order.getOrderNo()); |
|
|
signDate.append(order.getGoodName()); |
|
|
signDate.append(order.getGoodName()); |
|
|
@ -73,9 +87,15 @@ public class WecPaymentServiceImp implements WecPaymentService { |
|
|
requestParam.append("&orderDate=").append(createDate); |
|
|
requestParam.append("&orderDate=").append(createDate); |
|
|
requestParam.append("&payWay="); |
|
|
requestParam.append("&payWay="); |
|
|
switch (order.getOrderType()) { |
|
|
switch (order.getOrderType()) { |
|
|
case PaymentConstant.WEC : requestParam.append(PaymentConstant.QRCWC); break; |
|
|
case PaymentConstant.WEC: |
|
|
case PaymentConstant.AL : requestParam.append(PaymentConstant.QRCAL); break; |
|
|
requestParam.append(PaymentConstant.QRCWC); |
|
|
case PaymentConstant.CP : requestParam.append(PaymentConstant.QRCCP); break; |
|
|
break; |
|
|
|
|
|
case PaymentConstant.AL: |
|
|
|
|
|
requestParam.append(PaymentConstant.QRCAL); |
|
|
|
|
|
break; |
|
|
|
|
|
case PaymentConstant.CP: |
|
|
|
|
|
requestParam.append(PaymentConstant.QRCCP); |
|
|
|
|
|
break; |
|
|
} |
|
|
} |
|
|
requestParam.append("&orderId=").append(order.getOrderNo()); |
|
|
requestParam.append("&orderId=").append(order.getOrderNo()); |
|
|
requestParam.append("&productName=").append(order.getGoodName()); |
|
|
requestParam.append("&productName=").append(order.getGoodName()); |
|
|
@ -93,6 +113,59 @@ public class WecPaymentServiceImp implements WecPaymentService { |
|
|
return StringUtils.isNotBlank(res) ? util.getValue(res, "sessionId") : ""; |
|
|
return StringUtils.isNotBlank(res) ? util.getValue(res, "sessionId") : ""; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 订单状态查询 |
|
|
|
|
|
* |
|
|
|
|
|
* @param orderBO |
|
|
|
|
|
* @return |
|
|
|
|
|
*/ |
|
|
|
|
|
@Override |
|
|
|
|
|
public Boolean orderResult(OrderBO orderBO) { |
|
|
|
|
|
Order order = orderBO.getOrder(); |
|
|
|
|
|
String orderId = order.getOrderNo(); |
|
|
|
|
|
String req_url = "https://ipos.10086.cn/cps/cmpayService"; |
|
|
|
|
|
String type = "AggregQueryCPS"; |
|
|
|
|
|
String version = "1.0.0"; |
|
|
|
|
|
String reserved = order.getReserved(); |
|
|
|
|
|
String signType = PaymentConstant.SIGN_TYPE; |
|
|
|
|
|
String requestId = DateUtil.getDateString(25); |
|
|
|
|
|
String merchantId = order.getMchId(); |
|
|
|
|
|
String privateKey = orderBO.getMchPrivateKey(); |
|
|
|
|
|
String characterSet = PaymentConstant.CHARACTER_SET; |
|
|
|
|
|
|
|
|
|
|
|
StringBuilder signData = new StringBuilder(); |
|
|
|
|
|
signData.append(merchantId); |
|
|
|
|
|
signData.append(requestId); |
|
|
|
|
|
signData.append(signType); |
|
|
|
|
|
signData.append(type); |
|
|
|
|
|
signData.append(version); |
|
|
|
|
|
signData.append(orderId); |
|
|
|
|
|
signData.append(reserved); |
|
|
|
|
|
try { |
|
|
|
|
|
StrBuilder requestParam = new StrBuilder(); |
|
|
|
|
|
HiCASignUtil2 rsa = new HiCASignUtil2(privateKey, "111"); |
|
|
|
|
|
requestParam.append("hmac=").append(rsa.sign(signData.toString())); |
|
|
|
|
|
requestParam.append("&characterSet=").append(PaymentConstant.CHARACTER_SET); |
|
|
|
|
|
requestParam.append("&merchantId=").append(merchantId); |
|
|
|
|
|
requestParam.append("&requestId=").append(requestId); |
|
|
|
|
|
requestParam.append("&signType=").append(signType); |
|
|
|
|
|
requestParam.append("&type=").append(type); |
|
|
|
|
|
requestParam.append("&version=").append(version); |
|
|
|
|
|
requestParam.append("&orderId=").append(orderId); |
|
|
|
|
|
requestParam.append("&reserved1=").append(reserved); |
|
|
|
|
|
|
|
|
|
|
|
HiiposmUtil util = new HiiposmUtil(); |
|
|
|
|
|
String res = util.sendAndRecv(req_url, requestParam.toString(), characterSet); |
|
|
|
|
|
if(util.getValue(res, "status").equals("SUCCESS")){ |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
return false; |
|
|
|
|
|
} catch (IOException e) { |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
e.printStackTrace(); |
|
|
|
|
|
} |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|