跳到主要内容

附录1

签名生成

交易状态查询

String sourceSystem = "mxx";
String jsonStr = "{"
+ "\"Email\":\"\","
+ "\"TxnID\":\"20230615155030POS\","
+ "\"sourceSystem\":\"mxx\","
+ "\"sequenceNo\":\"1\""
+ "}";
String message = sourceSystem + "\n" + jsonStr;

String path = KEYPAIR_DIR + "private_key.pem";

FileReader fileReader = new FileReader(path);
PEMParser pemParser = new PEMParser(fileReader);

PEMKeyPair pemKeyPair = (PEMKeyPair) pemParser.readObject();
byte[] encodedPrivateKey = pemKeyPair.getPrivateKeyInfo().getEncoded();

PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(encodedPrivateKey);

KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PrivateKey privateKey = keyFactory.generatePrivate(keySpec);

Signature privateSignature = Signature.getInstance("SHA256withRSA");
privateSignature.initSign(privateKey);
privateSignature.update(message.getBytes(StandardCharsets.UTF_8));

byte[] signature = privateSignature.sign();
String signatureStr = URLEncoder.encode(Base64.getEncoder().encodeToString(signature));