decodeResponse method

dynamic decodeResponse(
  1. Store store,
  2. Response data
)
override

Implementation

decodeResponse(Store store, Response data) {
  print("📡 Response: ${data.statusCode} from $path");
  var valid = false;
  var receipt = AppStoreReceiptValidationResult.fromJson(data.body)!;

  if (receipt.status == 21007) {
    var verifyEndpoint = "$appStoreEndpointSandbox$appStoreVerifyRoute";
    print("🎟 Receipt status: 21007 -> Check $verifyEndpoint");

    store.dispatch(
      VerifyInAppPurchaseWithoutEndpointAction(
        body: this.body,
        purchaseDetail: this.purchaseDetail,
        storeName: this.storeName,
        productID: this.productID,
        path: verifyEndpoint,
      ),
    );
  } else {
    if (checkReceiptValidity(receipt)) {
      valid = true;
    } else {
      valid = false;
    }

    store.dispatch(
      VerifyInAppPurchaseSuccessAction(
        valid: valid,
        productID: this.productID,
        purchaseDetail: this.purchaseDetail.rebuild(
              (o) => o..receipt = receipt.toBuilder(),
            ),
      ),
    );
  }
}