Class: OrangeMoneyWebpay::Client

Inherits:
Object
  • Object
show all
Includes:
HttpInterceptor
Defined in:
lib/orange_money_webpay/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HttpInterceptor

#access_token_validity?, #api_configured?, #get_token, #post

Instance Attribute Details

#access_tokenObject

Returns the value of attribute access_token.



6
7
8
# File 'lib/orange_money_webpay/client.rb', line 6

def access_token
  @access_token
end

#notif_tokenObject

Returns the value of attribute notif_token.



6
7
8
# File 'lib/orange_money_webpay/client.rb', line 6

def notif_token
  @notif_token
end

#pay_tokenObject

Returns the value of attribute pay_token.



6
7
8
# File 'lib/orange_money_webpay/client.rb', line 6

def pay_token
  @pay_token
end

#payment_urlObject

Returns the value of attribute payment_url.



6
7
8
# File 'lib/orange_money_webpay/client.rb', line 6

def payment_url
  @payment_url
end

Instance Method Details

#get_access_tokenObject



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/orange_money_webpay/client.rb', line 69

def get_access_token
    puts "START GETTING ACCESS TOKEN"

    
    # Inialize a new connection.
    request = Faraday.new(OrangeMoneyWebpay.configuration.remote_url, 
        ssl: {
        ca_path: "/usr/lib/ssl/certs"}
    )

    # Making a http post request
    response =  request.post do |req|
        req.url  OrangeMoneyWebpay.configuration.access_token_url
        req.headers['Content-Type'] = 'application/x-www-form-urlencoded'
        req.headers['Authorization'] = "Basic #{OrangeMoneyWebpay.configuration.authorization_header}"
        req.body = "grant_type=client_credentials"
    end

    if response.status == 200

        response_body = JSON.parse(response.body)

        #OrangeMoneyWebpay.configuration.access_token = response_body["access_token"]
        self.access_token = response_body["access_token"]
        puts "LE TOKEN: #{self.access_token}"

    elsif response.status == 401

        puts "RESPONSE BODY: #{response_body}"
          
    else
        puts "API configuration error"
    end
end

#payment_request(order_id, amount) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/orange_money_webpay/client.rb', line 8

def payment_request(order_id, amount)

    # Payload
    payload = Hash.new
    payload["merchant_key"] = OrangeMoneyWebpay.configuration.merchant_key
    payload["currency"] = OrangeMoneyWebpay.configuration.currency
    payload["order_id"] = order_id
    payload["amount"] = amount
    payload["return_url"] = OrangeMoneyWebpay.configuration.return_url
    payload["cancel_url"] = OrangeMoneyWebpay.configuration.cancel_url
    payload["notif_url"] = OrangeMoneyWebpay.configuration.notif_url
    payload["lang"] = OrangeMoneyWebpay.configuration.lang
    payload["reference"] = OrangeMoneyWebpay.configuration.reference


                
    # Inialize a new connection.
    request = Faraday.new(OrangeMoneyWebpay.configuration.remote_url, 
        ssl: {
        ca_path: "/usr/lib/ssl/certs"}
    )

    # Making a http post request
    response =  request.post do |req|
        req.url  OrangeMoneyWebpay.configuration.payment_request_url
        
        # Request header
        req.headers['Authorization'] = "Bearer #{self.access_token}"
        req.headers['Content-Type'] = 'application/json'
        req.headers['Accept'] = 'application/json'
        
        # Request body
        req.body = payload.to_json
    end

    if response.status == 201

        response_body = JSON.parse(response.body)

        #OrangeMoneyWebpay.configuration.payment_url = response_body["payment_url"]
        #OrangeMoneyWebpay.configuration.pay_token = response_body["pay_token"]
        #OrangeMoneyWebpay.configuration.notif_token = response_body["notif_token"]

        self.payment_url = response_body["payment_url"]
        self.pay_token = response_body["pay_token"]
        self.notif_token = response_body["notif_token"]
        

        
        return response_body

    elsif response.status == 401

        puts "RESPONSE BODY: #{response_body}"
   
    else
       puts "ERROR: #{response.inspect}"
        puts "API configuration error"
    end
end