refactor(googleplay): 支持purchaseOptionId作为备选商品ID
This commit is contained in:
@@ -146,7 +146,7 @@ public class GooglePlayApiClient {
|
|||||||
JsonNode offerDetails = firstLineItem.path("productOfferDetails");
|
JsonNode offerDetails = firstLineItem.path("productOfferDetails");
|
||||||
|
|
||||||
String state = mapOneTimeState(text(root.path("purchaseStateContext"), "purchaseState"));
|
String state = mapOneTimeState(text(root.path("purchaseStateContext"), "purchaseState"));
|
||||||
|
String purchaseOptionId = text(offerDetails, "purchaseOptionId");
|
||||||
// 修正:一次性购买的订单号字段名为 "orderId"
|
// 修正:一次性购买的订单号字段名为 "orderId"
|
||||||
String googleOrderId = text(root, "orderId");
|
String googleOrderId = text(root, "orderId");
|
||||||
|
|
||||||
@@ -156,6 +156,7 @@ public class GooglePlayApiClient {
|
|||||||
.productId(text(firstLineItem, "productId"))
|
.productId(text(firstLineItem, "productId"))
|
||||||
.productType(GooglePlayConstants.PRODUCT_TYPE_ONE_TIME)
|
.productType(GooglePlayConstants.PRODUCT_TYPE_ONE_TIME)
|
||||||
.purchaseToken(purchaseToken)
|
.purchaseToken(purchaseToken)
|
||||||
|
.purchaseOptionId(purchaseOptionId)
|
||||||
.orderKey(resolveOrderKey(googleOrderId, purchaseToken))
|
.orderKey(resolveOrderKey(googleOrderId, purchaseToken))
|
||||||
.googleOrderId(googleOrderId)
|
.googleOrderId(googleOrderId)
|
||||||
.linkedPurchaseToken(null)
|
.linkedPurchaseToken(null)
|
||||||
|
|||||||
@@ -32,7 +32,10 @@ public class GooglePlayStateService {
|
|||||||
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public GooglePlaySyncResult sync(GooglePlaySyncCommand command, GooglePlayPurchaseSnapshot snapshot) {
|
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);
|
GooglePlayOrder order = buildOrder(command, snapshot);
|
||||||
GooglePlayPurchaseToken token = buildToken(command, snapshot);
|
GooglePlayPurchaseToken token = buildToken(command, snapshot);
|
||||||
// 先保存订单以确保 order.id 已生成,钱包充值等权益分发依赖 order.id 写入交易流水
|
// 先保存订单以确保 order.id 已生成,钱包充值等权益分发依赖 order.id 写入交易流水
|
||||||
|
|||||||
@@ -56,4 +56,6 @@ public class GooglePlayPurchaseSnapshot {
|
|||||||
private Date lastSyncedAt;
|
private Date lastSyncedAt;
|
||||||
|
|
||||||
private String rawResponse;
|
private String rawResponse;
|
||||||
|
|
||||||
|
private String purchaseOptionId;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user