修改获取平台证书

This commit is contained in:
童丽然 2024-12-27 17:43:20 +08:00
parent 92a1794046
commit ea1d053ba7
4 changed files with 25 additions and 13 deletions

View File

@ -75,7 +75,9 @@ public class WeChatPayController extends BaseController {
* 获取平台证书
* @return
*/
public AjaxResult getPlatformCertificat()
@ApiOperation("获取平台证书")
@GetMapping("/getPlatformCertificate")
public AjaxResult getPlatformCertificate()
{
return success(userWechatPayService.getPlatformCertificat());
}
@ -87,7 +89,7 @@ public class WeChatPayController extends BaseController {
*/
@ApiOperation("获取openId")
@PostMapping("/getOpenId")
public Map<String,Object> BuildOrder(@RequestBody String code)
public Map<String,Object> getOpenId(@RequestBody String code)
{
if(StringUtils.isBlank(code)){
return AjaxResult.error("code不能为空");
@ -128,7 +130,7 @@ public class WeChatPayController extends BaseController {
String out_trade_no=UUID.randomUUID().toString().replace("-", "");
while(ngUserRechargeRecordsService.SelectRechargeRecodeByRechargeCode(out_trade_no) !=null)
{
out_trade_no=UUID.randomUUID().toString().replace("-", "");;
out_trade_no=UUID.randomUUID().toString().replace("-", "");
}
System.err.println("随机字符串"+out_trade_no);
recharge.setRechargeCode(out_trade_no);
@ -159,11 +161,12 @@ public class WeChatPayController extends BaseController {
return error("系统内部订单生成失败");
}
@PostMapping("/getresult")
@PostMapping("/getresult/{merchantId}")
@ApiOperation("支付通知结果回溯")
@ResponseBody
public ResponseEntity<?> getResult(@RequestBody JSONObject jsonObject, HttpServletRequest request) throws Exception {//WeChatRechargeBacktracking backtracking
public ResponseEntity<?> getResult(@RequestParam String merchantId,@RequestBody JSONObject jsonObject, HttpServletRequest request) throws Exception {//WeChatRechargeBacktracking backtracking
// 从HTTP请求头中获取微信签名和时间戳等值
System.out.println("merchantId"+merchantId);
System.out.println("微信回调开始---------");
String wechatpaySignature = request.getHeader("Wechatpay-Signature");//验签的签名值
String wechatpaySerial = request.getHeader("Wechatpay-Serial");//序列号

View File

@ -27,8 +27,6 @@ public class UserRechargeController extends BaseController {
@Autowired
private IUserRechargeCardsService userRechargeCardsService;
/**
* 修改用户充值卡金额
*/

View File

@ -25,7 +25,7 @@ public interface IUserWechatPayService {
/**
* 获取平台证书
*/
public String getPlatformCertificat();
public Map<String,Object> getPlatformCertificat();
}

View File

@ -54,8 +54,8 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
//微信小程序appSecret
public static String appSecret="7f591f559929a3bf2dbea4e156b08ae9";
//微信支付公钥地址
//public static String publicKeyPath="fastbee-common/src/main/java/com/fastbee/common/utils/pay/wechat_public_key.pem";
public static String publicKeyPath="fastbee-common/src/main/java/com/fastbee/common/utils/pay/wechat_public_key.pem";
//public static String publicKeyPath="fastbee-common/src/main/java/com/fastbee/common/utils/pay/wechat_public_key.pem";
//平台证书地址
public static String platformCertificatePath="fastbee-common/src/main/java/com/fastbee/common/utils/pay/damogang_platformCertificate.pem";
//支付结果回调地址
@ -89,7 +89,7 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
reqdata.put("mchid",mchId);
reqdata.put("description",recharge.getCardnumber()+recharge.getAmount().toString());
reqdata.put("out_trade_no",recharge.getRechargeCode());
reqdata.put("notify_url",notify_url);//"\t\n" +
reqdata.put("notify_url",notify_url+"/"+mchId);//"\t\n" +
reqdata.put("payer",payer);
//String Signature=getSign(reqdata);
Map<String,String> info=getSign(reqdata,"POST","/v3/pay/transactions/jsapi");
@ -261,7 +261,7 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
* @return
*/
/*@Override*/
public String getPlatformCertificat()
public Map<String,Object> getPlatformCertificat()
{
String url="https://api.mch.weixin.qq.com/v3/certificates";
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
@ -300,6 +300,8 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
Map<String,Object> encrypt_certificate= (Map<String, Object>) map.get("encrypt_certificate");
System.err.println("111");
System.err.println(encrypt_certificate);
String serial=map.get("serial_no").toString();
System.err.println("平台证书序列号:"+serial);
String associated_data=encrypt_certificate.get("associated_data").toString();//加密证书的附加数据固定为certificate"
String ciphertext=encrypt_certificate.get("ciphertext").toString();//加密证书的随机串
String nonce=encrypt_certificate.get("nonce").toString();//加密后的证书内容
@ -318,9 +320,16 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
{
System.out.println("解密失败");
}
Map<String,Object> result=new HashMap<>();
result.put("platformCertificate",responseMap.toString());
result.put("serial",serial);
Set<String> keys=result.keySet();
for(String key : keys)
{
System.out.println(key+":"+result.get(key));
}
// 解析responseString以获取openid
return responseMap.toString(); // 这里返回的是整个响应字符串需要自行解析出openid
return result; // 这里返回的是整个响应字符串需要自行解析出openid
}
} catch (IOException e) {
throw new RuntimeException(e);
@ -330,4 +339,6 @@ public class UserWechatPayServiceImpl implements IUserWechatPayService {
}
}