package com.stylefeng.guns.modular.api;
|
|
|
import com.alibaba.fastjson.JSON;
|
import com.stylefeng.guns.core.util.ToolUtil;
|
import com.stylefeng.guns.modular.system.service.IUserInfoService;
|
import com.stylefeng.guns.modular.system.util.PayMoneyUtil;
|
import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackRequest;
|
import com.stylefeng.guns.modular.system.util.Tingg.model.CallbackResponse;
|
import com.stylefeng.guns.modular.system.util.Tingg.model.Payments;
|
import com.stylefeng.guns.modular.system.util.UUIDUtil;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.web.bind.annotation.*;
|
|
import javax.servlet.http.HttpServletRequest;
|
import javax.servlet.http.HttpServletResponse;
|
import java.io.PrintWriter;
|
import java.util.Map;
|
|
|
/**
|
* 支付回调
|
*/
|
@RestController
|
@RequestMapping("/base")
|
public class UserCallbackController {
|
|
@Autowired
|
private IUserInfoService userInfoService;
|
|
@Autowired
|
private PayMoneyUtil payMoneyUtil;
|
|
|
|
/**
|
* 微信余额充值回调函数
|
* @param callbackRequest
|
*/
|
@ResponseBody
|
@PostMapping("/IGO/wxCancelUserBalance")
|
public CallbackResponse wxCancelUserBalance(@RequestBody CallbackRequest callbackRequest){
|
System.err.println("支付成功回调------>" + JSON.toJSONString(callbackRequest));
|
CallbackResponse callbackResponse = new CallbackResponse();
|
try {
|
/**
|
* 指示服务是否成功或付费的总体请求代码。。
|
* 177-部分付费请求
|
* 178-表明请求已全额支付
|
* 179-表示请求已部分支付但已过期。
|
* 129-请求已过期,未付款。
|
* 180.商户拒绝请求
|
* 183-商户接受请求,我们可以结算资金
|
* 188-商户收到请求。
|
*/
|
String request_status_code = callbackRequest.getRequest_status_code();
|
String out_trade_no = callbackRequest.getMerchant_transaction_id();
|
if("177".equals(request_status_code) || "178".equals(request_status_code)){
|
Payments payments = callbackRequest.getPayments().get(0);
|
String order_id = payments.getPayer_transaction_id();
|
if(ToolUtil.isNotEmpty(out_trade_no)){
|
// Integer language = Integer.valueOf(out_trade_no.substring(17, 18));
|
// Integer id = Integer.valueOf(out_trade_no.substring(18));
|
// userInfoService.payCancelUserBalance(null, order_id, Integer.valueOf(id), 1, language);
|
callbackResponse.setCheckout_request_id(order_id);
|
callbackResponse.setMerchant_transaction_id(out_trade_no);
|
callbackResponse.setStatus_code("183");
|
callbackResponse.setStatus_description("Payment processed successfully");
|
callbackResponse.setReceipt_number(UUIDUtil.getRandomCode(16));
|
}
|
}else{
|
callbackResponse.setCheckout_request_id(UUIDUtil.getRandomCode(16));
|
callbackResponse.setMerchant_transaction_id(out_trade_no);
|
callbackResponse.setStatus_code("180");
|
callbackResponse.setStatus_description("means payment rejected.");
|
callbackResponse.setReceipt_number(UUIDUtil.getRandomCode(16));
|
}
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
return callbackResponse;
|
}
|
|
|
/**
|
* 支付宝余额充值回调
|
* @param request
|
*/
|
@ResponseBody
|
@PostMapping("/aliCancelUserBalance")
|
public void aliCancelUserBalance(HttpServletRequest request, HttpServletResponse response){
|
try {
|
Map<String, String> map = payMoneyUtil.alipayCallback(request);
|
String id = map.get("out_trade_no");
|
String order_id = map.get("out_trade_no");
|
String[] s = order_id.split("_");
|
Integer language = Integer.valueOf(s[1]);
|
userInfoService.payCancelUserBalance(null, s[0], Integer.valueOf(id), 2, language);
|
response.setContentType("text/html;charset=UTF-8");
|
PrintWriter out;
|
out = response.getWriter();
|
out.println("success"); // 请不要修改或删除
|
}catch (Exception e){
|
e.printStackTrace();
|
}
|
}
|
|
|
|
}
|