Our Latest Blog Posts

latest-post

Stripe Connect is the fastest way to integrate payment into your marketplace.

In this tutorial we are going to integrate the stripe connect with Laravel.

To integrate the stripe connect you must need the stripe secret and the stripe key. You can get that credentials from your Stripe account.

So let's start integrating...

Installation

composer require srmklive/paypal:~2.0

Onboard the seller using Stripe connect

Define the route for onboarding the seller.

  Route::get('onboard-seller', [StripeController::class, 'onboard']);

Now on StripeController.php write the code for the onboarding link.

use Stripe\Stripe;
use Stripe\Account;
use App\Models\User;
use Stripe\AccountLink;

public function onBoard()
{
    $user = Auth::user();

    /** @var User $user */
    if (empty($user->stripe_on_boarding_completed_at)) {
        Stripe::setApiKey(stripeKey());

        if (empty($user->stripe_connect_id)) {
            /** @var Account $account */
            $account = Account::create([
                'type'         => 'express',
                'email'        => $user->email,
                'country'      => 'US',
                'capabilities' => [
                    'card_payments' => ['requested' => true],
                    'transfers'     => ['requested' => true],
                ],
                'settings'     => [
                    'payouts' => [
                        'schedule' => [
                            'interval' => 'manual',
                        ],
                    ],
                ],
            ]);

            $user->stripe_connect_id = $account->id;
            $user->save();
        }

        $user->fresh();

        $onBoardLink = AccountLink::create([
            'account'     => $user->stripe_connect_id,
            'refresh_url' => route('organization.dashboard'),
            'return_url'  => route('stripe.onboard-result', Crypt::encrypt($user->stripe_connect_id)),
            'type'        => 'account_onboarding',
        ]);

        return redirect($onBoardLink->url);
    }


    $loginLink = $this->stripeClient->accounts->createLoginLink($user->stripe_connect_id, []);

    return redirect($loginLink->url);
}

Please note that you have to generate routes for return and cancel URLs.

Once a merchant is successfully onboarded stripe will again redirect him to the return_url

Below you can find the code in which we managed the success callback.

public function onBoardResult($encodedToken)
{
    /** @var User $user */
    $user = User::whereStripeConnectId(Crypt::decrypt($encodedToken))->firstOrFail();

    $user->stripe_on_boarding_completed_at = Carbon::now();
    $user->save();

    return redirect(route('dashboard'));
}
June 02, 20231 minuteuserVishal Ribdiya

Posts

How to use Biometric(Fingerprint) in Android?

1) What is Biometric? -> Authenticate by using biometric data, and perform cryptographic operations

  • Declaring dependencies -> Add the dependencies for the artifacts you need in the build.gradle file for your app or module:

    dependencies {

     // Java language implementation
    implementation "androidx.biometric:biometric:1.1.0"
    
    // Kotlin
    implementation "androidx.biometric:biometric-ktx:1.2.0- 
     alpha05"

    }

2) How to show a biometric authentication dialog?

-> Implementing biometric authentication, such as face recognition or fingerprint recognition, is one way to safeguard sensitive information or premium content within your app. This guide will show you how to support biometric login processes in your app.

  • Declare the strong authentication that your app supports. -> To define the types of authentication that your app supports, use the BiometricManager.Authenticators interface. The system lets you declare the following types of authentication:
  1. BIOMETRIC_STRONG
  2. BIOMETRIC_WEAK
  3. DEVICE_CREDENTIAL : (Authentication using a screen lock credential – the user's PIN, pattern, or password.)
  • Pass an authentication type or a bitwise mixture of types into the setAllowedAuthenticators() function to define the forms of biometric authentication that your app permits. The code snippet below illustrates how to implement authentication using a Class 3 biometric or a screen lock credential :

     promptInfo = new 
       BiometricPrompt.PromptInfo.Builder()
       .setTitle("Biometric login for my app")
       .setSubtitle("Log in using your biometric 
      credential")
      .setAllowedAuthenticators(BIOMETRIC_STRONG | 
       DEVICE_CREDENTIAL)
     .build();
  • Check that biometric authentication is available

     BiometricManager biometricManager = BiometricManager.from(this);

    switch (biometricManager.canAuthenticate(BIOMETRIC_STRONG | DEVICE_CREDENTIAL)) { case BiometricManager.BIOMETRIC_SUCCESS: Log.d("MY_APP_TAG", "App can authenticate using biometrics."); break; case BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE: Log.e("MY_APP_TAG", "No biometric features available on this device."); break; case BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE: Log.e("MY_APP_TAG", "Biometric features are currently unavailable."); break; case BiometricManager.BIOMETRIC_ERROR_NONE_ENROLLED: // Prompts the user to create credentials that your app accepts. final Intent enrollIntent = new Intent(Settings.ACTION_BIOMETRIC_ENROLL); enrollIntent.putExtra(Settings.EXTRA_BIOMETRIC_AUTHENTICATORS_ALLOWED, BIOMETRIC_STRONG | DEVICE_CREDENTIAL); startActivityForResult(enrollIntent, REQUEST_CODE); break; }

  • Complete the following steps to add biometric authentication to your app using the Biometric library:

1). Include a link to the androidx.biometric library as a dependency in the build.gradle file for your app module.

2). Using the logic in the following code snippet, display the biometric login dialog in the activity or fragment that hosts it:

   private Executor executor;
   private BiometricPrompt biometricPrompt;
  private BiometricPrompt.PromptInfo promptInfo;

@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_login);
    executor = ContextCompat.getMainExecutor(this);
    biometricPrompt = new 
 BiometricPrompt(MainActivity.this,
        executor, new 
  BiometricPrompt.AuthenticationCallback() {
    @Override
    public void onAuthenticationError(int errorCode,
            @NonNull CharSequence errString) {
        super.onAuthenticationError(errorCode, errString);
        Toast.makeText(getApplicationContext(),
            "Authentication error: " + errString, 
      Toast.LENGTH_SHORT)
            .show();
       }

     @Override
      public void onAuthenticationSucceeded(
            @NonNull BiometricPrompt.AuthenticationResult 
       result) {
        super.onAuthenticationSucceeded(result);
        Toast.makeText(getApplicationContext(),
            "Authentication succeeded!", 
       Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onAuthenticationFailed() {
        super.onAuthenticationFailed();
        Toast.makeText(getApplicationContext(), 
    "Authentication failed",
            Toast.LENGTH_SHORT)
            .show();
       }
     });

     promptInfo = new BiometricPrompt.PromptInfo.Builder()
        .setTitle("Biometric login for my app")
        .setSubtitle("Log in using your biometric 
   credential")
        .setNegativeButtonText("Use account password")
        .build();

   // Prompt appears when user clicks "Log in".
   // Consider integrating with the keystore to unlock 
  cryptographic operations,
   // if needed by your app.
    Button biometricLoginButton = 
  findViewById(R.id.biometric_login);
   biometricLoginButton.setOnClickListener(view -> {
        biometricPrompt.authenticate(promptInfo);
   });
     }
January 11, 20233 minutesauthorVivek Beladiya
A look at what coming to Laravel 10

I am personally really excited about Laravel 10, are you also excited :) ?. the expected release date for Laravel 10 is 7th February 2023.

In this tutorial, we are going to cover new features and changes from Laravel 10.

Release Date

Laravel 10 will be released by 7th February 2023 and below is a list of annual release dates.

  • Laravel 9: February 8th, 2022
  • Laravel 10: February 7th, 2023
  • Laravel 11: February 6th, 2024

Drop Support for PHP 8.0

Laravel 10 dropping support for PHP <= 8.0, the minimum requirement to run Laravel 10 is PHP 8.1

Deprecations from Laravel 9

In Laravel 10 some of Laravel 9 methods will be deprecated, here is the list.

  • Remove various deprecations
  • Remove deprecated dates property
  • Remove handleDeprecation method
  • Remove deprecated assertTimesSent method
  • Remove deprecated ScheduleListCommand's $defaultName property
  • Remove deprecated Route::home method
  • Remove deprecated dispatchNow functionality

Native type declarations in Laravel 10 skeleton

In Laravel 10 the code userland generated by framework will contain the type-hints and return types.

Types will be added into latest PHP type-hinting features to Laravel projects without breaking backward compatibility at the framework level:

  • Return types
  • Method arguments
  • Redundant annotations are removed where possible
  • Allow user land types in closure arguments
  • Does not include typed properties

Any Many more

Hope that will be usefull.

January 09, 20231 minuteauthorVishal Ribdiya
How to Improve Website Performance

Improving the performance of your website can have a significant impact on its success. A fast-loading website not only provides a better user experience but can also improve your search engine rankings and increase conversions. Here are some tips for improving the performance of your website:

Use a content delivery network (CDN)

A CDN stores copies of your website's static assets (such as images and CSS files) on servers located around the world. When a user accesses your website, the CDN will serve the content from the server closest to their location, which can significantly reduce loading times.

Optimize images

Large images can significantly slow down your website. Make sure to optimize your images by compressing them and using the appropriate file format (such as JPEG for photographs and PNG for graphics with transparent backgrounds).

Enable browser caching

Browser caching allows a user's browser to store some aspects of your website locally, so they don't have to be downloaded every time they visit your site. This can significantly reduce loading times for repeat visitors.

Minimize HTTP requests

Each time a user's browser requests a resource (such as an image or stylesheet) from your website, it creates an HTTP request. Minimizing the number of HTTP requests can improve your website's performance.

Use a lightweight theme

If you're using a content management system (CMS) like WordPress, choose a lightweight theme that is optimized for performance.

Optimize your website's code

Make sure your website's code is clean and well-organized. This can help reduce the size of your HTML, CSS, and JavaScript files, which can improve your website's loading times.

By following these tips, you can significantly improve the performance of your website and provide a better experience for your users.

January 06, 20231 minuteauthorAnkit Kalathiya
Alpha Vs Beta Testing: What’s the Difference?

Alpha Vs Beta Testing: What’s the Difference?

Before we start alpha vs beta testing, We should know what is alpha testing and what is beta testing.

What is Alpha Testing?

Alpha testing is conducted to determine defects before releasing the final product to end users or to the public. Then the main goal of alpha is to identify the tasks that a typical user might perform and test them.

What is Beta Testing?

Beta testing is a type of software testing which is performed by real users of the software in a real environment. Beta testing is also one type of user acceptance testing. This testing helps the tester to test products in the customer’s environment.

Difference: Alpha Vs Beta Testing

The difference between alpha vs beta testing is as below:

Alpha Testing Beta Testing
Alpha testing needs a testing atmosphere or a lab for testing. Beta testing doesn’t need a testing atmosphere or lab for testing.
Alpha testing may need a lengthy execution cycle. Beta testing needs only a few weeks of execution.
In alpha testing, developers can directly address critical bugs or fixes. Most of the bugs or feedback collected from the beta testing will be executed in future versions of the product.

Test Goals

Alpha Testing Beta Testing
The goal of alpha testing is to estimate the quality of the product. The goal of beta testing is to estimate customer satisfaction.
To confirm Beta eagerness To confirm release eagerness
Concentrate on finding defects or errors Concentrate on gathering recommendations/feedback and consider them effectively
Confirm that, does the product works properly without any bugs. Confirm that, do clients like the released product.

Test Duration

Alpha Testing Beta Testing
Multiple test cycles performed Only performed 1 or 2 test cycles
Separately each test cycle stays for 1 – 2 weeks Separately each test cycle stays for 4 – 6 weeks
The duration of the cycle also depends on how many bugs are found and how many new features are added during alpha testing. The duration of the cycle may expand based on the end user’s feedback/recommendation.

Expectations

Alpha Testing Beta Testing
An acceptable number of bugs were missed in earlier testing activities. Major finished product with very a much smaller number of defects and crashes.
Incomplete components and documentation. Almost finished components and documentation.
December 28, 20222 minutesauthorVirendra Harkhani
Some Laravel tips that we must need to know

1) Null safe operator

From PHP 8 you can use Null Safe Operator

How we are doing null checking code in PHP < 8.0

 $country =  null;

 if ($session !== null) {
     $user = $session->user;

     if ($user !== null) {
         $address = $user->getAddress();

         if ($address !== null) {
             $country = $address->country;
         }
     }
 }

PHP 8 allows you to write this:

 $country = $session?->user?->getAddress()?->country;

2) Ternary condition

We have used this ternary condition for checking null value

 isset($user->image) ? $user->image : null

We can short above condition like this

 $user->image ?? null

3) Clone a model

You can clone a model using replicate(). It will create a copy of the model into a new, non-existing instance.

 $user = App\User::find(1);
 $newUser = $user->replicate();
 $newUser->save();

4) Default Relationship Models

Laravel provides a handy withDefault() method on the belongsTo relationship that will return a model object even when the relationship doesn't actually exist.

 class Post extends Model
 {
     public function user()
     {
         return $this->belongsTo(User::class)->withDefault();
     }
 }

Now, if we try to access the $post->user relationship, we'll still get a User object even when it does exist in the database. This is known as the "null object" pattern and helps eliminate some of those if ($post->user) conditional statements.

For more information read Laravel withDefault() doc.

5) Save models and relationships

You can save a model and its corresponding relationships using the push() method.

 class User extends Model
 {
     public function phone()
     {
         return $this->hasOne('App\Phone');
     }
 }
 $user = User::first();
 $user->name = "Peter";
 $user->phone->number = '1234567890';
 $user->push(); // This will update both user and phone record in DB

Hope it will be helpful.

Thanks

December 30, 20221 minuteauthorMitesh Makwana
Human Resources Functions: 8 Areas to Focus on

When it comes to the human resources department, there are many different functions that need to be carried out in order to ensure the success of the organization. There are eight key areas that all HR departments should focus on in order to create a successful workforce.

1. Employee Screening

It is important to screen employees carefully before hiring them. This includes checking their references and performing background checks.

2. Recruiting

The process of finding and attracting qualified candidates to fill job openings within an organization is called recruiting. It is important to have a well-defined recruiting process in place in order to attract the best candidates possible.

3. Hiring

The process of formally inviting a candidate to become an employee is called hiring. It is important to have a clear and concise job description in order for candidates to understand what the job entails.

4. Orientation

New employees should be given a comprehensive orientation upon starting their new job. This includes introducing them to the company culture, explaining their duties and responsibilities, and providing training on how to do their job correctly.

5. Training

It is important for employees to be properly trained on the company's policies and procedures, as well as their specific job duties. This will help them to be more productive and effective on the job.

6. Performance Management

Performance management involves setting expectations for employee performance, communicating these expectations, and providing feedback on employee performance.

Performance management is a process that helps ensure that employees are meeting the expectations of their organization. The process begins by setting expectations for employee performance. These expectations can be based on job descriptions, organizational goals, or other standards. Once expectations are set, the next step is to communicate these expectations to employees. This can be done through job descriptions, performance goals, or other means.

The final step is providing feedback on employee performance. This feedback can be positive or negative and can be given formally or informally. The goal of performance management is to help employees meet the expectations of their organization.

7. Compensation and Benefits

The HR department is responsible for ensuring that employees are compensated fairly and receive appropriate benefits. This can help to attract and retain top talent.

8. Employee retention

The HR department should work to create a positive work environment that encourages employees to stay with the company long-term. This can include implementing retention strategies such as employee recognition programs and good benefits packages.

December 26, 20222 minutesauthorDarshika Kyada
The Elements of the Ideal Logo

While logos are essential to the success of your company, creating one may be challenging. The perfect logo should describe who you are and what you do. It is the best investment a company could make to grow its customer base since it gives customers their first, and maybe best, impression of the firm. It is the first thing that clients will notice about the business and its brand. Here are some pointers to assist you in creating the ideal logo.

1. Maintain a Simple Design

The finest logos are simple, despite the fact that simplicity is sometimes linked with being dull. You should avoid overcomplicating your logo with fancy fonts or complex imagery since you want it to be instantly recognisable. So that it may be shown in all sizes and forms, keep your logo basic. You should be allowed to use your logo on stationary such as letterheads and envelopes, business cards and banners, and social media postings. Do not forget that some of the most recognisable brand logos are straightforward and simple enough to be recognised among rivals.

2. Suitable Color Palette

Colors have an attraction on people, but it's crucial to choose the proper palette. It takes a great deal of understanding of color theory and the color combinations that would go well with each other. Your choice of colour should express not just your thoughts but also a clear message. Potential clients may be drawn to or turned off by the hue of your logo design. Learn about various colours, their use, and how they affect your brand by conducting research.

Here are some colors you can include in your logo and what they represent:

  • Black: Represents authority, mystery and sophistication.
  • Red: Represents excitement, love and anger.
  • Yellow: Represents happiness, warmth, innovation and caution.
  • Blue: Represents professionalism, trust and loyalty.
  • Green: Represents harmony, natural and healthy.
  • Orange: Represents playful, artistic and energetic.
  • White: Represents pure, peaceful and clean.

3. Out-of-the-box

Almost all great logos have an eye-catching symbol that separates them from competitors. Use your imagination and take as much inspiration as you want before creating the right logo and make sure the symbol you select is appropriate for your brand. A wonderful work of art is ruined by restrictions and limitations, while creating a logo designers need to be creative and conceive in ways that no one else could. Most well-known logos have really difficult and original looks that no one could have imagined.

4. High Quality Typography

Think on each element of the logo design, such as the typeface or font. Customers may learn a lot about your brand from the typeface you use. Depending on your choice of logo design, this section changes. For instance, if you are creating an icon symbol or brand mark logo, pick a typeface or logo during the preliminary design phases. Doing so helps you avoid having a weird combination or losing the complex work you will have invested in your logo.

5. Timelessness

By timeless, we mean that an excellent logo may last a very long time. Avoid using fashionable pictures, typefaces, and colour schemes in your logo if you want it to survive the test of time. By doing this, you can be sure that your logo keeps serving a function and working well even when trends change. Designers must be foresighted and innovative when establishing a logo since something that is striking today may lose its essence afterwards, and if this happens with the logo, the reputation of your organisation will suffer. If you look at long-standing businesses, you'll see that many of them have utilised the same logo for many years or even decades.

December 24, 20223 minutesauthorNency Dobariya
How to Increase Sales from Upwork

Upwork is a platform that connects freelancers and clients for a wide range of services including sales. If you're looking to increase your sales on Upwork, here are some tips that can help:

  • Build a strong profile

  • Improve your proposal

  • Be Responsive and Professional

  • Offer added value

  • Use Upwork's tools and resources

Build a strong profile

Your Upwork profile is essentially your online resume. Make sure it accurately reflects your skills, experience, and qualifications. Use a clear, professional profile picture and highlight any relevant certifications or achievements.

Improve your proposal

When you apply for a job on Upwork, you will need to write a proposal explaining why you are the best candidate for the job. Read the job posting carefully and tailor your submission to the client's specific needs. Emphasize your relevant experience and skills and provide examples of your work.

Be Responsive and Professional

Once you've landed a job on Upwork, it's important to communicate effectively with your clients and meet deadlines. Respond to messages promptly and be respectful and professional in your interactions. This will help you build a positive reputation on the platform and increase your chances of getting repeat business or referrals.

Offer added value

In addition to getting the job done to the best of your ability, consider offering added value to your customers. This may be in the form of additional resources or advice or offering to complete additional tasks outside the scope of the original job. This can help you stand out from other freelancers and increase your chances of getting repeat business.

Use Upwork's tools and resources

Upwork offers a variety of tools and resources for freelancers, including the ability to track their time, create invoices, and manage their finances. Be sure to take advantage of these resources to streamline your work and make it easier for customers to do business with you.

Following these tips can increase your sales and build a successful freelance business on Upwork. Good luck!

December 22, 20222 minutesauthorAnkit Kalathiya