feat(ui): wire the chip-pack purchase to Robokassa
Replace the disabled "Soon" pack action with a real purchase: the Wallet opens a money order (wallet.order) and sends the player to the provider's hosted-payment page (window.open via openExternalUrl); the chips are credited later by the verified server callback. Add a public-offer link under the packs (paying accepts the offer). Codec order round-trip unit test + a mock-e2e purchase test; the Google Play stub and the chip-spend paths are unchanged.
This commit is contained in:
@@ -39,6 +39,7 @@ import type {
|
||||
MoveResult,
|
||||
Profile,
|
||||
Wallet,
|
||||
WalletOrder,
|
||||
WalletSegment,
|
||||
Catalog,
|
||||
CatalogProduct,
|
||||
@@ -373,6 +374,15 @@ export function encodeWalletBuy(productId: string): Uint8Array {
|
||||
return finish(b, fb.WalletBuyRequest.endWalletBuyRequest(b));
|
||||
}
|
||||
|
||||
// encodeWalletOrder wraps the pack id for a money order (POST /user/wallet/order).
|
||||
export function encodeWalletOrder(productId: string): Uint8Array {
|
||||
const b = new Builder(64);
|
||||
const pid = b.createString(productId);
|
||||
fb.WalletOrderRequest.startWalletOrderRequest(b);
|
||||
fb.WalletOrderRequest.addProductId(b, pid);
|
||||
return finish(b, fb.WalletOrderRequest.endWalletOrderRequest(b));
|
||||
}
|
||||
|
||||
// decodeWallet reads the wallet payload: the context-visible chip segments and the
|
||||
// context-applicable benefits.
|
||||
export function decodeWallet(buf: Uint8Array): Wallet {
|
||||
@@ -391,6 +401,12 @@ export function decodeWallet(buf: Uint8Array): Wallet {
|
||||
};
|
||||
}
|
||||
|
||||
// decodeWalletOrder reads the created order: its id and the provider launch URL the client opens.
|
||||
export function decodeWalletOrder(buf: Uint8Array): WalletOrder {
|
||||
const o = fb.WalletOrderResponse.getRootAsWalletOrderResponse(new ByteBuffer(buf));
|
||||
return { orderId: s(o.orderId()), redirectUrl: s(o.redirectUrl()) };
|
||||
}
|
||||
|
||||
// decodeCatalog reads the storefront payload: the context-visible products, each a chip-priced
|
||||
// value or a chip pack priced in the context's payment method, with its atom composition.
|
||||
export function decodeCatalog(buf: Uint8Array): Catalog {
|
||||
|
||||
Reference in New Issue
Block a user