API/Autodoc/Files/URuStorePayPurchaseExtendEventsNode.cpp.en.md


#include “URuStorePayInvoiceId.h”

using namespace RuStoreSDK; using namespace RuStoreSDK::Pay;

URuStorePayPurchaseExtendEventsNode::URuStorePayPurchaseExtendEventsNode(const FObjectInitializer& ObjectInitializer) : Super(ObjectInitializer) { }

URuStorePayPurchaseExtendEventsNode* URuStorePayPurchaseExtendEventsNode::PurchaseExtendEventsAsync( UObject* worldContextObject, URuStorePayClient* target, FURuStorePayProductPurchaseParams productPurchaseParams, EURuStorePayPreferredPurchaseType preferredPurchaseType, EURuStorePaySdkTheme sdkTheme ) { UObject* outer = worldContextObject ? worldContextObject : GetTransientPackage();

auto node = NewObject<URuStorePayPurchaseExtendEventsNode>(outer);
node->RegisterWithGameInstance(worldContextObject);

node->target = target;

TWeakObjectPtr<URuStorePayPurchaseExtendEventsNode> weakNode(node);

node->purchaseEventListenerImpl = MakeShared<PurchaseEventListenerImpl, ESPMode::ThreadSafe>(
    [weakNode](long requestId, URuStorePayPurchaseId* purchaseId, URuStorePayInvoiceId* invoiceId)
    {
        if (!weakNode.IsValid()) return;
        weakNode->OnPaymentCompleted.Broadcast(FURuStorePayProductPurchaseResult(), FURuStoreError(), FURuStorePayPurchaseEventResult(purchaseId, invoiceId));
    },
    [weakNode](long requestId, URuStorePayPurchaseId* purchaseId, URuStorePayInvoiceId* invoiceId)
    {
        if (!weakNode.IsValid()) return;
        weakNode->OnPaymentFailed.Broadcast(FURuStorePayProductPurchaseResult(), FURuStoreError(), FURuStorePayPurchaseEventResult(purchaseId, invoiceId));
    },
    [weakNode](long requestId, URuStorePayPurchaseId* purchaseId, URuStorePayInvoiceId* invoiceId)
    {
        if (!weakNode.IsValid()) return;
        weakNode->OnPaymentStarted.Broadcast(FURuStorePayProductPurchaseResult(), FURuStoreError(), FURuStorePayPurchaseEventResult(purchaseId, invoiceId));
    },
    [weakNode](long requestId, URuStorePayPurchaseId* purchaseId, URuStorePayInvoiceId* invoiceId)
    {
        if (!weakNode.IsValid()) return;
        weakNode->OnPurchaseCancelled.Broadcast(FURuStorePayProductPurchaseResult(), FURuStoreError(), FURuStorePayPurchaseEventResult(purchaseId, invoiceId));
    },
    [weakNode](long requestId, URuStorePayPurchaseId* purchaseId, URuStorePayInvoiceId* invoiceId)
    {
        if (!weakNode.IsValid()) return;
        weakNode->OnPurchaseCreated.Broadcast(FURuStorePayProductPurchaseResult(), FURuStoreError(), FURuStorePayPurchaseEventResult(purchaseId, invoiceId));
    }
);

target->Purchase(
    productPurchaseParams,
    preferredPurchaseType,
    sdkTheme,
    [weakNode](long requestId, TSharedPtr<FURuStorePayProductPurchaseResult, ESPMode::ThreadSafe> response)
    {
        if (!weakNode.IsValid()) return;
        weakNode->Success.Broadcast(*response, FURuStoreError(), FURuStorePayPurchaseEventResult());
    },
    [weakNode](long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error)
    {
        if (!weakNode.IsValid()) return;
        weakNode->Error.Broadcast(FURuStorePayProductPurchaseResult(), *error, FURuStorePayPurchaseEventResult());
    },
    node->purchaseEventListenerImpl
);

return node;

}

Назад