Language
Tools
Step 1: Obtain an application access token
Your application will need to exchange its client_id
, client_secret
, and grant_type=client_credentials
for an application access token. With this token, you can then make API requests to the Kopo Kopo API.
Step 2: Polling Transactions
To make the following request, we need to use the access_token
we just previously obtained. Security considerations:
POST https://sandbox.kopokopo.com/api/v1/polling
Content-Type: application/json
Accept: application/json
Authorization: Bearer < AccessToken >
{
"scope": "company",
"scope_reference": "",
"from_time": "2021-04-12T08:50:22+03:00",
"to_time": "2021-04-19T08:50:22+03:00",
"_links": {
"callback_url": "https://callback_to_your_app.your_application.com"
}
}
# Using K2Connect - https://github.com/kopokopo/k2-connect-ruby (Recommended)
your_input =
{
scope: "company",
scope_reference: "",
from_time: "2021-04-12T08:50:22+03:00",
to_time: "2021-04-19T08:50:22+03:00",
callback_url: 'https://call_back_to_your_app.your_application.com'
}
k2_polling = K2Polling.new("your_access_token")
k2_polling.poll(your_input)
k2_polling.location_url # => "https://sandbox.kopokopo.com/api/v1/polling/247b1bd8-f5a0-4b71-a898-f62f67b8ae1c"
request_body =
{
"access_token": ACCESS_TOKEN,
"callback_url": "https://webhook.site/52fd1913-778e-4ee1-bdc4-74517abb758d",
"scope": "company",
"scope_reference": "",
"from_time": "2021-04-12T08:50:22+03:00",
"to_time": "2021-04-19T08:50:22+03:00"
}
# Using K2Connect - https://github.com/kopokopo/k2-connect-python (Recommended)
k2connect.initialize(environ.get('CLIENT_ID'), environ.get('CLIENT_SECRET'), 'http://127.0.0.1:3000/')
polling_service = k2connect.Polling
polling_location = polling_service.create_polling_request(request_body)
polling_location # => 'https://sandbox.kopokopo.com/api/v1/polling/247b1bd8-f5a0-4b71-a898-f62f67b8ae1c'
const PollingService = K2.PollingService
var pollingOptions = {
scope: "company",
scopeReference: "",
fromTime: "2021-04-12T08:50:22+03:00",
toTime: "2021-04-19T08:50:22+03:00",
// This is where once the request is completed kopokopo will post the response
callbackUrl: 'https://callback_to_your_app.your_application.com/endpoint',
accessToken: 'myRand0mAcc3ssT0k3n'
}
PollingService
.pollTransactions(pollingOptions)
.then( response => {
console.log(response)
// => 'https://sandbox.kopokopo.com/api/v1/polling/247b1bd8-f5a0-4b71-a898-f62f67b8ae1c'
})
.catch( error => {
console.log(error)
})
<?
$polling = $K2->PollingService();
$response = $polling->pollTransactions([
'scope' => "company",
'scopeReference' => "",
'fromTime' => "2021-04-12T08:50:22+03:00",
'toTime' => "2021-04-19T08:50:22+03:00",
'callbackUrl' => 'https://callback_to_your_app.your_application.com/endpoint',
'accessToken' => 'myRand0mAcc3ssT0k3n',
]);
if($response['status'] == 'success')
{
echo "The resource location is:" . json_encode($response['location']);
// => 'https://sandbox.kopokopo.com/api/v1/polling/247b1bd8-f5a0-4b71-a898-f62f67b8ae1c'
}
Retrieve your newly created subscription by its resource location:
GET https://sandbox.kopokopo.com/api/v1/polling/5af4c10a-f6de-4ac8-840d-42cb65454216
Accept: application/json
Authorization: Bearer pBA9fVDBEyYZCEsLf/wKehyh1RTpzjUj5KzIRfDi0wKTii7DqY
...
{
"data": {
"id": "d4849121-d7d4-49f8-881f-b41601a7fe43",
"type": "polling",
"attributes": {
"status": "Success",
"created_at": "2021-04-28T11:25:53.497+03:00",
"from_time": "2021-04-12T08:50:22+03:00",
"to_time": "2021-04-19T08:50:22+03:00",
"transactions": [
{
"type": "Buygoods Transaction",
"resource": {
"id": "c4fbb520-9155-406e-aee8-661a07a49f86",
"amount": "500.0",
"status": "Received",
"system": "Lipa Na M-PESA",
"currency": "KES",
"reference": "APR202119",
"till_number": "000000",
"origination_time": "2021-04-19T08:19:00+03:00",
"sender_last_name": "Doe",
"sender_first_name": "Jane",
"sender_middle_name": "",
"sender_phone_number": "+254799999999"
}
},
{
"type": "Buygoods Transaction",
"resource": {
"id": "18f8da83-5d95-45f9-9670-1958a8fe1e30",
"amount": "500.0",
"status": "Received",
"system": "Lipa Na M-PESA",
"currency": "KES",
"reference": "APR202126",
"till_number": "K000000",
"origination_time": "2021-04-19T08:19:00+03:00",
"sender_last_name": "Doe",
"sender_first_name": "Jane",
"sender_middle_name": "",
"sender_phone_number": "+254799999999"
}
},
{
"type": "External Till to Till Transaction",
"resource": {
"id": "dfcfd000-3c43-4fff-beb3-c82718715f2e",
"amount": "1000.0",
"status": "Complete",
"system": "M-PESA",
"currency": "KES",
"reference": "APR202126",
"till_number": "112233",
"sending_till": "John",
"origination_time": "2021-04-19T08:19:00+03:00",
}
}
],
"scope": "Company",
"scope_reference": null,
"_links": {
"callback_url": "https://webhook.site/a67f60b8-8c26-40a2-866c-99f5314a3e0e",
"self": "https://sandbox.kopokopo.com/api/v1/polling/d4849121-d7d4-49f8-881f-b41601a7fe43"
}
}
}
}
pollingUrl = 'https://sandbox.kopokopo.com/api/v1/polling/5af4c10a-f6de-4ac8-840d-42cb65454216'
# Using K2Connect - https://github.com/kopo-kopo/k2-connect-ruby (Recommended)
polling = K2Polling.new(your_access_token)
polling.query_resource_url(pollingUrl)
// Using Kopo Kopo Connect - https://github.com/kopokopo/k2-connect-node (Recommended)
const PollingService = K2.PollingService
var pollingUrl = 'https://sandbox.kopokopo.com/polling/5af4c10a-f6de-4ac8-840d-42cb65454216'
PollingService
.getStatus({accessToken: 'myRand0mAcc3ssT0k3n', location: pollingUrl})
.then(response => { console.log(response) })
.catch(error => { console.log(error) })
pollingUrl = 'https://sandbox.kopokopo.com/api/v1/polling/5af4c10a-f6de-4ac8-840d-42cb65454216'
#Provide example using K2Connect https://github.com/kopo-kopo/k2-connect-python (Recommended)
k2connect.initialize(CLIENT_ID, CLIENT_SECRET, BASE_URL)
polling_service = k2connect.PollingService
polling_service.polling_request_status(ACCESS_TOKEN, pollingUrl)
<?
// Using Kopo Kopo Connect - https://github.com/kopokopo/k2-connect-php (Recommended)
$polling = $K2->PollingService();
$options = [
'location' => 'https://sandbox.kopokopo.com/api/v1/polling/d76265cd-0951-e511-80da-0aa34a9b2388',
'accessToken' => 'myRand0mAcc3ssT0k3n',
];
$response = $polling->getStatus($options);
echo $response;
© 2024 Kopo Kopo, Inc.