adding alipay coding

This commit is contained in:
Carl 2021-12-20 16:18:43 +08:00
parent 493484f071
commit ca38a44cad
3 changed files with 112 additions and 7 deletions

View File

@ -0,0 +1,41 @@
package net.lab1024.smartadmin.module.system.alipay;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.domain.AlipayTradePrecreateModel;
import com.alipay.api.request.AlipayTradePrecreateRequest;
import com.alipay.api.response.AlipayTradePrecreateResponse;
import net.lab1024.smartadmin.module.system.alipay.alipayModel.AliPayEntity;
import net.lab1024.smartadmin.module.system.alipay.conf.AlipayConfig;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.UUID;
@Service
public class AliPayService {
public static String notify_url = "http://47.96.75.242:10086/smart-admin-api/royalcanin/updateOrderAliPay";
public String generateQRCode(AliPayEntity aliPayEntity) throws Exception {
AlipayTradePrecreateModel model = new AlipayTradePrecreateModel();
model.setSubject("皇家宠物食品官方商城");
model.setTotalAmount(aliPayEntity.getTotal_amount());
model.setStoreId(UUID.randomUUID().toString());
model.setTimeoutExpress("3m");
model.setOutTradeNo(aliPayEntity.getOut_trade_no());
model.setBody(aliPayEntity.getBody());
model.setGoodsDetail(aliPayEntity.getGoodsDetail());
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.setBizModel(model);
request.setNotifyUrl(notify_url);
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, "json", AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
AlipayTradePrecreateResponse alipayTradePrecreateResponse = alipayClient.execute(request);
if (alipayTradePrecreateResponse.isSuccess()) {
String code = alipayTradePrecreateResponse.getQrCode();
return code;
} else {
throw new RuntimeException("支付宝生成二维码失败");
}
}
}

View File

@ -33,8 +33,6 @@ import java.util.UUID;
@RestController
public class AlipayController {
@Autowired
private GoodService goodService;
public static String notify_url = "";
@ -42,7 +40,7 @@ public class AlipayController {
* @Description: 前往支付宝第三方网关进行支付
*/
@RequestMapping("royalcanin/aliPayUnifiedOrder")
@PostMapping("royalcanin/aliPayUnifiedOrder")
public void code(@RequestBody AliPayEntity aliPayEntity, HttpServletResponse response) throws Exception{
//---------------------------------------

View File

@ -1,12 +1,16 @@
package net.lab1024.smartadmin.module.system.royalcanin.good;
import com.alipay.api.internal.util.AlipaySignature;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.lab1024.smartadmin.common.anno.OperateLog;
import net.lab1024.smartadmin.common.domain.ResponseDTO;
import net.lab1024.smartadmin.common.heartbeat.StringUtil;
import net.lab1024.smartadmin.constant.SwaggerTagConst;
import net.lab1024.smartadmin.module.system.alipay.AliPayService;
import net.lab1024.smartadmin.module.system.alipay.alipayModel.AliPayEntity;
import net.lab1024.smartadmin.module.system.alipay.conf.AlipayConfig;
import net.lab1024.smartadmin.module.system.qrcode.QRCodeUtil;
import net.lab1024.smartadmin.module.system.royalcanin.good.constant.OrderResponseCodeConst;
import net.lab1024.smartadmin.module.system.royalcanin.good.model.OrdersEntity;
@ -24,9 +28,7 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.*;
@Api(tags = {SwaggerTagConst.Admin.MANAGER_MALL_API})
@OperateLog
@ -39,6 +41,9 @@ public class OrderController {
@Autowired
private WxpayService wxpayService;
@Autowired
private AliPayService aliPayService;
@ApiOperation(value = "微信支付订单", notes = "生成订单")
@PostMapping("royalcanin/generateOrderWX")
public ResponseDTO<String> generateOrderWX(@RequestBody List<OrdersEntity> ordersEntityList, HttpServletResponse response) throws Exception {
@ -76,7 +81,7 @@ public class OrderController {
@ApiOperation(value = "更新订单", notes = "更新订单")
@RequestMapping(value = "royalcanin/updateOrderWX",method = RequestMethod.POST)
@PostMapping(value = "royalcanin/updateOrderWX")
public void updateOrder(HttpServletRequest request, HttpServletResponse response){
wxpayService.orderCallBack(request,response);
}
@ -88,4 +93,65 @@ public class OrderController {
}
@ApiOperation(value = "支付宝支付订单", notes = "生成订单")
@PostMapping("royalcanin/generateOrderAlipay")
public ResponseDTO<String> generateOrderAliPay(@RequestBody List<OrdersEntity> ordersEntityList, HttpServletResponse response) throws Exception {
StringBuffer productId = new StringBuffer();
StringBuffer productName = new StringBuffer();
String memberId = "";
String mobile = "";
int buyCount = 0;
double total_fee = 0 ;
AliPayEntity aliPayEntity = new AliPayEntity();
OrdersEntity ordersEntity = new OrdersEntity();
for (OrdersEntity ordersEntitys:ordersEntityList) {
productId.append(ordersEntitys.getProductId()+",");
productName.append(ordersEntitys.getProductName()+",");
total_fee = total_fee + Double.parseDouble(ordersEntitys.getPayAmount())*ordersEntitys.getBuyCount();
memberId = ordersEntitys.getMemberId();
mobile = ordersEntitys.getPhoneNumber();
buyCount = buyCount + ordersEntitys.getBuyCount();
}
ordersEntity.setProductId(productId.substring(0,productId.length()-1));
ordersEntity.setProductName(productName.substring(0,productName.length()-1));
ordersEntity.setOrderAmount(StringUtil.toString(total_fee));
ordersEntity.setMemberId(memberId);
ordersEntity.setPhoneNumber(mobile);
ordersEntity.setBuyCount(buyCount);
ordersEntity.setPayType("2");
if(orderService.generateOrder(ordersEntity) == 1){
aliPayEntity.setProduct_code(ordersEntity.getProductId());
aliPayEntity.setTotal_amount(StringUtil.toString(total_fee));
aliPayEntity.setOut_trade_no(ordersEntity.getOrderNo());
QRCodeUtil.createCodeToOutputStream(aliPayService.generateQRCode(aliPayEntity), response.getOutputStream());
}
return ResponseDTO.wrap(OrderResponseCodeConst.GENERATE_ORDER_FAIL);
}
@PostMapping("royalcanin/updateOrderAliPay")
public String alipayNotify(HttpServletRequest request) throws Exception {
// 获取支付宝的请求信息
Map<String, String> map = new HashMap<>();
Map<String, String[]> requestParams = request.getParameterMap();
if(requestParams.isEmpty()) {
return "failure";
}
// Map<String,String[]> 转为 Map<String,String>
for (Iterator<String> iter = requestParams.keySet().iterator(); iter.hasNext();) {
String name = iter.next();
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; i++) {
valueStr = (i == values.length - 1) ? valueStr + values[i] : valueStr + values[i] + ",";
}
map.put(name, valueStr);
}
boolean signVerified = AlipaySignature.rsaCheckV1(map, AlipayConfig.alipay_public_key, AlipayConfig.charset,
AlipayConfig.sign_type);
// 验签通过
if (signVerified) {
//支付成功后进行操作
}
return "failure";
}
}