From 2da7ba44af5fa1500475878bf2921357af6c5fd7 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Sun, 4 Sep 2016 23:45:24 -0600 Subject: [PATCH] Add in-app purchases --- buyitem.php | 27 +++++++++++++ database.mwb | Bin 12275 -> 13416 bytes database.mwb.bak | Bin 11776 -> 12978 bytes processiap.php | 88 ++++++++++++++++++++++++++++++++++++++++++ settings.template.php | 3 ++ shopitems.php | 21 ++++++++++ 6 files changed, 139 insertions(+) create mode 100644 buyitem.php create mode 100644 processiap.php create mode 100644 shopitems.php diff --git a/buyitem.php b/buyitem.php new file mode 100644 index 0000000..25dd396 --- /dev/null +++ b/buyitem.php @@ -0,0 +1,27 @@ +has('shopitems', ['merchid' => $VARS['merchid']])) { + sendError("That item is not available at this time.", true); +} + +$shopitem = $database->select('shopitems', ['merchid', 'itemid', 'quantity', 'cost'], ['merchid' => $VARS['merchid']])[0]; + +if (!is_empty($VARS['cost']) && !($shopitem['cost'] == $VARS['cost'])) { + sendError("That item is no longer available at that price.", true); +} + +$credits = $database->select('players', ['credits'], ['uuid' => $_SESSION['uuid']])[0]['credits']; +if ($credits < $shopitem['cost']) { + sendError("You don't have enough money!", true); +} + +for ($i = 0; $i < $shopitem['quantity']; $i++) { + $database->insert('inventory', ['playeruuid' => $_SESSION['uuid'], 'itemid' => $shopitem['itemid']]); +} + +$database->update('players', ['credits' => ($credits - $shopitem['cost'])], ['uuid' => $_SESSION['uuid']]); + +sendOK("Thanks for your purchase!"); \ No newline at end of file diff --git a/database.mwb b/database.mwb index 6c429342612a6761f631ffe140dcaf9e6ad3cbb5..c5a0ad8ace08eb99d5cda234963a4c39d87579c3 100644 GIT binary patch delta 11576 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 E2bRL+nE(I) delta 10441 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 YvC?{r@}C$8>0hn*M{l@N83g4250AFi4*&oF diff --git a/database.mwb.bak b/database.mwb.bak index c794fbe41e9ec819b9e1b18420b817c36fe88335..3dbc6cc9b591cbc7729f661cb20b9761bf85aee1 100644 GIT binary patch delta 11097 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 anFs)Y`mX*vNEuR;f#k3-Y$=XFiT?pn^5T;K diff --git a/processiap.php b/processiap.php new file mode 100644 index 0000000..32de3aa --- /dev/null +++ b/processiap.php @@ -0,0 +1,88 @@ +{'status'}; + if ($app_store_response_status == 0) {//eithr OK or expired and needs to synch + //here are some fields from the json, btw. + $json_receipt = $app_store_response_map->{'receipt'}; + $transaction_id = $json_receipt->{'transaction_id'}; + $original_transaction_id = $json_receipt->{'original_transaction_id'}; + $json_latest_receipt = $app_store_response_map->{'latest_receipt_info'}; + return true; + } else { + return false; + } + } +} + +$purchase_valid = false; + +switch ($VARS['os']) { + case 'android': + $purchase_valid = verify_market_in_app($VARS['data'], $VARS['sig'], GOOGLEPLAY_PUBLICKEY); + break; + case 'ios': + $purchase_valid = verify_app_store_in_app($VARS['data'], APP_STORE_SANDBOX); + break; +} + +if ($purchase_valid) { + $creditstoadd = $database->select('shopcoins', ['coins'], ['merchid' => $VARS['id']])[0]['coins']; + $database->update('players', ['credits[+]' => $creditstoadd], ['uuid' => $_SESSION['uuid']]); + sendOK(); +} else { + sendError("Purchase not valid!", true); +} \ No newline at end of file diff --git a/settings.template.php b/settings.template.php index 4bae97e..d908e95 100644 --- a/settings.template.php +++ b/settings.template.php @@ -18,3 +18,6 @@ define("PDB_CHARSET", "latin1"); define("GEOCACHE_KEY", ""); define("MUNZEE_KEY", ""); define("MUNZEE_SECRET", ""); + +define("GOOGLEPLAY_PUBLICKEY", ""); +define("APP_STORE_SANDBOX", true); \ No newline at end of file diff --git a/shopitems.php b/shopitems.php new file mode 100644 index 0000000..c631658 --- /dev/null +++ b/shopitems.php @@ -0,0 +1,21 @@ +select('shopitems', '*'); +$coins = $database->select('shopcoins', '*'); + +if ($_SESSION['loggedin']) { + $balance = $database->select('players', ['credits'], ['uuid' => $_SESSION['uuid']])[0]['credits']; +} else { + $balance = null; +} + +$out = [ + "status" => "OK", + "items" => $shop, + "coins" => $coins, + "balance" => $balance +]; + +echo json_encode($out); \ No newline at end of file