Subiendo proyecto completo sin restricciones de git ignore

This commit is contained in:
Jose Sanchez
2023-08-17 11:44:02 -04:00
parent a0d4f5ba3b
commit 20f1c60600
19921 changed files with 2509159 additions and 45 deletions

View File

@@ -0,0 +1,102 @@
<?php
namespace App\Http\Controllers;
use App\Payment;
use Illuminate\Http\Request;
use Osen\Mpesa\B2C;
class MpesaController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
B2C::init(
array(
"env" => "sandbox",
"shortcode" => "173527",
"headoffice" => "173527",
"key" => "Your Consumer Key",
"secret" => "Your Consumer Secret",
"username" => "Your Org Username",
"password" => "Your Org Password",
"validation_url" => url("disburse/validate"),
"confirmation_url" => url("disburse/confirm"),
"callback_url" => url("disburse/reconcile"),
"results_url" => url("disburse/timeout"),
)
);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function pay(Request $request)
{
$data = $request->all();
try {
$request = B2C::send($request->phone, $request->amount, $request->command, $request->remarks, $request->occassion, function ($response) {
$ConversationID = $response["ConversationID"];
$OriginatorConversationID = $response["OriginatorConversationID"];
$ResponseCode = $response["ResponseCode"];
$ResponseDescription = $response["ResponseDescription"];
// TIP: Save $OriginatorConversationID in the database, and use it as a key for update
$data["request_id"] = $OriginatorConversationID;
$payment = Payment::create($data);
return true;
});
return back();
} catch (\Exception $e) {
return array("msg" => $e->getMessage);
}
}
public function confirmation()
{
return B2C::reconcile(function ($response) {
$Result = $response["Result"];
$ResultType = $Result["ResultType"];
$ResultCode = $Result["ResultCode"];
$ResultDesc = $Result["ResultDesc"];
$OriginatorConversationID = $Result["OriginatorConversationID"];
$ConversationID = $Result["ConversationID"];
$TransactionID = $Result["TransactionID"];
$ResultParameters = $Result["ResultParameters"];
$ResultParameter = $Result["ResultParameters"]["ResultParameter"];
$TransactionReceipt = $ResultParameter[0]["Value"];
$TransactionAmount = $ResultParameter[1]["Value"];
$B2CWorkingAccountAvailableFunds = $ResultParameter[2]["Value"];
$B2CUtilityAccountAvailableFunds = $ResultParameter[3]["Value"];
$TransactionCompletedDateTime = $ResultParameter[4]["Value"];
$ReceiverPartyPublicName = $ResultParameter[5]["Value"];
$B2CChargesPaidAccountAvailableFunds = $ResultParameter[6]["Value"];
$B2CRecipientIsRegisteredCustomer = $ResultParameter[7]["Value"];
$ReferenceData = $Result["ReferenceData"];
$ReferenceItem = $ReferenceData["ReferenceItem"];
$QueueTimeoutURL = $ReferenceItem[0]["Value"];
// Update Database record with $TransactionID as the MPESA receipt number where $OriginatorConversationID
$payment = Payment::where("request_id", $OriginatorConversationID)->first();
$payment->receipt = $TransactionID;
$payment->save();
return true;
});
}
public function results()
{
return B2C::results();
}
}

View File

@@ -0,0 +1,127 @@
<?php
namespace App\Http\Controllers;
use App\Payment;
use Illuminate\Http\Request;
use Osen\Mpesa\STK;
use Osen\Mpesa\C2B;
class MpesaController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
C2B::init(
array(
"env" => "sandbox",
"type" => 4,
"shortcode" => "174379",
"key" => "Your Consumer Key",
"secret" => "Your Consumer Secret",
"validation_url" => url("lipwa/validate"),
"confirmation_url" => url("lipwa/confirm"),
"timeout_url" => url("lipwa/timeout"),
)
);
STK::init(
array(
"env" => "sandbox",
"type" => 4,
"shortcode" => "173527",
"headoffice" => "173527",
"key" => "Your Consumer Key",
"secret" => "Your Consumer Secret",
"passkey" => "Your Online Passkey",
"validation_url" => url("lipwa/validate"),
"callback_url" => url("lipwa/reconcile"),
"timeout_url" => url("lipwa/timeout"),
)
);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function pay(Request $request)
{
$data = $request->all();
try {
$res = STK($request->phone, $request->amount, $request->reference);
if (!isset($res["errorCode"])) {
$data["ref"] = $res->MerchantRequestID;
$payment = Payment::create($data);
if ($payment) {
return array("msg" => "saved");
} else {
return array("msg" => "failed");
}
return back();
}
} catch (\Exception $e) {
return array("msg" => $e->getMessage());
return back();
}
}
public function reconcile(Request $request, $method = "mpesa")
{
if ($method == "mpesa") {
$response = STK::reconcile(function ($data) {
$payment = Payment::where("mpesa", $data["MerchantRequestID"])->first();
$payment->status = "Paid";
return $payment->save();
});
}
}
public function validation()
{
return STK::validate();
}
public function confirmation()
{
return C2B::confirm(function ($response) {
// Process $response
$TransactionType = $response["TransactionType"];
$TransID = $response["TransID"];
$TransTime = $response["TransTime"];
$TransAmount = $response["TransAmount"];
$BusinessShortCode = $response["BusinessShortCode"];
$BillRefNumber = $response["BillRefNumber"];
$InvoiceNumber = $response["InvoiceNumber"];
$OrgAccountBalance = $response["OrgAccountBalance"];
$ThirdPartyTransID = $response["ThirdPartyTransID"];
$MSISDN = $response["MSISDN"];
$FirstName = $response["FirstName"];
$MiddleName = $response["MiddleName"];
$LastName = $response["LastName"];
return true;
});
}
public function results()
{
return STK::results();
}
public function timeout()
{
return STK::timeout();
}
}