支付宝手机支付

This commit is contained in:
liuyingfang
2023-12-01 13:50:58 +08:00
parent 8b555d4682
commit 1bc78bd416
10 changed files with 213 additions and 21 deletions

View File

@@ -1,5 +1,6 @@
package cn.pluss.platform.controller;
import cn.pluss.platform.ali.AlipayService;
import cn.pluss.platform.api.Result;
import cn.pluss.platform.api.ResultGenerator;
import cn.pluss.platform.dto.*;
@@ -15,6 +16,7 @@ import cn.pluss.platform.notice.NoticeService;
import cn.pluss.platform.userApp.UserAppService;
import cn.pluss.platform.util.AliPayParam;
import cn.pluss.platform.util.StringUtil;
import cn.pluss.platform.vo.AlipayVO;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
@@ -68,7 +70,8 @@ public class AlipayController {
@Resource
private MerchantIncomeService merchantIncomeService;
@Resource
private AlipayService alipayService;
@PostMapping
@@ -379,8 +382,12 @@ public class AlipayController {
// return merchantOrder;
}
// @PostMapping("/phonePay")
// public Result<?> phonePay(@RequestBody AlipayVO alipay) throws AlipayApiException {
// return alipayService.aliPayPhone(alipay.getOrderNo());
// }
/**
*
* merchantIncome:(添加收益记录). <br/>

View File

@@ -11,6 +11,7 @@ import cn.pluss.platform.entity.UserApp;
import cn.pluss.platform.exception.MsgException;
import cn.pluss.platform.userApp.UserAppService;
import cn.pluss.platform.vo.MercOrderNewVO;
import com.alipay.api.AlipayApiException;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiOperation;

View File

@@ -17,7 +17,18 @@ public enum MccAndStore {
FOOT(5,"7297"),
FAVITY(6,"8021");
FAVITY(6,"8021"),
PET(7,"5995"),
WEDDING(8,"7277"),
DRESS(9,"5699"),
FLOWER(10,"5992"),
WATER(11,"7299")
;
private final Integer value;

View File

@@ -0,0 +1,15 @@
package cn.pluss.platform.vo;
import lombok.Data;
import java.math.BigDecimal;
@Data
public class AlipayVO {
private BigDecimal totalAmount;
private String subject;
private String orderNo;
}

View File

@@ -1,6 +1,16 @@
package cn.pluss.platform.ali;
import cn.pluss.platform.api.Result;
import java.math.BigDecimal;
public interface AlipayService {
void remit(String account, String realName, String money);
/**
* H5手机支付
* @return
*/
Object aliPayPhone(String orderNo);
}

View File

@@ -1,20 +1,37 @@
package cn.pluss.platform.ali.impl;
import cn.pluss.platform.ali.AlipayService;
import cn.pluss.platform.api.Result;
import cn.pluss.platform.api.ResultGenerator;
import cn.pluss.platform.device.MercOrderNewService;
import cn.pluss.platform.entity.MercOrderNew;
import cn.pluss.platform.exception.MsgException;
import cn.pluss.platform.util.ParametersUtil;
import com.alibaba.fastjson.JSONObject;
import com.alipay.api.CertAlipayRequest;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.*;
import com.alipay.api.domain.AlipayTradeAppPayModel;
import com.alipay.api.request.AlipayFundTransUniTransferRequest;
import com.alipay.api.request.AlipayTradeAppPayRequest;
import com.alipay.api.request.AlipayTradeWapPayRequest;
import com.alipay.api.response.AlipayFundTransUniTransferResponse;
import com.alipay.api.response.AlipayTradeAppPayResponse;
import com.alipay.api.response.AlipayTradeWapPayResponse;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.UUID;
@Slf4j
@Service
public class AlipayServiceImpl implements AlipayService {
@Resource
private MercOrderNewService mercOrderNewService;
@Override
public void remit(String account, String realName, String money) {
try {
@@ -35,9 +52,9 @@ public class AlipayServiceImpl implements AlipayService {
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset("UTF-8");
certAlipayRequest.setSignType("RSA2");
certAlipayRequest.setCertPath ( "/home/syb/cert/20220622/appCertPublicKey_2021003133649094.crt" );
certAlipayRequest.setAlipayPublicCertPath ( "/home/syb/cert/20220622/alipayCertPublicKey_RSA2.crt" );
certAlipayRequest.setRootCertPath ( "/home/syb/cert/20220622/alipayRootCert.crt" );
certAlipayRequest.setCertPath("/home/syb/cert/20220622/appCertPublicKey_2021003133649094.crt");
certAlipayRequest.setAlipayPublicCertPath("/home/syb/cert/20220622/alipayCertPublicKey_RSA2.crt");
certAlipayRequest.setRootCertPath("/home/syb/cert/20220622/alipayRootCert.crt");
// certAlipayRequest.setAppId("2021003133649094");
// String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDP0ky+6wTP7mTiyuA3rfUXW9kibwU3q4V8R/zWE5zGOIaMv/bQ3La/0WWUGHd9K/bsgQ6GLBE+i74QU/3RzfdrbTvrL6GrLupMxxgdiikmvkhPRwkWVPghjNmbJhG6+gva1K8BfE0QtbP3oghnBc78TSyp02aoKFIjo98+21fXUQZs8yagoZBojoQ8zcSr09TsCB4BCm+nSEhD7yEa7HyPcX+FkMtRFXt0XsxnBwV/9T95vaBNGKQoNdvY5evIVRnSInc4E4k8MU3sm+YxrPHWMKWZJn2SP/1kPXIGc/IZkf6AZGeZXMNL36kz8k6Z/1f/TsOKioHX5J498ueuc1HvAgMBAAECggEARDtKoUAuQ0qE6wUq2n0NxA6O2sRSlTWGTQihlXO4/EegvWNlWKuugInybM4fpQQjPQEeUKT1QHDHBTteUVzrR+UEUDJCRR7RJEYVv9UVr7e3q/epnyBkmzdQVqUIGzhvXfiIQNebwcm2fa5ATfrVO3bnHBbhVIJwfW0XJd8EFxfWonUDjtPfk8wTEjmNqz6vXhpk3ncV7MMY07ehbYaMA4NbbysABKRP0S9515JUX0NkBtxnhVm2ojcoc1Wjy3//TN8RXpC17E1Tyd/9pQIxmosLjS1gcX1WzphMZU0Y/74yHiE0WQCKP3J6PkdBTQDIqubyRdErJ9TYSe9+u3OZyQKBgQDrtap3LItv8IjH6O5Lg4xMU9r9dFW8QVc3dD1yn+wWq5x54mnUo5d6cTa7HqZ9SgS7gxWQZG/km9R2cJLQsATlQjdHyEoNKtqdgl3vB8MGK+Lwh6vNhE2z2svRJqQpzZfs1dKwI74mASDzwu/HjdkOFO2BVzjG3IPmrDRmN+7w8wKBgQDhthAKdbkhb7vjlgckGqDyy28QVb1YfZ4YzwW5aZiAhBmQhfZZEB5/KAYKRkToFg6Nqz6cBHwb1rH1YtOua8Dgr5XsqPQz9+MCCrUKxVt/1ziWhkpaNxEobT7QYtJiaGvuLxGP7uqpJGDpePCLHQTxmocsj8UgEE49HDj4qlO6FQKBgFGip5mC2gA5BIaITA/nTa4Z1Ny3cAI1dymDnsyWSsRHR3iHTDQTPKFxmI0SPoNiIWV4Lv3Fa2N3/QvQTWjtraRhXJgF7G/HCdRHlJT20TrP9FduBbi2O9swyip0AaNgy1+BZukOWAr9lRYXy8gHfsd7xA5p0QY+1YgM2FEWyjC1AoGBAKaSAsKFYGuRltp9BKYbVL35bexjKgodIkhyt2m+yQHG+0rR4hyWLbtvYQ3CD+YrKPBZ+SmQkbrFta0/ErL86Gmoiv8NLLMRdCE0n6jkPwNYZHWJg2OSkgIApUOKOnLPVx9+8voCuoC6zR5f1z0C3Hwkqy8ypqpj/ilRI6Y3pPSFAoGAaxBlqCUBFEhs/FnYf9neoPzx9WYDmJY7PgNgZ/s0H9vaGqyWPLWyF95/dTZ5yrBsABQyuIfDa2/m8y1YJaIJ/qU29FDq/GMv6IX4zDgm2iaWNZFnMoW7qSEkpVISSLoVxat4D556YI6FrQeoUAS+L1iEFgS33ln1tTyqb7mSe00=";
@@ -86,4 +103,137 @@ public class AlipayServiceImpl implements AlipayService {
throw new MsgException(e.getMessage());
}
}
@Override
public Object aliPayPhone(String orderNo) {
MercOrderNew mercOrder = mercOrderNewService.getOrderByNo(orderNo);
if (mercOrder == null) {
throw new MsgException("订单号有误");
}
//app
mercOrder.setOrderNo(orderNo);
mercOrder.setOrderAmt(mercOrder.getOrderAmt());
mercOrder.setReceiver(mercOrder.getReceiver());
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", ParametersUtil.ZY_ALI_APP_ID,
ParametersUtil.ZY_PRI, "json", "UTF-8", ParametersUtil.ZY_PUB, "RSA2");
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
request.setNotifyUrl(ParametersUtil.domain+"/wap/merchant/aliCallBack");
request.setReturnUrl("");
JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", mercOrder.getOrderNo());
bizContent.put("total_amount", mercOrder.getOrderAmt());
bizContent.put("subject", mercOrder.getReceiver());
/************/
bizContent.put("product_code", "QUICK_MSECURITY_PAY");
request.setBizContent(bizContent.toString());
AlipayTradeWapPayResponse response = null;
try {
response = response = alipayClient.sdkExecute(request);
} catch (AlipayApiException e) {
throw new RuntimeException(e);
}
if (response.isSuccess()) {
System.out.println("success");
String body = response.getBody();
return body;
} else {
System.out.println("fail");
return "支付失败";
}
// String privateKey = ParametersUtil.ZY_PRI;
// String alipayPublicKey = ParametersUtil.ZY_PUB;
// AlipayConfig alipayConfig = new AlipayConfig();
// alipayConfig.setServerUrl("https://openapi.alipay.com/gateway.do");
// alipayConfig.setAppId(ParametersUtil.ZY_ALI_APP_ID);
// alipayConfig.setPrivateKey(privateKey);
// alipayConfig.setFormat("json");
// alipayConfig.setAlipayPublicKey(alipayPublicKey);
// alipayConfig.setCharset("UTF-8");
// alipayConfig.setSignType("RSA2");
// AlipayClient alipayClient = null;
// try {
// alipayClient = new DefaultAlipayClient(alipayConfig);
// } catch (AlipayApiException e) {
// throw new RuntimeException(e);
// }
// AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
// AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
// model.setOutTradeNo(mercOrder.getOrderNo());
// model.setTotalAmount(mercOrder.getOrderAmt().toString());
// model.setSubject(mercOrder.getReceiver());
// request.setBizModel(model);
// AlipayTradeAppPayResponse response = null;
// try {
// response = alipayClient.sdkExecute(request);
// } catch (AlipayApiException e) {
// throw new RuntimeException(e);
// }
//
// if (response.isSuccess()) {
// System.out.println("调用成功");
// return ResultGenerator.genSuccessResult(response.getBody());
// } else {
// System.out.println("调用失败");
// return ResultGenerator.genFailResult("支付失败");
// }
}
public String moneyForMat(BigDecimal amount) {
DecimalFormat formatter = new DecimalFormat("#0.00");
String formattedAmount = formatter.format(amount);
return formattedAmount;
}
public static void main(String[] args) throws AlipayApiException {
MercOrderNew mercOrder = new MercOrderNew();
//// if (mercOrder == null){
//// throw new MsgException("订单号有误");
//// }
mercOrder.setOrderNo("b3dc8aab4f204be7b7bc6738dc91ddd2");
mercOrder.setOrderAmt(new BigDecimal("0.1"));
mercOrder.setReceiver("测测测");
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", "2021003175619219",
"MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCInywsrhhiSNj7jjOB4/zL79pAaLzoYOuOqHeQELxgXrVFmpqJ7y76wniu4nrHKfp4jQVIHw4+IkBsTNwABTPiryVzAQ4ydb/opzn4zblWRB4S7mAgnc2wqO4FMcwSOiHh7uPFAqvB8oZmEizlbXIJSiDFd3rqG2l8ZADjwuwM0nue1fUJLu65d2B6NDFgBIa11enkrNyX9uPiaeIFW62lvTN1W2AUqTJLvfko5ejExGUDkie6g5W5MIvUSKfq7sDkpt5IoQCooBzjJJ/Ckfw/rJlqoPDFzUSiANBABwu0jAJ42MGYdJ8+dyDDUNla20xmMjXbRtUe5roVzJrrgMjFAgMBAAECggEAPKPx9o77sbxF2zod8JxiW57Fj+stVjOWuoZaM27KPjgrW46o42pvvsvMx0stVfNzAkkNvBpUtw167Nccm0Gz6vz0sVwZkhojqT94gs/FYN3xP1PhBPkmEDCbHWEiBEEbQu5G2O47kGV2dB3DIb53bFoju6Ixw3GRW64DmxSss2+ZsErAWPBwbxIbUDGzIxtGhuWrvWX6pSnnvs+PNNqyoisXnh4cDjrmS9qSgsgcL4D0HwNGTsG1uBeLx4g3D2vKKqhP1osEly91P0QAGzcpuvKqeJ2ZwfFMDlabeOyqRQxFW/FLT2DuY1KmBhcGx6tjDMo7EEpVJ7NHcSHYfAa6wQKBgQDzZbIAV7shEiwS6ZwLSbeMvJkWELJtmEGk/qI/01tULHmrwDh8FIjbrHZrQNXruZ+dS+RObahCKywjYVEr/g15v5vv4yA20bmUgmO27/mVj6mpwvoHYBn0H/511a6V7lopFlCA735K+liFZ6ZW+qZxV8gkZ3/ZZDUy1LSArQmg8QKBgQCPsiK+mUdvs+1ReDm09RessbastXgYvj6UWIsPHc4Mxx/6R8qgy9nt2n2u95cK2uONtpNWswpDtOeWVakuHSKHbdG7Xz0DlklHuzin2JhOBwBu36HAVDjWPF+JDcVkUz7hFWFwl0DawRijFBcr0OV6GUoUURB21xtRnrQPmK/lFQKBgHPWFE7hceedVGhz0ZX1sWtDXsAHlkNeUO+LWAB0QGTg/c7lnnw+8ZtKitkkdCrJntMniTJiMc+76De2WwFK2XL14+rY9z3ftiidnYM01l19j8uBRak47WEn0NyXo40rcLFZM1sJn9tjJbnnyFxg0dHjaxcYQtpdPIxCet06fPihAoGAfaqJ3CnsYXH3H4KG5Qxa8fpRCWWCbBEkZVOx+TxVkLMr8hOKz2i3Y93qgHOisimPS8XZwL6/QUsaJU0wsVVldw7Blp3JnDN4TrUa7R7sw4A4Dr6glLSTKDiQTCmw8PYkTXAHURHV8/le9G+DfBwqM8eeE3p5bZTdHVovmlwrp6kCgYEA7uTSOa0phZ7ts++FVdEZf9TI/B4tRuP4aT31BHs9UoCW1g01/NEEBDiHV9udq9B6Cd5onq+QFj4jiwakTNzXjhQZqgmag1TBE9VpahLxYAD5pYn/Tvm8l5vWuSKcOSwQb2lDg5R2/bmCJRV/QHRkdkAAhHGC/TrOskUCRgosUac=",
"json", "UTF-8", "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAiQkrz+emAuS1mB3KKDOMmAZRd/BlPbh7fAIHAqAj1+QCZNcV3o2BTLIIqnuKpSlFXDG3uDzp2VsBxcizXuBbFyPGylnD9CgCj5abyh3+FIHPAZ2IM3TtpqImZ0TSPGXrMli4Nir7MvZktgccCqQKCC4o6iaDGz+UwWwJUIPna8fm2tiTZ+KH150CZbKVj4ZGNpBh5XSV/1dRgyQIV9D/EwSbkZ0n6VgKQLJBi0C2UE3QB17aL1Ir6+gDXIDbknN8O7GUD3aMGdThYdSRUb5wp9CZ5qfV7vCS/CgaRo38nhH3NOzkTL+7v0m1ZDHPmqEkn9VzZN6sCQdL7PoAOjHOCwIDAQAB", "RSA2");
AlipayTradeWapPayRequest request = new AlipayTradeWapPayRequest();
JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", mercOrder.getOrderNo());
bizContent.put("total_amount", mercOrder.getOrderAmt());
bizContent.put("subject", mercOrder.getReceiver());
/************/
bizContent.put("product_code", "QUICK_MSECURITY_PAY");
request.setBizContent(bizContent.toString());
AlipayTradeWapPayResponse response = null;
try {
response = alipayClient.sdkExecute(request);
} catch (AlipayApiException e) {
throw new RuntimeException(e);
}
if (response.isSuccess()) {
System.out.println("success");
System.out.println(response.getBody());
} else {
System.out.println("fail");
}
}
// sdk版本是"4.38.0.ALL"及以上,可以参考下面的示例获取诊断链接
// String diagnosisUrl = DiagnosisUtils.getDiagnosisUrl(response);
// System.out.println(diagnosisUrl);
}

View File

@@ -1,6 +1,7 @@
package cn.pluss.platform.device.impl;
import cn.pluss.platform.ali.AliService;
import cn.pluss.platform.ali.AlipayService;
import cn.pluss.platform.api.ResultCode;
import cn.pluss.platform.constants.Constant;
import cn.pluss.platform.device.DeviceSpecService;
@@ -111,6 +112,8 @@ public class MercOrderNewServiceImpl extends ServiceImpl<MercOrderNewMapper, Mer
@Resource
private SxfPayService sxfPayService;
@Resource
private AlipayService alipayService;
/**
* 设备订单分页查询
@@ -284,14 +287,8 @@ public class MercOrderNewServiceImpl extends ServiceImpl<MercOrderNewMapper, Mer
}
result.put("type", "1");
if (Constant.PAY_TYPE_ALIPAY.equals(orderNewDTO.getPayType())) {
// TODO 生成支付宝订单数据并返回给APP
String payUrl = ParametersUtil.domain + "/wap/aliPay/returnUrl?orderNumber=" + mercOrderNew.getOrderNo();
try {
String pUrl = URLDecoder.decode(payUrl, "UTF-8");
result.put("payUrl", Constant.ALIPAY_H5_PAY_URL_PRIFIX + pUrl);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// app支付
return alipayService.aliPayPhone(mercOrderNew.getOrderNo());
} else {
result.put("type", "2");
// TODO 生成微信支付订单数据并将小程序付款路径返回到APP中

View File

@@ -112,9 +112,6 @@ public class LaKalaInterfaceImpl {
@Lazy
@Autowired
MerchantImageMapper merchantImageMapper;
@Lazy
@Autowired
MerchantBackLklService merchantBackLklService;
private static final String client_id = "chaozhanggui";

View File

@@ -3,6 +3,7 @@ package cn.pluss.platform.merchant.impl.account;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.DesensitizedUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONUtil;
import cn.pluss.platform.BankCardService;
import cn.pluss.platform.IdCardService;
import cn.pluss.platform.channel.MerchantAuditService;
@@ -412,8 +413,10 @@ public class AccountServiceImpl extends ServiceImpl<AccountMapper, Account> impl
bankCardService.save(accountDTO.getBankCard());
account.setBankCardId(accountDTO.getBankCard().getId() + "");
System.out.println("old+++++++++++++++"+JSONUtil.toJsonStr(accountOld));
//看一下之前默认
if (accountOld.getValid() == 1) {
if (accountOld == null || accountOld.getValid() == null || accountOld.getValid() == 1 ) {
account.setValid(1);
} else {
account.setValid(0);

View File

@@ -486,6 +486,7 @@ public class WechantController {
String orderNumber = params.getString("orderNumber");
System.out.println("orderNumber"+orderNumber);
String appId=params.containsKey("appId")?params.getString("appId"):null;
System.out.println("appid++++"+appId);
return apiPayService.orderPay(openid,orderNumber,appId);
}