pesapal 1.0.0 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +33 -6
- data/lib/pesapal/merchant.rb +18 -0
- data/lib/pesapal/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0f47532ca078e1d0e6b8c6fb305548d86266ce79
|
4
|
+
data.tar.gz: 53f602f715e320d6a71bdad0bca49d1fd68a1f75
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ab791fe5a5e3f889cbb2f40ff13aca5dc707bde0b9eb0e1db82a85d5dff0d103027a95de8d144c37081760382f41abd77649eb057a6cd46333a10e0b308e7aef
|
7
|
+
data.tar.gz: 32183c04ac5bfd5faa4dd85e607d19105d7fbffb1ff897ed23b8434af64f780ae5afb1dec5fb8f95b50b8b328ac880b101677a850ce6a0e68898169363bb4fce
|
data/README.md
CHANGED
@@ -35,7 +35,8 @@ Or install it yourself as:
|
|
35
35
|
|
36
36
|
$ gem install pesapal
|
37
37
|
|
38
|
-
For Rails, you need to run the generator to set up some necessary stuff
|
38
|
+
For Rails, you need to run the generator to set up some necessary stuff (create
|
39
|
+
initializer and config.yml file):
|
39
40
|
|
40
41
|
rails generate pesapal:install
|
41
42
|
|
@@ -91,7 +92,7 @@ override, there's the assumption that you chose the right one).
|
|
91
92
|
|
92
93
|
```ruby
|
93
94
|
# set pesapal api configuration manually (override YAML & bogus credentials)
|
94
|
-
pesapal.config = { :callback_url => 'http://0.0.0.0:3000/pesapal/callback'
|
95
|
+
pesapal.config = { :callback_url => 'http://0.0.0.0:3000/pesapal/callback',
|
95
96
|
:consumer_key => '<YOUR_CONSUMER_KEY>',
|
96
97
|
:consumer_secret => '<YOUR_CONSUMER_SECRET>'
|
97
98
|
}
|
@@ -196,14 +197,40 @@ The result is a hash that looks something like this ...
|
|
196
197
|
|
197
198
|
```
|
198
199
|
{
|
199
|
-
:method=>"
|
200
|
-
:status=>"
|
201
|
-
:merchant_reference=>"<MERCHANT_REFERENCE>",
|
202
|
-
:transaction_tracking_id=>"<TRANSACTION_ID>"
|
200
|
+
:method => "<PAYMENT_METHOD>",
|
201
|
+
:status => "<PAYMENT_STATUS>",
|
202
|
+
:merchant_reference => "<MERCHANT_REFERENCE>",
|
203
|
+
:transaction_tracking_id => "<TRANSACTION_ID>"
|
203
204
|
}
|
204
205
|
```
|
205
206
|
|
206
207
|
|
208
|
+
### IPN Listening ###
|
209
|
+
|
210
|
+
Use the `ipn_listener` method to listen to Pesapal IPN calls to easily create an
|
211
|
+
appropriate response, example below.
|
212
|
+
|
213
|
+
```ruby
|
214
|
+
# pass in the notification type, merchant reference and transaction id
|
215
|
+
response_to_ipn = pesapal.ipn_listener("<NOTIFICATION_TYPE>", "<MERCHANT_REFERENCE>","<TRANSACTION_ID>")
|
216
|
+
```
|
217
|
+
|
218
|
+
The variable, `response_to_ipn`, now holds a response as the one shown below.
|
219
|
+
Using the status you can customise any actions (e.g. database inserts and
|
220
|
+
updates) and finally, it's upto you to send the `:response` back to pesapal. The
|
221
|
+
hard part is done for you.
|
222
|
+
|
223
|
+
```
|
224
|
+
{
|
225
|
+
:status => "<PAYMENT_STATUS>",
|
226
|
+
:response => "<IPN_RESPONSE>"
|
227
|
+
}
|
228
|
+
```
|
229
|
+
|
230
|
+
_Ps: Refer to Pesapal official documentation to make sure you understand what
|
231
|
+
data Pesapal sends to IPN and what result they expect back._
|
232
|
+
|
233
|
+
|
207
234
|
Contributing
|
208
235
|
------------
|
209
236
|
|
data/lib/pesapal/merchant.rb
CHANGED
@@ -133,6 +133,24 @@ module Pesapal
|
|
133
133
|
set_endpoints
|
134
134
|
end
|
135
135
|
|
136
|
+
# listen to ipn response
|
137
|
+
def ipn_listener(notification_type, merchant_reference, transaction_tracking_id)
|
138
|
+
|
139
|
+
status = query_payment_status(merchant_reference, transaction_tracking_id)
|
140
|
+
|
141
|
+
output = { :status => status }
|
142
|
+
|
143
|
+
if status == "COMPLETED"
|
144
|
+
output[:response] = "pesapal_notification_type=CHANGE&pesapal_transaction_tracking_id=#{transaction_tracking_id}&pesapal_merchant_reference=#{merchant_reference}"
|
145
|
+
elsif status == "FAILED"
|
146
|
+
output[:response] = "pesapal_notification_type=CHANGE&pesapal_transaction_tracking_id=#{transaction_tracking_id}&pesapal_merchant_reference=#{merchant_reference}"
|
147
|
+
else
|
148
|
+
output[:response] = ""
|
149
|
+
end
|
150
|
+
|
151
|
+
output
|
152
|
+
end
|
153
|
+
|
136
154
|
private
|
137
155
|
|
138
156
|
# set endpoints
|
data/lib/pesapal/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pesapal
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Job King'ori Maina
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-10-
|
11
|
+
date: 2013-10-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|