refactoring, airtelmoney test
This commit is contained in:
@@ -1,20 +1,233 @@
|
||||
<?php
|
||||
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
use App\Http\Requests;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
// Requests\CollectPaymentsRequest
|
||||
use App\Models;
|
||||
// use App\Library\Kazang;
|
||||
use App\Library\AirtelMoneyMw;
|
||||
use App\Library\MpambaTnm;
|
||||
use Carbon\Carbon;
|
||||
use Config;
|
||||
// Requests\CollectPaymentsRequest //
|
||||
class MoneyCollectionController extends Controller
|
||||
{
|
||||
public function Collect(Requests\CollectPaymentsRequest $request)
|
||||
{
|
||||
{
|
||||
public function collectTest(Request $request){
|
||||
return response()->json(['code' => 1, 'data' => json_decode($request->all())]);
|
||||
}
|
||||
public function CollectFirst(Requests\CollectPaymentsRequest $request, Kazang $kazang){
|
||||
$current_date = date('Y-m-d');
|
||||
// Todo : check network and call appropriate endpoint to initiate payment
|
||||
//$session_uuid = $this->getSessionUuid($kazang);
|
||||
$endpoint = $this->getEnpoint($request->product_name);
|
||||
// dd($endpoint);
|
||||
//TODO : find a way to dynamically retrieve Product ID from the list
|
||||
#$product_list = $this->getProductIDs($session_uuid);
|
||||
|
||||
// {
|
||||
// "msisdn", "amount", "refID",
|
||||
// product_name
|
||||
return response()->json(['code' => 1]);
|
||||
// dd($product_list);
|
||||
|
||||
if ($endpoint !== false) {
|
||||
$session_uuid = $this->getSessionUuid($kazang);
|
||||
// send step 1 request here
|
||||
$transaction_params = [
|
||||
'session_uuid' => $session_uuid,
|
||||
'request_reference' => substr(time(), 0, 9), // add a reference from the transactions table
|
||||
'product_id' => $endpoint['productid'],
|
||||
'wallet_msisdn' => $request->msisdn,
|
||||
'routem_client_reference' => $request->refID,
|
||||
'amount' => $request->amount
|
||||
];
|
||||
|
||||
$saveTransaction = Models\KazangTransaction::create($transaction_params);
|
||||
if ($saveTransaction == false) {
|
||||
// code... return to sender
|
||||
}
|
||||
$curl_params = [
|
||||
'session_uuid' => $session_uuid,
|
||||
'request_reference' => substr(time(), 0, 9), // add a reference from the transactions table
|
||||
'product_id' => $endpoint['productid'],
|
||||
'routem_client_reference' => $request->refID,
|
||||
'amount' => $request->amount
|
||||
];
|
||||
if ($request->product_name == 'zamtel_money') {
|
||||
$curl_params['msisdn'] = $request->msisdn;
|
||||
}
|
||||
else{
|
||||
$curl_params['wallet_msisdn'] = $request->msisdn;
|
||||
}
|
||||
$retval = $this->globalCurlPost($endpoint['url'], $curl_params);
|
||||
|
||||
$transaction = Models\KazangTransaction::find($saveTransaction->id);
|
||||
// dd($retval);
|
||||
// return response()->json(['code' => 1, 'msg' => 'success', 'data' => json_decode($retval)]);
|
||||
$retval = json_decode($retval, true);
|
||||
file_put_contents(public_path("logs/" . $current_date . "_api_response_logs.txt"), json_encode($retval) . PHP_EOL, FILE_APPEND);
|
||||
|
||||
$transaction->response_code = $retval['response_code'];
|
||||
$transaction->balance = $retval['balance'];
|
||||
if (isset($retval['supplier_transaction_id'])) {
|
||||
$transaction->supplier_transaction_id = $retval['supplier_transaction_id'];
|
||||
}
|
||||
if (isset($retval['confirmation_number'])) {
|
||||
$transaction->confirmation_number = $retval['confirmation_number'];
|
||||
}
|
||||
if (isset($retval['confirmation_message'])) {
|
||||
$transaction->confirmation_message = $retval['confirmation_message'];
|
||||
}
|
||||
|
||||
$transaction->save();
|
||||
if ($request->product_name == 'mtn_momo_zambia') {
|
||||
//TODO : check response_code = "0"
|
||||
if ($retval['response_code'] == "0") {
|
||||
$data = ['reference_id' => $request->refID, 'supplier_transaction_id' => $retval['supplier_transaction_id'], 'response_message' => $retval['response_message']];
|
||||
return response()->json(['code' => 1, 'msg' => 'success', 'data' => $data]);
|
||||
}
|
||||
else{
|
||||
return response()->json(['code' => 3, 'msg' => $retval['response_message']]);
|
||||
}
|
||||
|
||||
}
|
||||
else{
|
||||
if ($retval['response_code'] == "0") {
|
||||
$data = ['reference_id' => $request->refID, 'confirmation_number' => $retval['confirmation_number'], 'confirmation_message' => $retval['confirmation_message']];
|
||||
return response()->json(['code' => 1, 'msg' => 'success', 'data' => $data]);
|
||||
}
|
||||
else{
|
||||
return response()->json(['code' => 3, 'msg' => $retval['$confirmation_message']]);
|
||||
}
|
||||
}
|
||||
//Airtel : confirmation_number
|
||||
/*
|
||||
MTN
|
||||
"data": {
|
||||
"wallet_msisdn": "+260981112134",
|
||||
"amount": "0.05",
|
||||
"request_reference": "167079990",
|
||||
"response_code": "0",
|
||||
"balance": "20490.05",
|
||||
"supplier_transaction_id": "52878",
|
||||
"response_message": "\r\n********************************\r\n KAZANG \r\n********************************\r\n MOMO Pay Step 1 \r\n--------------------------------\r\n 2022-12-12 01:05 \r\n Pending Payment Created \r\n--------------------------------\r\n API V2 Test - Zambia \r\nVendor: 1000631438\r\nMTN Phone No.: 260981112134\r\nReference: 4458\r\n--------------------------------\r\n MTN Reference \r\n<b> 5287 8 \n\r\n--------------------------------\r\nAmount: 0.05\r\n--------------------------------\r\n A pending transaction has been \ncreated. Please approve on your \nmobile device. Keep this receipt\n to prove payment to the vendor \n after approval. \r\n--------------------------------\r\n Thank you! "
|
||||
}
|
||||
Airtel
|
||||
"data": {
|
||||
"wallet_msisdn": "978981953",
|
||||
"confirmation_number": "333366",
|
||||
"request_reference": "167079973",
|
||||
"customer_last_name": "Picard",
|
||||
"response_code": "0",
|
||||
"amount": "0.05",
|
||||
"confirmation_message": "\nPlease confirm\nCust. Msisdn: +260978981953\nCust. First Name: Jean-Luc\nCust. Last name: Picard\nAmount: 0.05\n\n\n\n",
|
||||
"customer_first_name": "Jean-Luc",
|
||||
"balance": "20490.05"
|
||||
}
|
||||
Zamtel
|
||||
"data": {
|
||||
"customer_last_name": "killian",
|
||||
"confirmation_number": "333360",
|
||||
"request_reference": "167079058",
|
||||
"msisdn": "+260981112134",
|
||||
"response_code": "0",
|
||||
"amount": "0.05",
|
||||
"confirmation_message": "\nPlease confirm\nCust. Msisdn: +260981112134\nAmount: 0.05\n\nCustomer Details\nName: aaa\nSurname: killian\nID Number: 1234567\n\n\n\n\n\n",
|
||||
"customer_first_name": "aaa",
|
||||
"customer_id_number": "1234567",
|
||||
"balance": "20490.05"
|
||||
}
|
||||
*/
|
||||
return response()->json(['code' => 1, 'data' => json_decode($retval)]);
|
||||
}
|
||||
return response()->json(['code' => 3, 'msg' => 'Your request could not handled at this time']);
|
||||
|
||||
}
|
||||
|
||||
public function Collect(Requests\CollectPaymentsRequest $request){
|
||||
$current_date = date('Y-m-d');
|
||||
|
||||
// Todo : check network and call appropriate endpoint to initiate payment
|
||||
// log request
|
||||
// check broker
|
||||
// check payment mode
|
||||
// use payment mode pay logic to respond
|
||||
|
||||
#$endpoint = $this->getEnpoint($request->product_name);
|
||||
// dd($endpoint);
|
||||
//TODO : find a way to dynamically retrieve Product ID from the list
|
||||
#$product_list = $this->getProductIDs($request->product_name);
|
||||
|
||||
return response()->json(['code' => 1, 'data' => json_decode($product_list)]);
|
||||
|
||||
return response()->json(['code' => 3, 'msg' => 'Your request could not handled at this time', 'endpoint' => $endpoint]);
|
||||
|
||||
}
|
||||
public function getSessionUuid($kazang){
|
||||
$kas_session = Models\KazangSession::find(1);
|
||||
if ($kas_session) {
|
||||
$current_time = date('Y-m-d H:i:s');
|
||||
$to = Carbon::createFromFormat('Y-m-d H:s:i', $kas_session->updated_at);
|
||||
$from = Carbon::createFromFormat('Y-m-d H:s:i', $current_time);
|
||||
$diff_in_minutes = $to->diffInMinutes($from);
|
||||
// dd($diff_in_hours);
|
||||
|
||||
if ($diff_in_minutes <= 60) {
|
||||
$session_uuid = $kas_session->session_uuid;
|
||||
return $session_uuid;
|
||||
}
|
||||
else{
|
||||
$session_uuid = $kazang->login();
|
||||
$kas_session->session_uuid = $session_uuid;
|
||||
$kas_session->save();
|
||||
return $session_uuid;
|
||||
}
|
||||
}
|
||||
else {
|
||||
$session_uuid = $kazang->login();
|
||||
$kas_session->session_uuid = $session_uuid;
|
||||
$kas_session->save();
|
||||
return $session_uuid;
|
||||
}
|
||||
|
||||
}
|
||||
public function getEnpoint($product_name){
|
||||
$kazang = Config('kazang');
|
||||
$kaz_host = $kazang['test_base_url'];
|
||||
//TODO : remove the hardcoded productIDs
|
||||
switch ($product_name) {
|
||||
case 'airtel_money_zambia':
|
||||
$productID = 1663;
|
||||
$endpoint = "$kaz_host/apimanager/api_rest/v1/airtelPayPayment";
|
||||
break;
|
||||
case 'mtn_momo_zambia':
|
||||
$productID = 1612;
|
||||
$endpoint = "$kaz_host/apimanager/api_rest/v1/mtnDebit";
|
||||
break;
|
||||
case 'zamtel_money':
|
||||
$productID = 1706;
|
||||
$endpoint = "$kaz_host/apimanager/api_rest/v1/zamtelMoneyPay";
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return ['productid' => $productID, 'url' => $endpoint];
|
||||
}
|
||||
public function getProductIDs($product_name){
|
||||
$product = Models\Product::where('name', $product_name)->first();
|
||||
return $product;
|
||||
}
|
||||
|
||||
public function getProductIDsFirst($session_uuid){
|
||||
$params = [
|
||||
"request_reference" => 31000,
|
||||
"session_uuid" => $session_uuid
|
||||
];
|
||||
$kazang = Config('kazang');
|
||||
$kaz_host = $kazang['test_base_url'];
|
||||
|
||||
$url = "$kaz_host/apimanager/api_rest/v1/productList";
|
||||
$retval = $this->globalCurlPost($url, $params);
|
||||
return $retval;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
//b1d7d86b-8906-4a24-bb8d-268b085d539c
|
||||
|
||||
Reference in New Issue
Block a user