186 lines
6.9 KiB
PHP
186 lines
6.9 KiB
PHP
<?php
|
|||
|
|
|
||
|
|
namespace App\Http\Controllers\Customer;
|
||
|
|
|
||
|
|
use App\Http\Controllers\Controller;
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
use App\Models\Customer;
|
||
|
|
use Rooyesh\Wallet\interfaces\TransactionInterface;
|
||
|
|
use Rooyesh\Wallet\interfaces\WalletInterface;
|
||
|
|
use Illuminate\Support\Facades\DB;
|
||
|
|
use Illuminate\Support\Facades\Http;
|
||
|
|
|
||
|
|
use function Laravel\Prompts\select;
|
||
|
|
|
||
|
|
class havaleController extends Controller
|
||
|
|
{
|
||
|
|
public function havale(Request $request)
|
||
|
|
{
|
||
|
|
// return auth('customer')->user();
|
||
|
|
$sender = Customer::find(auth('customer')->id());
|
||
|
|
$sender_wallet = new WalletInterface(auth('customer')->id(), 2);
|
||
|
|
// dd($sender_wallet);
|
||
|
|
// dump($sender_wallet->wallet->gold);
|
||
|
|
|
||
|
|
if ($request->amount > $sender_wallet->wallet->gold) {
|
||
|
|
return response()->json(['message' => 'موجودی حساب کافی نمی باشد!'], 422);
|
||
|
|
}
|
||
|
|
$receiver = Customer::where('virtual_card_number', $request->destination)->first();
|
||
|
|
// dd($receiver);
|
||
|
|
if (!$receiver) {
|
||
|
|
return response()->json(['message' => "کارت مقصد معتبر نمی باشد!"], 422);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
// try {
|
||
|
|
// DB::transaction(function () use ($sender_wallet, $receiver, $request) {
|
||
|
|
//
|
||
|
|
// new TransactionInterface($sender_wallet, [
|
||
|
|
// "gold" => $request->amount,
|
||
|
|
// 'expire_at' => now(),
|
||
|
|
// 'active' => true,
|
||
|
|
// 'start_at' => now(),
|
||
|
|
// ], 1, false);
|
||
|
|
//
|
||
|
|
// $receiver_wallet = new WalletInterface($receiver->id, 2);
|
||
|
|
// dd($receiver_wallet);
|
||
|
|
// new TransactionInterface($receiver_wallet, [
|
||
|
|
// "gold" => $request->amount,
|
||
|
|
// 'expire_at' => now(),
|
||
|
|
// 'active' => true,
|
||
|
|
// 'start_at' => now(),
|
||
|
|
// ], 1, true);
|
||
|
|
//
|
||
|
|
// });
|
||
|
|
//
|
||
|
|
// return response()->json(['message' => 'حواله با موفقیت انجام شد!'], 200);
|
||
|
|
//
|
||
|
|
// } catch (\Exception $e) {
|
||
|
|
// // در صورت بروز خطا، تمام عملیات رولبک میشود
|
||
|
|
// return response()->json([
|
||
|
|
// 'message' => 'خطا در انجام تراکنش!',
|
||
|
|
// 'error' => $e->getMessage()
|
||
|
|
// ], 500);
|
||
|
|
// }
|
||
|
|
// dd($receiver->name,$sender->name);
|
||
|
|
|
||
|
|
new TransactionInterface($sender_wallet, [
|
||
|
|
"title" => "حواله",
|
||
|
|
"gold" => $request->amount,
|
||
|
|
'expire_at' => now(),
|
||
|
|
'active' => true,
|
||
|
|
'start_at' => now(),
|
||
|
|
'note' => " حواله از $sender->name به $receiver->name به مقدار $request->amount گرم",
|
||
|
|
], 10, false);
|
||
|
|
// dump($sender_wallet->wallet->gold);
|
||
|
|
$receiverWallet = new WalletInterface($receiver->id, 2);
|
||
|
|
// dump($reciverWallet->wallet->gold);
|
||
|
|
new TransactionInterface($receiverWallet, [
|
||
|
|
"title" => "حواله",
|
||
|
|
"gold" => $request->amount,
|
||
|
|
'expire_at' => now(),
|
||
|
|
'active' => true,
|
||
|
|
'start_at' => now(),
|
||
|
|
'note' => " حواله از $sender->name به $receiver->name به مقدار $request->amount گرم",
|
||
|
|
], 10, true);
|
||
|
|
// dump($reciverWallet->wallet->gold);
|
||
|
|
return "تراکنش موفق";
|
||
|
|
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
public function virtualCardValidate(Request $request)
|
||
|
|
{
|
||
|
|
$input = str_replace(' ', '', $request->input('cardNumber'));
|
||
|
|
if(strlen($input) !== 16 && strlen($input) !== 11)
|
||
|
|
return response()->json(['message' => 'مقدار وارد شده معتبر نمی باشد!'], 422);
|
||
|
|
|
||
|
|
if (strlen($input) == 16) {
|
||
|
|
$input = implode('-', str_split($input, 4));
|
||
|
|
}
|
||
|
|
|
||
|
|
if (auth('customer')->user()->virtual_card_number == $input ||
|
||
|
|
auth('customer')->user()->mobile == $input){
|
||
|
|
return response()->json(['message' => 'شماره کارت مبدا و مقصد یکسان است!'], 422);
|
||
|
|
}
|
||
|
|
|
||
|
|
$data = Customer::where('virtual_card_number', $input)
|
||
|
|
->orwhere('mobile', $input)
|
||
|
|
->select('name', 'virtual_card_number')
|
||
|
|
->first();
|
||
|
|
if($data)
|
||
|
|
return $data;
|
||
|
|
|
||
|
|
return response()->json(['message' => 'مقصد وجود ندارد!'], 422);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
// if (strlen(str_replace(' ', '', $request->input('cardNumber'))) == 19) {
|
||
|
|
// return $data = Customer::
|
||
|
|
// where('virtual_card_number', str_replace(' ', '', $request->input('cardNumber')))
|
||
|
|
// ->select('name', 'virtual_card_number')
|
||
|
|
// ->first();
|
||
|
|
// } elseif (strlen(str_replace(' ', '', $request->input('cardNumber'))) == 16) {
|
||
|
|
// $normalized = implode('-', str_split(str_replace(' ', '', $request->input('cardNumber')), 4));
|
||
|
|
// $data = Customer::where('virtual_card_number', $normalized)
|
||
|
|
// ->select('name', 'virtual_card_number')
|
||
|
|
// ->first();
|
||
|
|
// return $data ?? response()->json([1], 422);
|
||
|
|
// } elseif (strlen(str_replace(' ', '', $request->input('cardNumber'))) == 11){
|
||
|
|
// return $data = Customer::
|
||
|
|
// where('mobile', str_replace(' ', '', $request->input('cardNumber')))
|
||
|
|
// ->select('name', 'virtual_card_number')
|
||
|
|
// ->first();
|
||
|
|
// }else {
|
||
|
|
// return response()->json(['message' => 'شماره کارت باید 16 رقم باشد!'], 422);
|
||
|
|
// }
|
||
|
|
}
|
||
|
|
|
||
|
|
public function havaleList(Request $request){
|
||
|
|
$id = $request->input('id');
|
||
|
|
$havale = DB::table('transactions')
|
||
|
|
->select('gold', 'note', 'created_at', 'unit', 'title', 'customer_id')
|
||
|
|
->where('title', 'حواله')
|
||
|
|
->where('customer_id', $id)
|
||
|
|
->get();
|
||
|
|
return $havale;
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
// public function ztest(Request $request)
|
||
|
|
// {
|
||
|
|
// $user = Customer::findOrFail($request->id);
|
||
|
|
//// $user = Customer::find(auth('customer')->id());
|
||
|
|
// if($user) {
|
||
|
|
// $response = Http::withHeaders([
|
||
|
|
// 'Content-Type' => 'application/json',
|
||
|
|
// 'Accept' => 'application/json',
|
||
|
|
// ])->post('https://shop.liman.gold/zarinpal', [
|
||
|
|
// 'amount' => $request->amount,
|
||
|
|
// 'user_name' => $user->name,
|
||
|
|
// 'user_id' => $user->id,
|
||
|
|
// 'currency' => 'IRR',
|
||
|
|
// 'user' => [
|
||
|
|
// 'name' => $user->name,
|
||
|
|
// 'phone' => $user->mobile,
|
||
|
|
// ],
|
||
|
|
// 'title' => env('APP_NAME'),
|
||
|
|
// 'return_url' => 'https://ghatreh.gold/zarinpal',
|
||
|
|
// ]);
|
||
|
|
//
|
||
|
|
//// دریافت جواب به صورت آرایه
|
||
|
|
// $result = $response->json();
|
||
|
|
// return redirect($result['pay_link']);
|
||
|
|
// }
|
||
|
|
// return "user not found";
|
||
|
|
////// یا نمایش کامل پاسخ
|
||
|
|
//// dd($result);
|
||
|
|
//
|
||
|
|
// }
|
||
|
|
}
|