[新增功能]新增校验苹果支付凭证验签功能
This commit is contained in:
parent
b58085fde1
commit
e55634e987
|
|
@ -0,0 +1,52 @@
|
|||
package org.dromara.net.controller;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaIgnore;
|
||||
import com.apple.itunes.storekit.model.Environment;
|
||||
import com.apple.itunes.storekit.model.JWSTransactionDecodedPayload;
|
||||
import com.apple.itunes.storekit.verification.SignedDataVerifier;
|
||||
import com.apple.itunes.storekit.verification.VerificationException;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.dromara.common.core.domain.R;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestParam;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStream;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 苹果验签工具,为旧版本后台提供支持
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/appleVerify")
|
||||
@Slf4j
|
||||
public class AppleVerifySignController {
|
||||
|
||||
@SaIgnore
|
||||
@GetMapping("/verifyPaySign")
|
||||
public R<JWSTransactionDecodedPayload> verifyPaySign(@RequestParam("jws") String jws, @RequestParam("bundleId") String bundleId, @RequestParam("appAppleId") Long appAppleId) {
|
||||
Environment environment = Environment.PRODUCTION;
|
||||
|
||||
try {
|
||||
Set<InputStream> rootCAs = Set.of(
|
||||
new FileInputStream("/opt/AppleRootCA-G3.cer"),
|
||||
new FileInputStream("/opt/AppleRootCA-G2.cer"),
|
||||
new FileInputStream("/opt/AppleIncRootCertificate.cer")
|
||||
);
|
||||
|
||||
SignedDataVerifier signedPayloadVerifier = new SignedDataVerifier(rootCAs, bundleId, appAppleId, environment, false);
|
||||
|
||||
JWSTransactionDecodedPayload jwsTransactionDecodedPayload = signedPayloadVerifier.verifyAndDecodeTransaction(jws);
|
||||
return R.ok(jwsTransactionDecodedPayload);
|
||||
} catch (Exception e) {
|
||||
log.error("苹果验签异常:", e);
|
||||
return R.fail();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue