|
|
<?php |
|
|
class MpesaService { |
|
|
private $consumerKey = "your_consumer_key"; |
|
|
private $consumerSecret = "your_consumer_secret"; |
|
|
private $shortcode = "174379"; |
|
|
private $passkey = "your_passkey"; |
|
|
private $phoneNumber = "0756709823"; |
|
|
|
|
|
public function initiateSTKPush($userPhone, $amount, $userId) { |
|
|
$access_token = $this->getAccessToken(); |
|
|
$url = 'https://sandbox.safaricom.co.ke/mpesa/stkpush/v1/processrequest'; |
|
|
|
|
|
$timestamp = date('YmdHis'); |
|
|
$password = base64_encode($this->shortcode . $this->passkey . $timestamp); |
|
|
|
|
|
$callback_url = 'https://yourdomain.com/mpesa_callback.php'; |
|
|
|
|
|
$curl_post_data = array( |
|
|
'BusinessShortCode' => $this->shortcode, |
|
|
'Password' => $password, |
|
|
'Timestamp' => $timestamp, |
|
|
'TransactionType' => 'CustomerPayBillOnline', |
|
|
'Amount' => $amount, |
|
|
'PartyA' => $userPhone, |
|
|
'PartyB' => $this->shortcode, |
|
|
'PhoneNumber' => $userPhone, |
|
|
'CallBackURL' => $callback_url, |
|
|
'AccountReference' => 'JMOTORS' . $userId, |
|
|
'TransactionDesc' => 'JMotors Deposit' |
|
|
); |
|
|
|
|
|
$data_string = json_encode($curl_post_data); |
|
|
|
|
|
$curl = curl_init(); |
|
|
curl_setopt($curl, CURLOPT_URL, $url); |
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, array( |
|
|
'Content-Type: application/json', |
|
|
'Authorization: Bearer ' . $access_token |
|
|
)); |
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
|
|
curl_setopt($curl, CURLOPT_POST, true); |
|
|
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string); |
|
|
curl_setopt($curl, CURLOPT_HEADER, false); |
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); |
|
|
|
|
|
$response = curl_exec($curl); |
|
|
curl_close($curl); |
|
|
|
|
|
return json_decode($response, true); |
|
|
} |
|
|
|
|
|
private function getAccessToken() { |
|
|
$url = 'https://sandbox.safaricom.co.ke/oauth/v1/generate?grant_type=client_credentials'; |
|
|
$curl = curl_init(); |
|
|
curl_setopt($curl, CURLOPT_URL, $url); |
|
|
curl_setopt($curl, CURLOPT_HTTPHEADER, array( |
|
|
'Authorization: Basic ' . base64_encode($this->consumerKey . ':' . $this->consumerSecret) |
|
|
)); |
|
|
curl_setopt($curl, CURLOPT_HEADER, false); |
|
|
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); |
|
|
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); |
|
|
$result = curl_exec($curl); |
|
|
curl_close($curl); |
|
|
|
|
|
$result = json_decode($result, true); |
|
|
return $result['access_token']; |
|
|
} |
|
|
} |
|
|
?> |