diff --git a/src/main/java/com/yolo/keyborad/googleplay/GooglePlayApiClient.java b/src/main/java/com/yolo/keyborad/googleplay/GooglePlayApiClient.java index fc0f838..ea24924 100644 --- a/src/main/java/com/yolo/keyborad/googleplay/GooglePlayApiClient.java +++ b/src/main/java/com/yolo/keyborad/googleplay/GooglePlayApiClient.java @@ -146,7 +146,7 @@ public class GooglePlayApiClient { JsonNode offerDetails = firstLineItem.path("productOfferDetails"); String state = mapOneTimeState(text(root.path("purchaseStateContext"), "purchaseState")); - + String purchaseOptionId = text(offerDetails, "purchaseOptionId"); // 修正:一次性购买的订单号字段名为 "orderId" String googleOrderId = text(root, "orderId"); @@ -156,6 +156,7 @@ public class GooglePlayApiClient { .productId(text(firstLineItem, "productId")) .productType(GooglePlayConstants.PRODUCT_TYPE_ONE_TIME) .purchaseToken(purchaseToken) + .purchaseOptionId(purchaseOptionId) .orderKey(resolveOrderKey(googleOrderId, purchaseToken)) .googleOrderId(googleOrderId) .linkedPurchaseToken(null) diff --git a/src/main/java/com/yolo/keyborad/googleplay/GooglePlayStateService.java b/src/main/java/com/yolo/keyborad/googleplay/GooglePlayStateService.java index ae05137..d62d76f 100644 --- a/src/main/java/com/yolo/keyborad/googleplay/GooglePlayStateService.java +++ b/src/main/java/com/yolo/keyborad/googleplay/GooglePlayStateService.java @@ -32,7 +32,10 @@ public class GooglePlayStateService { @Transactional(rollbackFor = Exception.class) public GooglePlaySyncResult sync(GooglePlaySyncCommand command, GooglePlayPurchaseSnapshot snapshot) { - KeyboardProductItems product = loadProduct(snapshot.getBasePlanId()); + String productId = (snapshot.getBasePlanId() != null) ? + snapshot.getBasePlanId() : + snapshot.getPurchaseOptionId(); + KeyboardProductItems product = loadProduct(productId); GooglePlayOrder order = buildOrder(command, snapshot); GooglePlayPurchaseToken token = buildToken(command, snapshot); // 先保存订单以确保 order.id 已生成,钱包充值等权益分发依赖 order.id 写入交易流水 diff --git a/src/main/java/com/yolo/keyborad/googleplay/model/GooglePlayPurchaseSnapshot.java b/src/main/java/com/yolo/keyborad/googleplay/model/GooglePlayPurchaseSnapshot.java index 2e3b480..c7b55d2 100644 --- a/src/main/java/com/yolo/keyborad/googleplay/model/GooglePlayPurchaseSnapshot.java +++ b/src/main/java/com/yolo/keyborad/googleplay/model/GooglePlayPurchaseSnapshot.java @@ -56,4 +56,6 @@ public class GooglePlayPurchaseSnapshot { private Date lastSyncedAt; private String rawResponse; + + private String purchaseOptionId; }