Покупка продукта
Для вызова покупки продукта используйте метод PurchaseProduct:
Вызов метода покупки продукта
long requestId = URuStoreBillingClient::Instance()->PurchaseProduct( productId, orderId, quantity, developerPayload, []( long requestId, TShardPtr<FURuStorePaymentResult, ESPMode::ThreadSafe> response) { // Process response }, []( long requestId, TSharedPtr<FURuStoreError, ESPMode::ThreadSafe> error) { // Process error } ); |
- string productId — идентификатор продукта.
- int quantity — количество продуктов.
- string developerPayload — дополнительная информация от разработчика AnyApp.
Blueprint реализация:
Классы результата покупки:
Структура результата покупки
UCLASS(BlueprintType) class RUSTOREBILLING_API URuStorePaymentResultBase : public UObject { GENERATED_BODY() }; USTRUCT(BlueprintType) struct RUSTOREBILLING_API FURuStorePaymentResult { GENERATED_USTRUCT_BODY() virtual ~FURuStorePaymentResult() {} virtual FString GetTypeName() { return "FURuStorePaymentResult" ; } }; |
Структура результата покупки
UCLASS(BlueprintType) class RUSTOREBILLING_API URuStoreInvoiceResult : public URuStorePaymentResultBase { GENERATED_BODY() public : UPROPERTY(BlueprintReadOnly) FURuStoreInvoiceResult value; }; USTRUCT(BlueprintType) struct RUSTOREBILLING_API FURuStoreInvoiceResult : public FURuStorePaymentResult { GENERATED_USTRUCT_BODY() public : FURuStoreInvoiceResult() { invoiceId = "" ; finishCode = EURuStorePaymentFinishCode::RESULT_UNKNOWN; } virtual ~FURuStoreInvoiceResult() {} UPROPERTY(BlueprintReadOnly) FString invoiceId; UPROPERTY(BlueprintReadOnly) EURuStorePaymentFinishCode finishCode; virtual FString GetTypeName() override { return "FURuStoreInvoiceResult" ; } }; UENUM(BlueprintType) enum class EURuStorePaymentFinishCode : uint8 { SUCCESSFUL_PAYMENT UMETA(DisplayName = "SUCCESSFUL_PAYMENT" ), CLOSED_BY_USER UMETA(DisplayName = "CLOSED_BY_USER" ), UNHANDLED_FORM_ERROR UMETA(DisplayName = "UNHANDLED_FORM_ERROR" ), PAYMENT_TIMEOUT UMETA(DisplayName = "PAYMENT_TIMEOUT" ), DECLINED_BY_SERVER UMETA(DisplayName = "DECLINED_BY_SERVER" ), RESULT_UNKNOWN UMETA(DisplayName = "RESULT_UNKNOWN" ) }; |
Структура результата покупки
UCLASS(BlueprintType) class RUSTOREBILLING_API URuStoreInvalidInvoice : public URuStorePaymentResultBase { GENERATED_BODY() public : UPROPERTY(BlueprintReadOnly) FURuStoreInvalidInvoice value; }; USTRUCT(BlueprintType) struct RUSTOREBILLING_API FURuStoreInvalidInvoice : public FURuStorePaymentResult { GENERATED_USTRUCT_BODY() FURuStoreInvalidInvoice() { invoiceId = "" ; } virtual ~FURuStoreInvalidInvoice() {} UPROPERTY(BlueprintReadOnly) FString invoiceId; virtual FString GetTypeName() override { return "FURuStoreInvalidInvoice" ; } }; |
Структура результата покупки
UCLASS(BlueprintType) class RUSTOREBILLING_API URuStorePurchaseResult : public URuStorePaymentResultBase { GENERATED_BODY() public : UPROPERTY(BlueprintReadOnly) FURuStorePurchaseResult value; }; USTRUCT(BlueprintType) struct RUSTOREBILLING_API FURuStorePurchaseResult : public FURuStorePaymentResult { GENERATED_USTRUCT_BODY() FURuStorePurchaseResult() { finishCode = EURuStorePaymentFinishCode::RESULT_UNKNOWN; orderId = "" ; purchaseId = "" ; productId = "" ; subscriptionToken = "" ; } virtual ~FURuStorePurchaseResult() {} UPROPERTY(BlueprintReadOnly) EURuStorePaymentFinishCode finishCode; UPROPERTY(BlueprintReadOnly) FString orderId; UPROPERTY(BlueprintReadOnly) FString purchaseId; UPROPERTY(BlueprintReadOnly) FString productId; UPROPERTY(BlueprintReadOnly) FString subscriptionToken; virtual FString GetTypeName() override { return "FURuStorePurchaseResult" ; } }; UENUM(BlueprintType) enum class EURuStorePaymentFinishCode : uint8 { SUCCESSFUL_PAYMENT UMETA(DisplayName = "SUCCESSFUL_PAYMENT" ), CLOSED_BY_USER UMETA(DisplayName = "CLOSED_BY_USER" ), UNHANDLED_FORM_ERROR UMETA(DisplayName = "UNHANDLED_FORM_ERROR" ), PAYMENT_TIMEOUT UMETA(DisplayName = "PAYMENT_TIMEOUT" ), DECLINED_BY_SERVER UMETA(DisplayName = "DECLINED_BY_SERVER" ), RESULT_UNKNOWN UMETA(DisplayName = "RESULT_UNKNOWN" ) }; |
Структура результата покупки
UCLASS(BlueprintType) class RUSTOREBILLING_API URuStoreInvalidPurchase : public URuStorePaymentResultBase { GENERATED_BODY() public : UPROPERTY(BlueprintReadOnly) FURuStoreInvalidPurchase value; }; USTRUCT(BlueprintType) struct RUSTOREBILLING_API FURuStoreInvalidPurchase : public FURuStorePaymentResult { GENERATED_USTRUCT_BODY() public : FURuStoreInvalidPurchase() { purchaseId = "" ; invoiceId = "" ; orderId = "" ; quantity = 0; productId = "" ; errorCode = 0; } virtual ~FURuStoreInvalidPurchase() {} UPROPERTY(BlueprintReadOnly) FString purchaseId; UPROPERTY(BlueprintReadOnly) FString invoiceId; UPROPERTY(BlueprintReadOnly) FString orderId; UPROPERTY(BlueprintReadOnly) int quantity; UPROPERTY(BlueprintReadOnly) FString productId; UPROPERTY(BlueprintReadOnly) int errorCode; virtual FString GetTypeName() override { return "FURuStoreInvalidPurchase" ; } }; |
Структура результата покупки
UCLASS(BlueprintType) class RUSTOREBILLING_API URuStoreInvalidPaymentState : public URuStorePaymentResultBase { GENERATED_BODY() public : UPROPERTY(BlueprintReadOnly) FURuStoreInvalidPaymentState value; }; USTRUCT(BlueprintType) struct RUSTOREBILLING_API FURuStoreInvalidPaymentState : public FURuStorePaymentResult { GENERATED_USTRUCT_BODY() virtual ~FURuStoreInvalidPaymentState() {} virtual FString GetTypeName() override { return "FURuStoreInvalidPaymentState" ; } }; |
- URuStoreInvoiceResult — платежи завершились с результатом.
- URuStoreInvalidInvoice — платежи завершились без указания инвойса. Вероятно, они были запущены с некорректным инвойсом (пустая строка, например).
- URuStorePurchaseResult — результат успешного завершения покупки цифрового товара.
- URuStoreInvalidPurchase — при оплате цифрового товара платежи завершились c ошибкой.
- URuStoreInvalidPaymentState — при завершении платежей отсутствует PaymentState.
Статусы EUPaymentFinishCode:
- SUCCESSFUL_PAYMENT — успешная оплата.
- CLOSED_BY_USER — отменено пользователем.
- UNHANDLED_FORM_ERROR — неизвестная ошибка.
- PAYMENT_TIMEOUT — ошибка оплаты по таймауту.
- DECLINED_BY_SERVER — отклонено сервером.
- RESULT_UNKNOWN — неизвестный статус оплаты.
Обновлено 17 июля 2023 г.
Was this information helpful?