WebhookController   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 1

Importance

Changes 0
Metric Value
wmc 6
lcom 0
cbo 1
dl 0
loc 49
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A handleWebhook() 0 25 5
A updateDB() 0 20 1
1
<?php
2
3
namespace Lubusin\Mojo\Controllers;
4
5
use App\User;
6
use Illuminate\Routing\Controller;
7
use Lubusin\Mojo\Models\MojoPaymentDetails;
8
9
class WebhookController extends Controller
10
{
11
    public function handleWebhook()
12
    {
13
        $data = $_POST;
14
        $mac_provided = $data['mac'];
15
        unset($data['mac']);
16
        $ver = explode('.', phpversion());
17
        $major = (int) $ver[0];
18
        $minor = (int) $ver[1];
19
        if ($major >= 5 && $minor >= 4) {
20
            ksort($data, SORT_STRING | SORT_FLAG_CASE);
21
        } else {
22
            uksort($data, 'strcasecmp');
23
        }
24
        
25
        $mac_calculated = hash_hmac("sha1", implode("|", $data), config('laravelmojo.salt'));
26
        if ($mac_provided == $mac_calculated) {
27
            if ($data['status'] == "Credit") {
28
                $this->updateDB($data);
29
            } else {
30
                $this->updateDB($data);
31
            }
32
        } else {
33
            echo "MAC mismatch";
34
        }
35
    }
36
37
    public function updateDB($data)
38
    {
39
        $user = User::where('email', $data['buyer'])->first();
40
        $user_id = $user->id;
41
        MojoPaymentDetails::create(['user_id' => $user_id,
42
                                   'buyer_email' => $data['buyer'],
43
                                   'buyer_name' => $data['buyer_name'],
44
                                   'buyer_phone' => $data['buyer_phone'],
45
                                   'currency' => $data['currency'],
46
                                   'amount' => $data['amount'],
47
                                   'fees' => $data['fees'],
48
                                   'longurl' => $data['longurl'],
49
                                   'payment_id' => $data['payment_id'],
50
                                   'payment_request_id' => $data['payment_request_id'],
51
                                   'purpose' => $data['purpose'],
52
                                   'shorturl' => $data['shorturl'],
53
                                   'request_status' => 'completed',
54
                                   'payment_status' => $data['status'],
55
                                 ]);
56
    }
57
}
58