Skip to content

Instantly share code, notes, and snippets.

@unlimitedprograming
Created August 12, 2021 08:26
Show Gist options
  • Save unlimitedprograming/b18bb95ab76591a2fc70346a97365fd7 to your computer and use it in GitHub Desktop.
Save unlimitedprograming/b18bb95ab76591a2fc70346a97365fd7 to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Controllers;
use App\Classes\MyIpay;
use Illuminate\Http\Request;
class IPayController extends Controller
{
public function payWithIpay(Request $request){
$payAmount = 220;
$ipay = config('ipay');
$iPay_URL = $ipay['ipay_url']; // ipay end point
$ipay = new MyIpay($ipay);
$httpParsedResponseAr = $ipay->saleTxn($payAmount, route('payment.verifyIpay'));
if($httpParsedResponseAr['status'] == 0){
$request->session()->flash('error', 'Transaction Failure. Please Try Again.');
return redirect('/');
}
if(isset($httpParsedResponseAr['ipay_out__txn_uuid']))
{
?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
function closethisasap() {
document.forms["redirectpost"].submit();
}
</script>
</head>
<body onload="closethisasap();">
<form name="redirectpost" method="post" action="<?php echo $iPay_URL; ?>">
<?php
echo '<input type="hidden" name="TXN_UUID" value="' . $httpParsedResponseAr['ipay_out__txn_uuid'] . '"> ';
?>
</form>
</body>
</html>
<?php
exit;
}
else
{
$request->session()->flash('error', 'Transaction Failure. Please Try Again.');
return redirect('/');
}
}
public function verifyIpay(Request $request){
$payAmount = 220;
$ipay = config('ipay');
$TxnUUID = $request->TXN_UUID;
$MerRefID = $request->mer_ref_id;
if(sprintf('%0.2f',$payAmount) != $request->txn_amount){
$request->session()->flash('error','Transaction is Invalid');
return redirect('/');
}
if($request->fail_reason){
$request->session()->flash('error',$request->fail_reason);
return redirect('/');
}
$ipay = new MyIpay($ipay);
$httpParsedResponseArsec = $ipay->saleTxnVerify($TxnUUID,$MerRefID);
if($httpParsedResponseArsec['status'] == 0){
$request->session()->flash('error', 'Transaction Failure. Please Try Again.');
return redirect('/');
}
$IPGTransactionID = $httpParsedResponseArsec['ipay_out__ipg_txn_id'];
$MerRefID = $httpParsedResponseArsec['ipay_out__mer_ref_id'];
$TxnStatus = $httpParsedResponseArsec['ipay_out__txn_status'];
$FailReason = isset($httpParsedResponseArsec['ipay_out__fail_reason']) ? $httpParsedResponseArsec['ipay_out__fail_reason'] : 0;
if($TxnStatus == 'ACCEPTED'){
\Log::info('Transaction Code: '. $IPGTransactionID);
$request->session()->flash('success', 'Transaction Sucessful.');
return redirect('/');
}
$request->session()->flash('error',$FailReason);
return redirect('/');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment