purchase method

Starts a purchase after configuration.

Cancellation is a domain result and must not be reported as a transport exception. Implementations must not both navigate and return a redirect URL unless their documented integration contract explicitly requires it.

Implementation

@override
Future<InappifySdkResult<PurchaseResult>> purchase(
  InappifyPurchaseRequest request,
) {
  return _invokeResult<PurchaseResult>(
    method: InappifyChannelContract.purchase,
    payload: {
      'packageToPurchase': {
        'identifier':
            request.packageToPurchase?.identifier ??
            request.packageIdentifier,
        'offeringIdentifier':
            request.packageToPurchase?.offeringIdentifier ??
            request.offeringIdentifier,
        'product': {
          'identifier':
              request.packageToPurchase?.product?.identifier ??
              request.productIdentifier,
          'productType':
              (request.packageToPurchase?.product?.productType ??
                      request.productType)
                  ?.wireName,
        },
      },
      'idempotencyKey': request.idempotencyKey,
      if (request.paywallId != null) 'paywallId': request.paywallId,
      if (request.paywallRevision != null)
        'paywallRevision': request.paywallRevision,
    },
    requestId: request.idempotencyKey,
    decodeData: PurchaseResult.fromJson,
  );
}