From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.Client/PS3/Network/SonyCommerce_PS3.h | 180 ++++++++++++++++++++++++ 1 file changed, 180 insertions(+) create mode 100644 Minecraft.Client/PS3/Network/SonyCommerce_PS3.h (limited to 'Minecraft.Client/PS3/Network/SonyCommerce_PS3.h') diff --git a/Minecraft.Client/PS3/Network/SonyCommerce_PS3.h b/Minecraft.Client/PS3/Network/SonyCommerce_PS3.h new file mode 100644 index 00000000..1f43341a --- /dev/null +++ b/Minecraft.Client/PS3/Network/SonyCommerce_PS3.h @@ -0,0 +1,180 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include "Common\Network\Sony\SonyCommerce.h" + +#define SCE_TOOLKIT_NP_SKU_PRICE_LEN (SCE_NP_COMMERCE2_CURRENCY_CODE_LEN \ + + SCE_NP_COMMERCE2_CURRENCY_SYMBOL_LEN \ + + SCE_NP_COMMERCE2_THOUSAND_SEPARATOR_LEN \ + + SCE_NP_COMMERCE2_DECIMAL_LETTER_LEN) ///< The maximum length of a price in characters. + +class SonyCommerce_PS3 : public SonyCommerce +{ + enum State + { + e_state_noSession, + e_state_creatingSession, + e_state_createSessionDone, + e_state_idle, + + + }; + /// This enum is used to verify the current utility that is running + enum Phase + { + e_phase_stopped = 0, + e_phase_idle, + e_phase_voucherRedeemPhase, + e_phase_productBrowsePhase, + e_phase_creatingSessionPhase, + e_phase_checkoutPhase, + e_phase_downloadListPhase + }; + + enum Message + { + e_message_commerceNone, + e_message_commerceCreateSession, ///< Create a commerce session + e_message_commerceGetCategoryInfo, ///< Information about a category in the Store + e_message_commerceGetProductList, ///< Get a list of products available in the Store + e_message_commerceGetDetailedProductInfo, ///< Get a list of products available in the Store, with additional details + e_message_commerceAddDetailedProductInfo, ///< Add additional details to a ProdcutInfo already retrieved + e_message_commerceStoreProductBrowse, ///< Launches the Store to a specified product + e_message_commerceUpgradeTrial, ///< Upgrade a trial to full game + e_message_commerceRedeemVoucher, ///< Redeem a voucher code + e_message_commerceGetEntitlementList, ///< Get a list of entitlements associated with the current PSN user. + e_message_commerceConsumeEntitlement, ///< Consume an amount from a consumable entitlement. + e_message_commerceCheckout, ///< Launch the Store checkout + e_message_commerceDownloadList, ///< Launch the download list + e_message_commerceEnd ///< End commerce2 processing + }; + + enum Event + { + e_event_none, + e_event_commerceSessionCreated, ///< An event generated when a commerce session has successfully been created. + e_event_commerceSessionAborted, ///< An event generated when the creation of commerce session has been aborted. + e_event_commerceGotCategoryInfo, ///< An event generated when some category information has been retrieved from the store. + e_event_commerceGotProductList, ///< An event generated when a list of products that are available has been retrieved from the store. + e_event_commerceGotDetailedProductInfo, ///< An event generated when some detailed product information has been retrieved from the store. + e_event_commerceAddedDetailedProductInfo, ///< An event generated when some detailed product information has been retrieved from the store. + e_event_commerceProductBrowseStarted, ///< An event generated when product overlay has started. + e_event_commerceProductBrowseSuccess, ///< An event generated when a product browse was completed successfully, and the user purchased the product. + e_event_commerceProductBrowseAborted, ///< An event generated when a product browse was aborted by the user (the user pressed back). + e_event_commerceProductBrowseFinished, ///< An event generated when a product browse has finished and it is now safe to free memory. + e_event_commerceVoucherInputStarted, ///< An event generated when a voucher code input overlay was started. + e_event_commerceVoucherInputSuccess, ///< An event generated when a voucher code input completed successfully. + e_event_commerceVoucherInputAborted, ///< An event generated when a voucher code input was aborted by the user (user pressed back). + e_event_commerceVoucherInputFinished, ///< An event generated when a voucher code input has finished. It is now safe to free memory. + e_event_commerceGotEntitlementList, ///< An event generated when a the list of entitlements has been received for the current user. + e_event_commerceConsumedEntitlement, ///< An event generated when the has successfully consumed an entitlement. + e_event_commerceCheckoutStarted, ///< An event generated when a store checkout overlay has started. + e_event_commerceCheckoutSuccess, ///< An event generated when user has successfully purchased from the checkout. + e_event_commerceCheckoutAborted, ///< An event generated when the checkout was aborted by the user (user pressed back). + e_event_commerceCheckoutFinished, ///< An event generated when a store checkout overlay has finished. + e_event_commerceDownloadListStarted, ///< An event generated when a download list overlay has started. + e_event_commerceDownloadListSuccess, ///< An event generated when the user has ended the download list. + e_event_commerceDownloadListFinished, ///< An event generated when a download list overlay has finished. + e_event_commerceError ///< An event generated when a commerce error has occurred. + }; + + static bool m_bLicenseChecked; + static bool m_bCommerceInitialised; + static SceNpCommerce2SessionInfo m_sessionInfo; + static State m_state; + static int m_errorCode; + static LPVOID m_callbackParam; + static Event m_event; + static Message m_message; +// static uint32_t m_requestID; + static void* m_receiveBuffer; + static std::vector *m_pProductInfoList; + static ProductInfoDetailed *m_pProductInfoDetailed; + static ProductInfo *m_pProductInfo; + static CategoryInfo* m_pCategoryInfo; + static char* m_pCategoryID; + static const char* m_pProductID; + static std::queue m_messageQueue; + static CallbackFunc m_callbackFunc; + static CheckoutInputParams m_checkoutInputParams; + static DownloadListInputParams m_downloadInputParams; + static sys_memory_container_t m_memContainer; + static bool m_bUpgradingTrial; + static C4JThread* m_tickThread; + static CallbackFunc m_trialUpgradeCallbackFunc; + static LPVOID m_trialUpgradeCallbackParam; + static CRITICAL_SECTION m_queueLock; + + static void runCallback() + { + assert(m_callbackFunc); + CallbackFunc func = m_callbackFunc; + m_callbackFunc = NULL; + if(func) + func(m_callbackParam, m_errorCode); + m_errorCode = CELL_OK; + } + static void setCallback(CallbackFunc cb,LPVOID lpParam) + { + assert(m_callbackFunc == NULL); + m_callbackFunc = cb; + m_callbackParam = lpParam; + } + + + static uint32_t m_contextId; ///< The npcommerce2 context ID + static bool m_contextCreated; ///< npcommerce2 context ID created? + static Phase m_currentPhase; ///< Current commerce2 util + static char m_commercebuffer[SCE_NP_COMMERCE2_RECV_BUF_SIZE]; + + + + static void commerce2Handler(uint32_t contextId, uint32_t subjectId, int event, int errorCode, void *arg); + static void processMessage(); + static void processEvent(); + + static int createContext(); + static int createSession(); + static void setError(int err) { m_errorCode = err; } + static int getCategoryInfo(CategoryInfo *info, char *categoryId); + static int getProductList(std::vector* productList, char *categoryId); + static int getDetailedProductInfo(ProductInfoDetailed *info, const char *productId, char *categoryId); + static int addDetailedProductInfo(ProductInfo *info, const char *productId, char *categoryId); + static int checkout(CheckoutInputParams ¶ms); + static int downloadList(DownloadListInputParams ¶ms); + static void UpgradeTrialCallback1(LPVOID lpParam,int err); + static void UpgradeTrialCallback2(LPVOID lpParam,int err); + static void Delete(); + + + static int commerceEnd(); +// static int upgradeTrial(); + + static int TickLoop(void* lpParam); + + static void Init(); + static int Shutdown(); + + static void CheckForTrialUpgradeKey_Callback(LPVOID param, bool bFullVersion); + +public: + + virtual void CreateSession(CallbackFunc cb, LPVOID lpParam); + virtual void CloseSession(); + + virtual void GetCategoryInfo(CallbackFunc cb, LPVOID lpParam, CategoryInfo *info, const char *categoryId); + virtual void GetProductList(CallbackFunc cb, LPVOID lpParam, std::vector* productList, const char *categoryId); + virtual void GetDetailedProductInfo(CallbackFunc cb, LPVOID lpParam, ProductInfoDetailed* productInfoDetailed, const char *productId, const char *categoryId); + virtual void AddDetailedProductInfo( CallbackFunc cb, LPVOID lpParam, ProductInfo* productInfo, const char *productId, const char *categoryId ); + virtual void Checkout(CallbackFunc cb, LPVOID lpParam, const char* skuID); + virtual void DownloadAlreadyPurchased(CallbackFunc cb, LPVOID lpParam, const char* skuID); + virtual void UpgradeTrial(CallbackFunc cb, LPVOID lpParam); + virtual void CheckForTrialUpgradeKey(); + virtual bool LicenseChecked(); + +}; -- cgit v1.2.3