187 lines
No EOL
5.8 KiB
PHP
187 lines
No EOL
5.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
|
|
use App\Services\Shop;
|
|
use App\Services\Util;
|
|
use App\Models\UserAbo;
|
|
use App\Services\MyLog;
|
|
use App\Services\Payment;
|
|
use App\Services\AboHelper;
|
|
use App\Models\ShoppingOrder;
|
|
use App\Models\ShoppingPayment;
|
|
use App\Models\PaymentTransaction;
|
|
use App\Http\Controllers\Controller;
|
|
use App\Services\ShoppingUserService;
|
|
|
|
|
|
class PayoneController extends Controller
|
|
{
|
|
|
|
|
|
public function __construct()
|
|
{
|
|
|
|
}
|
|
|
|
|
|
public function paymentStatus(){
|
|
|
|
$data = \Request::all();
|
|
// test para
|
|
|
|
/* $data = [
|
|
'key' => '698fb2555f8b2efc74f60b2121421f45',
|
|
'txaction' => 'paid',
|
|
'clearingtype' => 'wlt',
|
|
'userid' => '158723953',
|
|
'txid' => '321623031',
|
|
'price' => '89.00',
|
|
'param' => '1', //$this->shopping_order->id,
|
|
'reference' => '15c83aee2766c3',
|
|
];
|
|
|
|
*/
|
|
|
|
if(!isset($data['key']) || !isset($data['param']) || !isset($data['userid']) || !isset($data['txid']) || !isset($data['reference']) || !isset($data['price'])){
|
|
MyLog::writeLog(
|
|
'payone',
|
|
'error',
|
|
'Error:2001 App\Http\Controllers\Api\PayoneController::paymentStatus parameter incomplete',
|
|
$data
|
|
);
|
|
print("TSOK");
|
|
exit;
|
|
}
|
|
|
|
if($data['key'] != config('payone.defaults.key')) {
|
|
MyLog::writeLog(
|
|
'payone',
|
|
'error',
|
|
'Error:2002 App\Http\Controllers\Api\PayoneController::paymentStatus Key error',
|
|
$data
|
|
);
|
|
print("TSOK");
|
|
exit;
|
|
}
|
|
|
|
$shopping_order = ShoppingOrder::find($data['param']);
|
|
if(!$shopping_order){
|
|
MyLog::writeLog(
|
|
'payone',
|
|
'error',
|
|
'Error:2003 App\Http\Controllers\Api\PayoneController::paymentStatus ShoppingOrder not found:',
|
|
$data
|
|
);
|
|
print("TSOK");
|
|
exit;
|
|
}
|
|
|
|
$shopping_payment = ShoppingPayment::where('reference', $data['reference'])->first();
|
|
if(!$shopping_payment){
|
|
MyLog::writeLog(
|
|
'payone',
|
|
'error',
|
|
'Error:2004 App\Http\Controllers\Api\PayoneController::paymentStatus ShoppingPayment not found',
|
|
$data
|
|
);
|
|
print("TSOK");
|
|
exit;
|
|
}
|
|
|
|
if($shopping_payment->shopping_order_id != $shopping_order->id){
|
|
MyLog::writeLog(
|
|
'payone',
|
|
'error',
|
|
'Error:2005 App\Http\Controllers\Api\PayoneController::paymentStatus ShoppingPayment no realation ShoppingOrder',
|
|
$data
|
|
);
|
|
print("TSOK");
|
|
exit;
|
|
}
|
|
|
|
$price = number_format((round($data['price'],2) * 100), 0, '.', '');
|
|
$price_amount = number_format($shopping_payment->amount, 0, '.', '');
|
|
if($price_amount != $price){
|
|
$data['shopping_payment-amount'] = $price_amount;
|
|
$data['price-amount'] = $price;
|
|
MyLog::writeLog(
|
|
'payone',
|
|
'error',
|
|
'Error:2006 App\Http\Controllers\Api\PayoneController::paymentStatus Price error',
|
|
$data
|
|
);
|
|
print("TSOK");
|
|
exit;
|
|
}
|
|
|
|
/* TODO -- need this? */
|
|
if($shopping_payment->txaction == $data['txaction']){
|
|
|
|
if($data['txaction'] === 'paid' && $shopping_order->txaction === 'paid'){
|
|
MyLog::writeLog(
|
|
'payone',
|
|
'error',
|
|
'Error:2007 App\Http\Controllers\Api\PayoneController::paymentStatus same txaction - was already paid',
|
|
$data
|
|
);
|
|
//was already paid
|
|
print("TSOK");
|
|
exit;
|
|
}else{
|
|
MyLog::writeLog(
|
|
'payone',
|
|
'error',
|
|
'Error:2007 App\Http\Controllers\Api\PayoneController::paymentStatus same txaction - show',
|
|
$data
|
|
);
|
|
}
|
|
}
|
|
|
|
//create transaction
|
|
PaymentTransaction::create([
|
|
'shopping_payment_id' => $shopping_payment->id,
|
|
'request' => 'transaction',
|
|
'txid' => $data['txid'],
|
|
'userid' => $data['userid'],
|
|
'status' => 'PAYONE',
|
|
'key' => $data['key'],
|
|
'txaction' => $data['txaction'],
|
|
'transmitted_data' => Util::utf8ize($data),
|
|
'mode' => $data['mode'],
|
|
]);
|
|
|
|
$shopping_order->txaction = $data['txaction'];
|
|
$shopping_order->save();
|
|
$shopping_payment->txaction = $data['txaction'];
|
|
$shopping_payment->save();
|
|
|
|
$send_link = false;
|
|
$send_mail = true;
|
|
if($data['txaction'] === 'failed'){
|
|
$shopping_order->setUserHistoryValue(['status' => 6]);
|
|
Util::setInstanceStatusByPayment($shopping_payment, 5);
|
|
}
|
|
if($data['txaction'] === 'appointed'){
|
|
$shopping_order->setUserHistoryValue(['status' => 7]);
|
|
ShoppingUserService::snycOrdersByShoppingOrder($shopping_order);
|
|
Util::setInstanceStatusByPayment($shopping_payment, 4);
|
|
}
|
|
|
|
if($data['txaction'] === 'paid'){
|
|
if(!$shopping_order->paid){
|
|
$send_link = Payment::paymentStatusPaidAction($shopping_order, true, $shopping_payment);
|
|
}else{
|
|
$send_mail = false;
|
|
}
|
|
}
|
|
$data['send_link'] = $send_link;
|
|
if($send_mail){
|
|
Payment::paymentStatusSendMail($shopping_order, $shopping_payment, $data);
|
|
}
|
|
print("TSOK");
|
|
exit;
|
|
}
|
|
|
|
} |