Skip to content

Commit

Permalink
fix: implement android payload validation
Browse files Browse the repository at this point in the history
  • Loading branch information
jessie129j committed Oct 20, 2024
1 parent 1441c67 commit ae4765c
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 8 deletions.
14 changes: 6 additions & 8 deletions server/src/api/routes/payments.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
InAppPlatform,
validateIOSPayload,
CompletePaymentByMobileUserReq,
validateAndroidPayload,
} from "src/types/payment";

import * as paymentController from "src/api/controllers/payments";
Expand Down Expand Up @@ -37,8 +38,9 @@ router.post(
/** validate platform */

if (!("platform" in body)) throw new FieldRequiredError("flatform");
if (!("payload" in body)) throw new FieldRequiredError("payload");

const platform = body.platform;
const { platform, payload } = body;

if (
typeof platform !== "string" ||
Expand All @@ -48,19 +50,15 @@ router.post(

switch (platform) {
case InAppPlatform.Android: {
for (let field of ["title", "token"]) {
if (!(field in body)) throw new FieldRequiredError(field);
if (!validateAndroidPayload(payload)) {
throw new FieldInvalidError("payload");
}

return true;
}

case InAppPlatform.IOS: {
for (let field of ["payload"]) {
if (!(field in body)) throw new FieldRequiredError(field);
}

if (!validateIOSPayload(body.payload)) {
if (!validateIOSPayload(payload)) {
throw new FieldInvalidError("payload");
}

Expand Down
14 changes: 14 additions & 0 deletions server/src/types/payment.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,20 @@ export type AndroidPayload = {
purchaseToken: string;
};

export function validateAndroidPayload(
payload: Record<string, any>
): payload is AndroidPayload {
if (!("productId" in payload) || typeof payload.productId !== "string")
return false;
if (
!("purchaseToken" in payload) ||
typeof payload.purchaseToken !== "string"
)
return false;

return true;
}

export type IOSPayload = {
// transactionDate: Date;
// transactionId: string;
Expand Down

0 comments on commit ae4765c

Please sign in to comment.