Welcome, Guest
You have to register before you can post on our site.

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 20,946
» Latest member: blackopsdlc
» Forum threads: 22,100
» Forum posts: 23,067

Full Statistics

Online Users
There are currently 778 online users.
» 0 Member(s) | 772 Guest(s)
Applebot, Baidu, Bing, Facebook, Google, Yandex

Latest Threads
[DevBlog MS] Build Agenti...
Forum: C#, Visual Basic, & .Net Frameworks
Last Post: xSicKxBot

» Replies: 0
» Views: 0
Headphone Stand 3D Print ...
Forum: Printers & CAD Projects
Last Post: xSicKxBot

» Replies: 0
» Views: 2
[WoW Retail News] Glory o...
Forum: World of Warcraft
Last Post: xSicKxBot

» Replies: 0
» Views: 10
[PS.Blog] God of War Lauf...
Forum: Sony Discussion
Last Post: xSicKxBot

» Replies: 0
» Views: 11
[Ubuntu News] How a missi...
Forum: Linux, FreeBSD, and Unix types
Last Post: xSicKxBot

» Replies: 0
» Views: 10
What is Black Ops 6 Zombi...
Forum: PC Discussion
Last Post: xSicKxBot

» Replies: 0
» Views: 15
[WoW Retail News] Winds o...
Forum: World of Warcraft
Last Post: xSicKxBot

» Replies: 0
» Views: 16
Digital Sundial 3D Print ...
Forum: Printers & CAD Projects
Last Post: xSicKxBot

» Replies: 0
» Views: 18
Modular Mounting System 3...
Forum: Printers & CAD Projects
Last Post: xSicKxBot

» Replies: 0
» Views: 16
Self-Watering Planter (Sm...
Forum: Printers & CAD Projects
Last Post: xSicKxBot

» Replies: 0
» Views: 16

 
  [Tut] Top 8 Freelance Developer Forums and Communities
Posted by: xSicKxBot - 10-06-2020, 09:27 PM - Forum: Python - No Replies

Top 8 Freelance Developer Forums and Communities

Freelance developing is snowballing—more and more coders decide to “work for themselves” and smash their well-compensated coding jobs in order to earn even higher rates as freelance developers.



What are the reasons for the double-digit growth rates of freelancing platforms? Many freelance developers name higher hourly rates, no commute time, no bosses, greater flexibility, more experience, and higher work satisfaction as some of the benefits compared to being an employed developer.

However, freelancing can be quite a lonely work environment… IF you don’t get active in forums and other communities with like-minded people. This article shows you the best freelance developer forums and communities.

#1 Finxter Freelance Developer Mastermind Group


The Python freelancer course from Finxter is the world’s most comprehensive learning resource for every ambitious person who wants to create their thriving coding business online. Is this you?


With the course comes access to a community of other freelance developers (Facebook Mastermind Group & upcoming Slack Community) with coders ranging from complete beginners to 20 years of experience in the freelancing industry. This is the best freelance developer forum for coders who seek help on every step of the way to reaching average freelancing skills with six-figure earning potential and beyond. ?

#2 Freelance Developer Reddit Community


Reddit is one of the first resources you can think of when searching for communities of like-minded people. There’s a subreddit for everyone. The best Reddit community for freelance developers is the /r/FreelanceDevelopers subred:


Here’s the link to the Reddit community for freelance developers: https://www.reddit.com/r/FreelanceDevelopers/

#3 Slack DevChat for Hackers


This supportive developer group is free to access and it contains roughly 20,000 people interested in coding. It’s not per se a freelancing group but for freelance developers, it’s definitely a great resource to ask questions and find support as you work on your coding projects for clients.


Here’s the link: DevChat – The Slack community for Hackers

#4 Quora Freelancing Tips and Hacks


The most active community on Quora regarding freelancing is the “Freelancing Tips and Hacks”.


Check out the new questions and answers: https://www.quora.com/topic/Freelancing-Tips-and-Hacks

I found quite some gems there. Here’s an interesting Quora thread I found:


You can click on the image to read the full answer.

#5 Upwork Community


Upwork is first and foremost a freelancing platform. But it’s also an active community of freelancers who communicate with each others. To participate in the discussion, you need an account—only passive reading can be done without an account. However, as a freelance developer, you do want to have an account on the leading freelance platform Upwork anyway, don’t you?


Here’s the link to the Upwork community (opens in a new tab): https://community.upwork.com/

#6 Freelancer.com Community


I don’t recommend Freelancer.com as a resource for finding gigs. Why? Because in recent years, the quality of the gigs suffered badly due to the flood of cheap labor competing away the monetary benefits of being a freelancer. However, the website contains solid information on freelancing and freelance developing. In fact, freelance developing has a very strong standing on the community platform.


Here’s the link to the Freelancer.com community: https://www.freelancer.com/community

#7 Talkfreelance


This forum is tailored towards web developers and web designers—so, it’s relevant to many freelance developers as well. However, you also find discussions about non-tech related freelancing topics such as marketing, legal help, sales, SEO, social media, etc. You can not only post questions and answers in the forum but also ask for gigs. A great forum for most freelance developers.


Looks kind of old-school, I know. Here’s the link to the Talkfreelance forum: http://www.talkfreelance.com/

#8 Home Business Forum


This community is for every person who’s starting a home-based business. As a freelancer, chances are that you are as well. However, the forum is also a bit broader covering all range of jobs that can be performed from home. Many topics cover essential topics such as business strategy, marketing, sales, tax, accounting. As a freelance developer, you must know these topics very well in order to thrive! With over 23,000 members and 7500 topics, the forum is not a small one either.


Here’s the link to Home Business Forum: http://www.homebusinessonline.com/forum/


I hope you found this collection useful—no go ahead and start your own freelancing adventure if you haven’t already!

Do you want to develop the skills of a well-rounded Python professional—while getting paid in the process? Become a Python freelancer and order your book Leaving the Rat Race with Python on Amazon (Kindle/Print)!

Leaving the Rat Race with Python Book

Where to Go From Here?


Enough theory, let’s get some practice!

To become successful in coding, you need to get out there and solve real problems for real people. That’s how you can become a six-figure earner easily. And that’s how you polish the skills you really need in practice. After all, what’s the use of learning theory that nobody ever needs?

Practice projects is how you sharpen your saw in coding!

Do you want to become a code master by focusing on practical code projects that actually earn you money and solve problems for people?

Then become a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Join my free webinar “How to Build Your High-Income Skill Python” and watch how I grew my coding business online and how you can, too—from the comfort of your own home.

Join the free webinar now!

The post Top 8 Freelance Developer Forums and Communities first appeared on Finxter.



https://www.sickgaming.net/blog/2020/10/...mmunities/

Print this item

  [Tut] Stripe One Time Payment with Prebuilt Hosted Checkout in PHP
Posted by: xSicKxBot - 10-06-2020, 09:27 PM - Forum: PHP Development - No Replies

Stripe One Time Payment with Prebuilt Hosted Checkout in PHP

Last modified on October 6th, 2020.

Stripe provides payment processing to support eCommerce software and mobile APPs. The key features by Stripe are,

  • fast and interactive checkout experience.
  • secure, smooth payment flow.
  • scope to uplift the conversion rate and business growth.

Stripe is the most popular payment gateway solution supporting card payments along with PayPal. Its complete documentation helps developers to do an effortless integration.

Stripe provides different types of payment services to accept payments. It supports accepting one-time payment, recurring payment, in-person payment and more.

There are two ways to set up the Stripe one-time payment option in a eCommerce website.

  1. Use the secure prebuilt hosted checkout page.
  2. Create a custom payment flow.

Let us take the first method to integrate Stripe’s one-time payment. The example code redirects customers to the Stripe hosted checkout page. It’s a pre-built page that allows customers to enter payment details.

Stripe hosted checkout option piggybacks on the Stripe trust factor. If your website is lesser-known, if you are not popular, then it is best to choose this option. Because the end users may feel uncomfortable to enter their card details on your page.

This diagram depicts the Stripe payment flow, redirect and response handling.

Stripe Hosted Checkout Block Diagram

In this example, it uses the latest checkout version to set up a one-time payment. If you want to create Stripe subscription payment, then the linked article has an example for it.

What is inside?


  1. About Stripe Checkout
  2. Steps to set up Stripe one-time payment flow
  3. About this example
  4. Generate and configure Stripe API keys
  5. Create webhook and map events
  6. Required libraries to access Stripe API
  7. Create client-server-side code to initiate checkout
  8. Capture and process webhook response
  9. Evaluate integration with test data
  10. Stripe one-time payment example output

About Stripe Checkout


Latest Stripe Checkout provides a frictionless smooth checkout experience. The below list shows some features of the latest Stripe checkout version.

  • Strong Customer Authentication (SCA).
  • Checkout interface fluidity over various devices’ viewport.
  • Multilingual support.
  • Configurable options to enable billing address collection, email receipts, and Button customizations

If you are using the legacy version,  it’s so simple to migrate to the latest Stripe Checkout version. The upgraded version supports advanced features like 3D secure, mobile payments and more.

Steps to setup Stripe one-time payment flow


The below steps are the least needs to set up a Stripe one-time payment online.

  1. Register with Stripe and generate API keys.
  2. Configure API keys with the application.
  3. Install and load the required libraries to access API.
  4. Create client and server-side code to make payments.
  5. Create endpoints to receive payment response and log into a database.
  6. Create a UI template to acknowledge customers.

We will see the above steps in this article with example code and screenshots.

About Stripe payment integration example


Stripe API allows applications to access and use its online payment services. It provides Stripe.js a JavaScript library to initiate the payment session flow.

This example code imports the Stripe libraries to access the API functions. It sets the endpoint to build the request and receive the response.

The client and server-side code redirect customers to the Stripe hosted checkout page. In the callback handlers, it processes the payment response sent by the API.

This example uses a database to store payment entries. It uses MySQLi with prepared statements to execute queries.

This image shows the simple file architecture of this example.

Stripe Hosted Checkout File Structure

Get and configure Stripe API keys


Register and log in with Stripe to get the API keys. Stripe dashboard will show two keys publishable_key and secret_key.

These keys are the reference to validate the request during the authentication process.

Note: Once finish testing in a sandbox mode, Stripe requires to activate the account to get the live API keys.

Get Stripe API Keys

This code shows the constants created to configure the API keys for this example.

<?php
namespace Phppot; class Config
{ const ROOT_PATH = "https://your-domain/stripe-hosted"; /* Stripe API test keys */ const STRIPE_PUBLISHIABLE_KEY = ""; const STRIPE_SECRET_KEY = ""; /* PRODUCT CONFIGURATIONS BEGINS */ const PRODUCT_NAME = 'A6900 MirrorLess Camera'; const PRODUCT_IMAGE = Config::ROOT_PATH . '/images/camera.jpg'; const PRODUCT_PRICE = '289.61'; const CURRENCY = 'USD'; const PRODUCT_TYPE = 'good';
}

Create webhook and map events


Creating a webhook is a conventional way to get the payment notifications sent by the API. All payment gateway providers give the option to create webhook for callback.

In PayPal payment gateway integration article, we have seen the types of notification mechanisms supported by PayPal.

The code has the webhook endpoint registered with Stripe. It handles the API responses based on the event that occurred.

The below image shows the screenshot of the add-endpoint dialog. It populates the URL and the mapped events in the form fields.

Navigate via Developers->Webhooks and click the Add endpoint button to see the dialog.

Add Stripe Webhook Endpoint

Required libraries to access Stripe API


First, download and install the stripe-php library. This will help to send flawless payment initiation request to the Stripe API.

This command helps to install this library via Composer. It is also available to download from GitHub.

composer require stripe/stripe-php

Load Stripe.js JavaScript library into the page which has the checkout button. Load this file by using https://js.stripe.com/v3/ instead of having it in local.

<script src="https://js.stripe.com/v3/"></script>

Create client-server code to process checkout


This section includes the steps needed to create the client-server code for setting up the Stripe one-time payment.

  1. Add checkout button and load Stripe.js
  2. Create a JavaScript event handler to initiate checkout session
  3. Create PHP endpoint to post create-checkout-session request
  4. Redirect customers to the Stripe hosted checkout page
  5. Get checkout session-id from the response.

HTML page with Stripe checkout button


This page has HTML code to add the Stripe checkout button. It loads the Stripe.js library.

This page loads a JavaScript that initiates the checkout session and redirects the user to the prebuilt Stripe hosted checkout.

The Stripe hosted checkout form handles the card validation effectively. We have created a custom car validator for Authorize.net payment integration code. Hosted checkout is more secure than handling card details by custom handlers.

index.php

<?php
namespace Phppot;
?>
<html>
<title>Stripe Prebuilt Hosted Checkout</title>
<head>
<link href="css/style.css" type="text/css" rel="stylesheet" />
<script src="https://js.stripe.com/v3/"></script>
</head>
<body> <div class="phppot-container"> <h1>Stripe Prebuilt Hosted Checkout</h1> <div id="payment-box"> <img src="images/camera.jpg" /> <h4 class="txt-title">A6900 MirrorLess Camera</h4> <div class="txt-price">$289.61</div> <button id="checkout-button">Checkout</button> </div> </div> <script> var stripe = Stripe('<?php echo Config::STRIPE_PUBLISHIABLE_KEY; ?>'); var checkoutButton = document.getElementById('checkout-button'); checkoutButton.addEventListener('click', function() { fetch('create-checkout-session.php', { method: 'POST', }) .then(function(response) { return response.json(); }) .then(function(session) { return stripe.redirectToCheckout({ sessionId: session.id }); }) .then(function(result) { if (result.error) { alert(result.error.message); } }) .catch(function(error) { console.error('Error:', error); }); }); </script>
</body>
</html>

JavaScript event handler initiates checkout session


In the previous section, it loads a JavaScript to do the following.

  1. Instantiate Stripe Javascript library object with the reference of the Stripe Publishable key.
  2. Map the checkout button’s click event to initiate a create-checkout-session.
  3. Redirect customers to the Stripe hosted checkout page with the checkout session id.

It calls the PHP endpoint builds the API request params to start a checkout session.

Then it receives the checkout-session-id as returned by the PHP endpoint. The redirectToCheckout() method sends customers to the prebuilt checkout to complete the payment.

PHP endpoint processing create-checkout-session request


When clicking the checkout button, the JavaScript executes an AJAX request. It fetches the PHP endpoint processing the create-checkout-session request.

The below code shows how to create the Stripe checkout-session via API. The API request is with the required query parameters. It includes the product detail, unit amount, payment method and more.

Then the API will return the session object after processing this request. This endpoint parses the response and grab the session-id and return it.

ajax-endpoint/create-checkout-session.php

<?php
namespace Phppot; use Phppot\StripeService;
use Phppot\StripePayment; $orderReferenceId = rand(100000, 999999); require_once __DIR__ . "/../lib/StripeService.php";
require_once __DIR__ .'/../Common/Config.php'; require_once __DIR__ . '/../lib/StripePayment.php';
$stripePayment = new StripePayment(); $stripeService = new StripeService(); $currency = Config::CURRENCY; $orderId = $stripePayment->insertOrder(Config::PRODUCT_PRICE, $currency, $orderReferenceId, "Payment in-progress");
$unitAmount = Config::PRODUCT_PRICE * 100;
$session = $stripeService->createCheckoutSession($unitAmount, $orderId);
echo json_encode($session);

The StripeService is a PHP class created to build API requests and process responses.

The createCheckoutSession() function builds the param array for the create-checkout-session request.

This service also handles the webhook responses sent by the API. The API sends the response on the occurrences of the events mapped with the webhook endpoint URL.

lib/StripeService.php

<?php
namespace Phppot; require_once __DIR__ . '/../Common/Config.php'; class StripeService
{ function __construct() { require_once __DIR__ . "/../vendor/autoload.php"; // Set your secret key. Remember to set your live key in production! \Stripe\Stripe::setApiKey(Config::STRIPE_SECRET_KEY); } public function createCheckoutSession($unitAmount, $clientReferenceId) { $checkout_session = \Stripe\Checkout\Session::create([ 'payment_method_types' => ['card'], 'line_items' => [[ 'price_data' => [ 'currency' => Config::CURRENCY, 'unit_amount' => $unitAmount, 'product_data' => [ 'name' => Config::PRODUCT_NAME, 'images' => [Config::PRODUCT_IMAGE], ], ], 'quantity' => 1, ]], 'mode' => 'payment', 'client_reference_id' => $clientReferenceId, 'success_url' => Config::ROOT_PATH . '/success.php?session_id={CHECKOUT_SESSION_ID}', 'cancel_url' => Config::ROOT_PATH . '/index.php?status=cancel', ]); return $checkout_session; } public function captureResponse() { $payload = @file_get_contents('php://input'); $event = json_decode($payload); require_once __DIR__ . "/../lib/StripePayment.php"; $stripePayment = new StripePayment(); switch($event->type) { case "customer.created": $param["stripe_customer_id"] = $event->data->object->id; $param["email"] = $event->data->object->email; $param["customer_created_datetime"] = date("Y,m,d H:i:s", $event->data->object->created); $param["stripe_response"] = json_encode($event->data->object); $stripePayment->insertCustomer($param); break; case "checkout.session.completed": $param["order_id"] = $event->data->object->client_reference_id; $param["customer_id"] = $event->data->object->customer; $param["payment_intent_id"] = $event->data->object->payment_intent; $param["stripe_checkout_response"] = json_encode($event->data->object); $stripePayment->updateOrder($param); break; case "payment_intent.created": $param["payment_intent_id"] = $event->data->object->id; $param["payment_create_at"] = date("Y-m-d H:i:s", $event->data->object->created); $param["payment_status"] = $event->data->object->status; $param["stripe_payment_response"] = json_encode($event->data->object); $stripePayment->insertPayment($param); break; case "payment_intent.succeeded": $param["payment_intent_id"] = $event->data->object->id; $param["billing_name"] = $event->data->object->charges->data[0]->billing_details->name; $param["billing_email"] = $event->data->object->charges->data[0]->billing_details->email; $param["payment_last_updated"] = date("Y-m-d H:i:s", $event->data->object->charges->data[0]->created); $param["payment_status"] = $event->data->object->charges->data[0]->status; $param["stripe_payment_response"] = json_encode($event->data->object); $stripePayment->updatePayment($param); break; case "payment_intent.canceled": $param["payment_intent_id"] = $event->data->object->id; $param["billing_name"] = $event->data->object->charges->data[0]->billing_details->name; $param["billing_email"] = $event->data->object->charges->data[0]->billing_details->email; $param["payment_last_updated"] = date("Y-m-d H:i:s", $event->data->object->charges->data[0]->created); $param["payment_status"] = $event->data->object->charges->data[0]->status; $param["stripe_payment_response"] = json_encode($event->data->object); $stripePayment->updatePayment($param); break; case "payment_intent.payment_failed": $param["payment_intent_id"] = $event->data->object->id; $param["billing_name"] = $event->data->object->charges->data[0]->billing_details->name; $param["billing_email"] = $event->data->object->charges->data[0]->billing_details->email; $param["payment_last_updated"] = date("Y-m-d H:i:s", $event->data->object->charges->data[0]->created); $param["payment_status"] = $event->data->object->charges->data[0]->status; $param["stripe_payment_response"] = json_encode($event->data->object); $stripePayment->updatePayment($param); break; } http_response_code(200); }
}

Capture and process response


The capture-response.php file calls the StripeService class to handle the webhook response.

The registered webhook endpoint has the mapping for the events. The figure shows the mapped events and the webhook URL below.

Stripe Developers Webhook Detail

The captureResponse() function handles the API response based on the events that occurred.

On each event, it updates the customer, order database tables. It creates the payment response log to put entries into the tbl_stripe_response table.

webhook-ep/capture-response.php

<?php
namespace Phppot; use Phppot\StriService; require_once __DIR__ . "/../lib/StripeService.php"; $stripeService = new StripeService(); $stripeService->captureResponse(); ?>

It invokes the StripeService function captureResponse(). It calls StripePayment to store Orders, Customers and Payment data into the database.

The StripePayment class it uses DataSource to connect the database and access it.

lib/StripePayment.php

<?php
namespace Phppot; use Phppot\DataSource; class StripePayment
{ private $ds; function __construct() { require_once __DIR__ . "/../lib/DataSource.php"; $this->ds = new DataSource(); } public function insertOrder($unitAmount, $currency, $orderReferenceId, $orderStatus) { $orderAt = date("Y-m-d H:i:s"); $insertQuery = "INSERT INTO tbl_order(order_reference_id, amount, currency, order_at, order_status) VALUES (?, ?, ?, ?, ?) "; $paramValue = array( $orderReferenceId, $unitAmount, $currency, $orderAt, $orderStatus ); $paramType = "sisss"; $insertId = $this->ds->insert($insertQuery, $paramType, $paramValue); return $insertId; } public function updateOrder($param) { $paymentDetails = $this->getPaymentByIntent($param["payment_intent_id"]); if (! empty($paymentDetails)) { if($paymentDetails[0]["payment_status"] == "succeeded") { $paymentStatus = "Paid"; } else if($paymentDetails[0]["payment_status"] == "requires_source") { $paymentStatus = "Payment in-progress"; } $query = "UPDATE tbl_order SET stripe_customer_id = ?, stripe_payment_intent_id = ?, stripe_checkout_response = ?, order_status = ? WHERE id = ?"; $paramValue = array( $param["customer_id"], $param["payment_intent_id"], $param["stripe_checkout_response"], $paymentStatus, $param["order_id"] ); $paramType = "ssssi"; $this->ds->execute($query, $paramType, $paramValue); } } public function insertCustomer($customer) { $insertQuery = "INSERT INTO tbl_customer(stripe_customer_id, email, customer_created_datetime, stripe_response) VALUES (?, ?, ?, ?) "; $paramValue = array( $customer["stripe_customer_id"], $customer["email"], $customer["customer_created_datetime"], $customer["stripe_response"] ); $paramType = "ssss"; $this->ds->insert($insertQuery, $paramType, $paramValue); } public function insertPayment($param) { $insertQuery = "INSERT INTO tbl_payment(stripe_payment_intent_id, payment_create_at, payment_status, stripe_payment_response) VALUES (?, ?, ?, ?) "; $paramValue = array( $param["payment_intent_id"], $param["payment_create_at"], $param["payment_status"], $param["stripe_payment_response"] ); $paramType = "ssss"; $this->ds->insert($insertQuery, $paramType, $paramValue); } public function updatePayment($param) { $query = "UPDATE tbl_payment SET billing_name = ?, billing_email = ?, payment_last_updated = ?, payment_status = ?, stripe_payment_response = ? WHERE stripe_payment_intent_id = ?"; $paramValue = array( $param["billing_name"], $param["billing_email"], $param["payment_last_updated"], $param["payment_status"], $param["stripe_payment_response"], $param["payment_intent_id"] ); $paramType = "ssssss"; $this->ds->execute($query, $paramType, $paramValue); } public function getPaymentByIntent($paymentIntent) { $query = "SELECT * FROM tbl_payment WHERE stripe_payment_intent_id = ?"; $paramValue = array( $paymentIntent ); $paramType = "s"; $result = $this->ds->select($query, $paramType, $paramValue); return $result; }
}
?>

Showing success page after payment


As sent with the create-checkout-session request, Stripe invokes the success page URL after payment.

The below code has the payment success message to acknowledge customers.

success.php

<?php
namespace Phppot; require_once __DIR__ . '/Common/Config.php';
?>
<html>
<head>
<title>Payment Response</title>
<link href="./css/style.css" type="text/css" rel="stylesheet" />
</head>
<body> <div class="phppot-container"> <h1>Thank you for shopping with us.</h1> <p>You have purchased "<?php echo Config::PRODUCT_NAME; ?>" successfully.</p> <p>You have been notified about the payment status of your purchase shortly.</p> </div>
</body>
</html>

Database script


Import the following SQL script to execute this example in your environment. It has the SQL to create tables created for this example and to build a relationship between them.

sql/structure.sql

--
-- Table structure for table `tbl_customer`
-- CREATE TABLE `tbl_customer` ( `id` int(11) NOT NULL, `stripe_customer_id` varchar(255) NOT NULL, `email` varchar(50) NOT NULL, `customer_created_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `stripe_response` text NOT NULL, `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- --
-- Table structure for table `tbl_order`
-- CREATE TABLE `tbl_order` ( `id` int(11) NOT NULL, `order_reference_id` varchar(255) NOT NULL, `stripe_customer_id` varchar(255) DEFAULT NULL, `stripe_payment_intent_id` varchar(255) DEFAULT NULL, `amount` decimal(10,2) NOT NULL, `currency` varchar(10) NOT NULL, `order_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `order_status` varchar(25) NOT NULL, `stripe_checkout_response` text NOT NULL, `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- -------------------------------------------------------- --
-- Table structure for table `tbl_payment`
-- CREATE TABLE `tbl_payment` ( `id` int(11) NOT NULL, `stripe_payment_intent_id` varchar(255) NOT NULL, `payment_create_at` timestamp NULL DEFAULT NULL, `payment_last_updated` timestamp NULL DEFAULT '0000-00-00 00:00:00', `billing_name` varchar(255) NOT NULL, `billing_email` varchar(255) NOT NULL, `payment_status` varchar(255) NOT NULL, `stripe_payment_response` text NOT NULL, `create_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1; --
-- Indexes for dumped tables
-- --
-- Indexes for table `tbl_customer`
--
ALTER TABLE `tbl_customer` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `stripe_customer_id` (`stripe_customer_id`); --
-- Indexes for table `tbl_order`
--
ALTER TABLE `tbl_order` ADD PRIMARY KEY (`id`), ADD KEY `stripe_payment_intent_id` (`stripe_payment_intent_id`), ADD KEY `stripe_customer_id` (`stripe_customer_id`); --
-- Indexes for table `tbl_payment`
--
ALTER TABLE `tbl_payment` ADD PRIMARY KEY (`id`), ADD UNIQUE KEY `stripe_payment_intent_id` (`stripe_payment_intent_id`); --
-- AUTO_INCREMENT for dumped tables
-- --
-- AUTO_INCREMENT for table `tbl_customer`
--
ALTER TABLE `tbl_customer` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; --
-- AUTO_INCREMENT for table `tbl_order`
--
ALTER TABLE `tbl_order` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; --
-- AUTO_INCREMENT for table `tbl_payment`
--
ALTER TABLE `tbl_payment` MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; --
-- Constraints for dumped tables
-- --
-- Constraints for table `tbl_order`
--
ALTER TABLE `tbl_order` ADD CONSTRAINT `tbl_order_ibfk_1` FOREIGN KEY (`stripe_payment_intent_id`) REFERENCES `tbl_payment` (`stripe_payment_intent_id`), ADD CONSTRAINT `tbl_order_ibfk_2` FOREIGN KEY (`stripe_customer_id`) REFERENCES `tbl_customer` (`stripe_customer_id`);
COMMIT;

Evaluate integration with test data


After integrating Stripe one-time payment, evaluate the integration with test card details.

The following test card details help to try a successful payment flow.

Card Number 4242424242424242
Expiry Month/Year Any future date
CVV Three-digit number

Stripe provides more test card details to receive more types of responses.

Stripe one-time payment example output


This example displays a product tile with the Stripe Checkout button as shown below.

Stripe Payment Landing Page

On clicking the Checkout button, it redirects customers to the prebuilt Stripe hosted checkout page.

Stripe Hosted Checkout Page

After processing the payment, Stripe will redirect customers to the success page URL.

Payment Success Page

Conclusion


We have seen how to integrate the stripe hosted checkout in PHP with an example. Hope it is simple and easy to follow.

It helps to have a quick glance with the bullet points pre-requisites, implementation steps. It pinpoints the todo items in short.

The downloadable source code has the required vendor files. It is not needed to download libraries and SDK from anywhere.

With database intervention, the code is ready to integrate with a full-fledged application.

With the latest Stripe checkout version, it provides payment services with SCA and more advanced features.

Download

↑ Back to Top



https://www.sickgaming.net/blog/2020/10/...ut-in-php/

Print this item

  (Indie Deal) Civ.VI Digital Deluxe Deal, Going Under & Port Royale 4 are out
Posted by: xSicKxBot - 10-06-2020, 09:27 PM - Forum: Deals or Specials - No Replies

Civ.VI Digital Deluxe Deal, Going Under & Port Royale 4 are out

Sid Meier's Civilization VI Digital Deluxe Edition at 81% OFF!
[www.indiegala.com]
History has been made! Save 81% of your luxury resources with the Sid Meier's Civilization VI Digital Deluxe Edition Crackerjack Deal! You might also be interested in more 2K Deals
https://youtu.be/OJbzmMRcD64
https://youtu.be/ZQmRztWfP9o
Stay Inside, Stay Safe and Enjoy Good Games.
Check out IndieGala on Twitter, YouTube & Facebook[www.facebook.com]


https://steamcommunity.com/groups/indieg...3540521324

Print this item

  News - It Looks Like Hackers Are Already Cheating In Super Mario Bros. 35
Posted by: xSicKxBot - 10-06-2020, 07:35 PM - Forum: Nintendo Discussion - No Replies

It Looks Like Hackers Are Already Cheating In Super Mario Bros. 35

Super Mario Bros 35

It’s only been out for a matter of days, but it would appear that hackers have found a way to cheat in Nintendo’s new Mario battle royale, Super Mario Bros. 35.

As reported by Polygon, social media users began to notice some suspicious activity in the game earlier this week, with players topping the leaderboards after collecting a whopping 99,999 coins. That feat seems very unlikely, leading people to believe that hacking must be to blame.


On top of this, Nintendo has removed a YouTube user’s video titled ‘Super Mario Bros. 35 Online hacking Part 2’, which presumably showed gameplay of a hacked version of the game, or possibly advice on how to hack into the game yourself.

While collecting coins isn’t the main objective of the game, having an infinite supply of them gives you an incredibly unfair advantage over your opponents. It’s no surprise, then, that Nintendo wants to stop hacking of this nature in its tracks.

If you’re looking to pick up some new tips and tricks to win at Super Mario Bros. 35 legitimately, feel free to check out our guide.



https://www.sickgaming.net/blog/2020/10/...o-bros-35/

Print this item

  News - Video: Mario Kart Live: Home Circuit Gets A Shiny New Commercial
Posted by: xSicKxBot - 10-06-2020, 07:35 PM - Forum: Nintendo Discussion - No Replies

Video: Mario Kart Live: Home Circuit Gets A Shiny New Commercial


Next week sees the launch of Mario Kart Live: Home Circuit on Switch, Nintendo’s latest attempt to bring innovative fun into your home through a combination of video games and physical toys.

A new commercial has been posted online to build the hype (see above), showing off some of the exciting things you can do with the new Mario Kart RC cars and the downloadable software on Switch.

Last week, we shared our first impressions of Mario Kart Live: Home Circuit after being treated to a remote demonstration. While some diehard Mario Kart fans might be viewing this as a gimmicky take on the franchise, we think it does have an awful lot of potential. You can read our early thoughts here, or check them out in video form below if that’s your thing.


How are you feeling about Mario Kart Live: Home Circuit? Are you excited for it? Not interested? Let us know in the comments.



https://www.sickgaming.net/blog/2020/10/...ommercial/

Print this item

  Xbox Wire - Mafia: Definitive Edition Available Now on Xbox One
Posted by: xSicKxBot - 10-06-2020, 06:33 PM - Forum: Xbox Discussion - No Replies

Mafia: Definitive Edition Available Now on Xbox One

Summary


  • Mafia: Definitive Edition is out now, transporting you into a world of organized crime in the Prohibition Era of 1930s America
  • Explore the city of Lost Heaven and rise through the ranks of the Salieri Crime Family
  • Play as cabbie-turned-mobster Tommy Angelo in this complete remake of a beloved classic.

Back in 2004, Mafia: The City of Lost Heaven debuted on the original Xbox to critical acclaim, becoming an instant cult classic for its authentic, cinematic depiction of organized crime in 1930s America. Now, Mafia: Definitive Edition is available on Xbox One, retelling the iconic story of cabbie-turned-mobster Tommy Angelo in this expanded remake that’s been built from the group up.

Mafia: Definitive Edition

Set in the Midwest city of Lost Heaven during the Prohibition Era, Mafia: Definitive Edition follows Tommy Angelo, a hardworking cab driver who’s pulled into the criminal underworld after a fateful run-in with the Italian Mafia. As Tommy, you’ll complete jobs for the powerful Don Salieri, rising through the ranks of the mob, evading the law, and defending your turf from the Morello Crime Family. It’s your chance to play the lead in a traditional mobster story, brought to life by gripping cinematics and thrilling missions.

Mafia: Definitive Edition

Mafia: Definitive Edition is a faithful remake that improves on every aspect of the original game, from the gorgeous visuals and stellar presentation to the modernized gameplay and expanded story. The city of Lost Heaven and the countryside beyond its streets are even bigger than longtime fans will remember, and you can now cruise around on motorcycles in addition to the many other period-authentic vehicles. On Xbox One X, you’ll be able to take in the stunning sights in 4K, giving you even more appreciation for the visual detail and graphical fidelity of this complete remake.

Mafia: Definitive Edition

Making Mafia: Definitive Edition has been a labor of love for the entire team here at Hangar 13. Some of our developers have worked on every game in the Mafia series including the original, so getting the chance to remake it all these years later and introduce it to a new generation is immensely exciting. Whether you’re new to the Mafia series or you’ve been a fan since the very start, we sincerely hope you enjoy living the life of a gangster in Mafia: Definitive Edition. Welcome to the family.

Xbox LiveXbox Live

Mafia: Definitive Edition


2K

☆☆☆☆☆ 5
★★★★★

Xbox One X Enhanced

Available September 25th, 2020 Part one of the Mafia crime saga – 1930s, Lost Heaven, IL
Re-made from the ground up, rise through the ranks of the Mafia during the Prohibition era of organized crime. After a run-in with the mob, cab driver Tommy Angelo is thrust into a deadly underworld. Initially uneasy about falling in with the Salieri crime family, Tommy soon finds that the rewards are too big to ignore. Play a Mob Movie:
Live the life of a Prohibition-era gangster and rise through the ranks of the Mafia. Lost Heaven, IL: Recreated 1930’s cityscape, filled with interwar architecture, cars and culture to see, hear and interact with. Re-Made Classic:
Faithfully recreated, with expanded story, gameplay and original score. This is the Mafia you remembered and much more. Own Mafia: Definitive Edition to unlock Tommy’s Suit and Cab in both Mafia II and Mafia III Definitive Editions. Learn More at www.MafiaGame.com



https://www.sickgaming.net/blog/2020/09/...-xbox-one/

Print this item

  News - Get a job: Join the team at Volition as a Junior Gameplay Programmer
Posted by: xSicKxBot - 10-06-2020, 06:32 PM - Forum: Lounge - No Replies

Get a job: Join the team at Volition as a Junior Gameplay Programmer

The Gamasutra Job Board is the most diverse, active and established board of its kind for the video game industry!

Here is just one of the many, many positions being advertised right now.

Location: Champaign, Illinois

Looking to break into the games industry? Do you only have a little experience, but a lot of talent, passion and desire to learn? Then come work at Volition and assist us with the development of our new Saints Row title! At Volition, we have a highly collaborative team of game creators, a strong programming culture, and lots of senior programmers ready and willing to help mentor you and develop your talent.

Responsibilities:

  • Develop and enhance gameplay systems for AAA Xbox One, PlayStation 4, and PC titles.
  • Collaborate heavily with designers and artists.

Qualifications:

  • Bachelor’s Degree in Computer Science or related field, or equivalent experience.
  • Ability to program and debug in C++.
  • Ability to work well with others and learn quickly.

Pluses:

  • Familiarity with Visual Scripting (Unity, Unreal).
  • Demonstrated desire to work in the games industry by working on game projects in modern 3D engines.

Application Requirements:

  • Resume.
  • Code samples.
  • Cover Letter. We want to learn more about you. Why are you excited about this job, about working at Volition, about working in games, etc.? Help us understand what sets you apart from the competition.

Interested? Apply now.

Whether you’re just starting out, looking for something new, or just seeing what’s out there, the Gamasutra Job Board is the place where game developers move ahead in their careers.

Gamasutra’s Job Board is the most diverse, most active, and most established board of its kind in the video game industry, serving companies of all sizes, from indie to triple-A.

Looking for a new job? Get started here. Are you a recruiter looking for talent? Post jobs here.



https://www.sickgaming.net/blog/2020/10/...rogrammer/

Print this item

  News - Rovio CEO Kati Levoranta will leave the company at the end of 2020
Posted by: xSicKxBot - 10-06-2020, 06:32 PM - Forum: Lounge - No Replies

Rovio CEO Kati Levoranta will leave the company at the end of 2020

Rovio CEO Kati Levoranta will depart the company at the end of 2020 after more than four years at the helm.

Levoranta has spent over eight years at the Angry Birds maker, initially joining as chief legal officer in June 2012, before making the switch to head of sales in March 2015. She was eventually named CEO in January 2016, but will now be leaving the Finnish studio at the end of the year.

“For years, Kati has been in a key position in many areas of Rovio’s development. During her time as CEO, the company has carried out systematic strategic and operative work to sharpen its business focus, develop the game business and cherish the Angry Birds brand,” commented Kim Ignatius, chairman of Rovio’s board of directors.

“Under Kati’s determined leadership, Rovio was also listed on the stock exchange. As Rovio reports in its half-year financial review 2020, the company’s result and cash flow development are on a good level and its balance sheet is strong.”

The board of directors has already begun the search for a new CEO, but hasn’t indicated when it will announce Levoranta’s successor.



https://www.sickgaming.net/blog/2020/10/...d-of-2020/

Print this item

  Unreal Engine Marketplace Giveaway for October 2020
Posted by: xSicKxBot - 10-06-2020, 01:29 PM - Forum: Game Development - No Replies

Unreal Engine Marketplace Giveaway for October 2020

It’s the first Tuesday of the month and that means it time for Unreal Christmas in October. Every month Epic Games gives away several assets for Unreal Engine developer and this month we got more than double the normal amount of new assets!

This months “Free for October” assets include:

The “Permanently Free” collection grew a fair bit as well:

Just be sure to “buy” the free assets before the first Tuesday in November and they are yours forever. You can learn more about this months giveaway in the video below.






https://www.sickgaming.net/blog/2020/10/...ober-2020/

Print this item

  (Indie Deal) ?FREE H.M. Neko Waifus, Bungie & ESO Sales, GalaQuiz
Posted by: xSicKxBot - 10-06-2020, 09:09 AM - Forum: Deals or Specials - No Replies

?FREE H.M. Neko Waifus, Bungie & ESO Sales, GalaQuiz

FREE Hentai Mosaique Neko Waifus
[freebies.indiegala.com]
Just relax with these cute animated catgirls, while solving puzzles and leveling up in one of the sexiest FREEbies available.
Bungie Weekend Sale, up to -40%
[www.indiegala.com]
The Elder Scrolls Online Lost Treasures Sale, up to -60%
[www.indiegala.com]
Store Top Picks
The 211st GalaQuiz will be LIVE soon, win up to $50:dollars: in GalaCredit!
[www.indiegala.com]
The GalaQuiz will take place in less than 30 minutes from this announcement
Today's GalaQuiz[www.indiegala.com] hints are up. The theme will be Mission Impossible.

Stay Inside, Stay Safe and Enjoy Good Games.
Check out IndieGala on Twitter, YouTube & Facebook[www.facebook.com]


https://steamcommunity.com/groups/indieg...3533393586

Print this item