Posts

Post not yet marked as solved
1 Replies
1k Views
I am verifying the receipt server side and today I noticed that the latest_receipt_info field in the verify response is null, which means I can't verify the receipt and process the transaction. This happened in the TestFlight environment, I am afraid that it could happen on PROD. Do you know why this might have happened and how do you verify your receipts? I am using Java and this is my code for verification: IosVerifyReceiptResponseDTO response = restTemplate .postForObject(iosLiveVerifyUrl, request, IosVerifyReceiptResponseDTO.class); if (response != null) { if ("21007".equals(response.getStatus())) { log.info("Sandbox is on"); response = restTemplate .postForObject(iosSandboxVerifyUrl, request, IosVerifyReceiptResponseDTO.class); } } if (response != null && response.getLatest_receipt_info() != null) { log.info("Processing subscription"); LatestReceiptInfoDTO latestReceiptInfoDTO = response.getLatest_receipt_info().get(0); long expireDateMs = Long.parseLong(latestReceiptInfoDTO.getExpires_date_ms()); if (System.currentTimeMillis() < expireDateMs) { user.setSubscribedProductId(latestReceiptInfoDTO.getProduct_id()); user.setPurchaseDateMs(Long.parseLong(latestReceiptInfoDTO.getPurchase_date_ms())); user.setExpiresDateMs(Long.parseLong(latestReceiptInfoDTO.getExpires_date_ms())); user.setAppleOrderId(latestReceiptInfoDTO.getTransaction_id()); userRepository.save(user); log.info("Subscription processed for user: " + user.getEmail()); return new UserDTO(user); } else { log.info("Subscription is already expired, DB was not updated"); return new UserDTO(user); } } else { log.info("Apple API response is null"); return new UserDTO(user); }
Posted Last updated
.