fix on payment by cb

This commit is contained in:
ludo
2024-01-04 15:43:02 +01:00
parent 8a463e7b9e
commit 03027cde01
14 changed files with 170 additions and 151 deletions

View File

@@ -32,7 +32,7 @@ class OrdersDataTable extends DataTable
return Orders::getStatus($order->status);
})
->editColumn('created_at', function (Order $order) {
return $order->created_at->toDateTimeString();
return $order->created_at->format('d/m/Y H:i:s');
})
->editColumn('customer.last_name', function (Order $order) {
return $order->customer->last_name.' '.$order->customer->first_name;

View File

@@ -65,12 +65,13 @@ class OrderController extends Controller
$order = Orders::saveOrder($data);
if ($order) {
if ($data['payment_type'] == '1') {
return Paybox::makeAuthorizationRequest($data['basket']['total_shipped']);
// return redirect()->route('Shop.Payments.online');
return Paybox::makeAuthorizationRequest($order);
} else {
return redirect()->route('Shop.Orders.confirmed');
}
OrderMails::sendOrderConfirmed($order->id);
if ($ret) {
OrderMails::sendOrderConfirmed($order->id);
}
} else {
return view('Shop.Orders.order');
}

View File

@@ -1,9 +0,0 @@
<?php
namespace App\Http\Controllers\Shop;
use App\Http\Controllers\Controller;
class OrderPaymentController extends Controller
{
}

View File

@@ -12,8 +12,10 @@ class PayboxController extends Controller
return view('paybox.accepted');
}
public function refused()
public function refused(Request $request)
{
dump($request->all());
exit;
return view('paybox.refused');
}

View File

@@ -57,17 +57,12 @@ class Article extends Model implements HasMedia
return $this->belongsTo(ArticleNature::class);
}
public function invoiceItems(): HasMany
{
return $this->hasMany(InvoiceItem::class);
}
public function offers(): HasMany
{
return $this->hasMany(Offer::class);
}
public function price_lists(): HasManyDeep
public function price_lists()
{
return $this->hasManyDeep(
PriceList::class,
@@ -77,7 +72,7 @@ class Article extends Model implements HasMedia
);
}
public function prices(): HasManyDeep
public function prices()
{
return $this->hasManyDeep(
PriceListValue::class,
@@ -166,6 +161,16 @@ class Article extends Model implements HasMedia
return $query->byProduct(Merchandise::class);
}
public function scopeVisible($query)
{
return $query->where($this->table.'.visible', 1);
}
public function scopeHomepage($query)
{
return $query->where($this->table.'.homepage', 1);
}
public function scopeByProduct($query, $model)
{
return $model ? $query->where($this->table.'.product_type', $model) : $query;
@@ -179,23 +184,14 @@ class Article extends Model implements HasMedia
public function scopeByTag($query, $tagId)
{
return $tagId ? $query->whereHas('tags', function ($query) use ($tagId) {
$query->where('id', $tagId);
$query->byId($tagId);
}) : $query;
}
public function scopeByTags($query, $tags)
{
return $tags ? $query->whereHas('tags', function ($query) use ($tags) {
$query->whereIn('id', $tags);
}) : $query;
}
public function scopeByTagsSelected($query, $tags)
{
return $tags ? $query->whereHas('tags', function ($query) use ($tags) {
foreach ($tags as $tag) {
$query->where('id', $tag);
}
$query->byIds($tags);
}) : $query;
}
@@ -210,14 +206,4 @@ class Article extends Model implements HasMedia
$query->active()->byStockAvailable()->bySaleChannel($saleChannelId);
});
}
public function scopeVisible($query)
{
return $query->where($this->table.'.visible', 1);
}
public function scopeHomepage($query)
{
return $query->where($this->table.'.homepage', 1);
}
}

View File

@@ -44,6 +44,11 @@ class Invoice extends Model
return $query->where('uuid', $uuid);
}
public function scopeById($query, $id)
{
return $query->where('id', $id);
}
public function scopeByPeriod($query, $start, $end)
{
return $query->whereBetween('created_at', [$start, $end]);

View File

@@ -3,9 +3,13 @@
namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
use Venturecraft\Revisionable\RevisionableTrait;
use Wildside\Userstamps\Userstamps;
class InvoicePayment extends Model
{
use RevisionableTrait, Userstamps;
protected $guarded = ['id'];
protected $table = 'shop_invoice_payments';
@@ -15,8 +19,30 @@ class InvoicePayment extends Model
return $this->belongsTo(Invoice::class);
}
public function scopeByInvoice($query, $invoice_id)
public function order()
{
return $query->where('invoice_id', $invoice_id);
return $this->belongsToThrough(Order::class, Invoice::class);
}
public function scopeByInvoice($query, $invoiceId)
{
return $query->where('invoice_id', $invoiceId);
}
public function scopeValidated($query)
{
return $query->where('validated', 1);
}
public function scopeByOrder($query, $orderId)
{
return $query->whereHas('order', function($query) use ($orderId) {
return $query->byOrder($orderId);
});
}
public function scopeByPaymentType($query, $paymentType)
{
return $query->where('payment_type', $paymentType);
}
}

View File

@@ -92,4 +92,11 @@ class Order extends Model
{
return $query->whereBetween($field, [$start, $end]);
}
public function scopeByInvoice($query, $invoiceId)
{
return $query->whereHas('invoice', function ($query) use ($invoiceId) {
$query->byId($invoiceId);
});
}
}

View File

@@ -21,13 +21,6 @@ class Tag extends parentTag
public $translatable = [];
/*
public function taggable()
{
return $this->hasMany('App\Models\Shop\Taggable');
}
*/
// TODO
public function offers()
{
@@ -80,4 +73,14 @@ class Tag extends parentTag
$query->byCategoryParent($category_id);
}]);
}
public function scopeById($query, $id)
{
return $query->where($this->table.'.id', $id);
}
public function scopeByIds($query, $ids)
{
return $query->whereIn($this->table.'.id', $ids);
}
}

View File

@@ -222,7 +222,8 @@ class Articles
{
$saleChannelId = $options['sale_channel_id'] ?? SaleChannels::getDefaultID();
$model = self::getModelByOptions($options);
$data = $model->withAvailableOffers($saleChannelId)->with([
return $model->withAvailableOffers($saleChannelId)->with([
'image',
'product',
'article_nature',
@@ -238,14 +239,6 @@ class Articles
'offers.tariff.price_lists.price_list_values',
'offers.variation.package',
])->get();
return $data;
}
public static function getArticleNaturesOptionsWithOffers($options = false)
{
$ids = self::getArticleNaturesIdsWithOffers($options);
}
public static function getArticleNaturesWithOffers($options = false)
@@ -294,7 +287,7 @@ class Articles
$model = ($options['homepage'] ?? false) ? Article::homepage()->visible() : Article::visible();
$model = $category_id ? $model->byCategoryParent($category_id) : $model;
$model = $tags ? $model->byTagsSelected($tags) : $model;
$model = $tags ? $model->byTags($tags) : $model;
$model = $search ? $model->search($search) : $model;
$model = $article_nature_id ? $model->byArticleNature($article_nature_id) : $model;
$model = $article_nature_ids ? $model->byArticleNatures($article_nature_ids) : $model;
@@ -305,6 +298,8 @@ class Articles
case 'merchandise':
$model = $model->merchandise();
break;
default:
$model = $model->botanic();
}
return $model;
@@ -313,9 +308,8 @@ class Articles
public static function getFull($id)
{
$data['article'] = self::getArticleEdit($id);
self::getMeta($data);
return $data;
return self::getMeta($data);
}
public static function getArticleEdit($id)
@@ -378,6 +372,7 @@ class Articles
'tags' => $product->tags->toArray(),
];
break;
default:
}
return $data ?? false;
@@ -395,6 +390,7 @@ class Articles
case 'App\Models\Shop\Merchandise':
$images = Merchandises::getImages($product_id);
break;
default:
}
return $images ?? false ? ['images' => $images] : false;
@@ -538,8 +534,12 @@ class Articles
case 'App\Models\Botanic\Variety':
$variety = $article->product ?? false;
$specie = $variety->specie ?? false;
$images = $variety ? (count($variety->images ?? []) ? $images->merge($variety->images) : $images) : $images;
$images = $specie ? (count($specie->images ?? []) ? $images->merge($specie->images) : $images) : $images;
if ($variety) {
$images = count($variety->images ?? []) ? $images->merge($variety->images) : $images;
}
if ($specie) {
$images = count($specie->images ?? []) ? $images->merge($specie->images) : $images;
}
break;
case 'App\Models\Botanic\Specie':
$specie = $article->product ?? false;

View File

@@ -2,24 +2,27 @@
namespace App\Repositories\Shop;
use App;
use Bnb\PayboxGateway\Requests\AuthorizationWithCapture;
use Bnb\PayboxGateway\Requests\Capture;
use Bnb\PayboxGateway\Responses\Verify;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Log;
use Bnb\PayboxGateway\Requests\Paybox\AuthorizationWithCapture;
use Bnb\PayboxGateway\Requests\PayboxDirect\Capture;
use Bnb\PayboxGateway\Responses\Paybox\Verify;
use Bnb\PayboxGateway\Responses\Exceptions\InvalidSignature;
class Paybox
{
public static function makeAuthorizationRequest($amount, $customer_email = 'test@example.com')
public static function makeAuthorizationRequest($order, $customer_email = 'test@example.com')
{
$authorizationRequest = App::make(AuthorizationWithCapture::class);
$invoiceId = $order->invoice->id;
return $authorizationRequest->setAmount($amount)->setCustomerEmail($customer_email)
->setPaymentNumber(1)->send('paybox.send');
return $authorizationRequest->setAmount($order->total_shipped)->setCustomerEmail($customer_email)
->setPaymentNumber($invoiceId)->send('paybox.send');
}
public static function verifyPayment($invoice_id)
public static function verifyPayment($invoiceId)
{
$invoice = Invoices::get($invoice_id);
$invoice = Invoices::get($invoiceId);
$payboxVerify = App::make(Verify::class);
try {
$success = $payboxVerify->isSuccess($invoice->total_shipped);
@@ -34,7 +37,7 @@ class Paybox
public static function getPreviousAuthorizedRequest()
{
$payment = PaymentModel::find($idOfAuthorizedPayment);
$payment = Payment::where('number', $request->input('order_number'))->firstOrFail();
$captureRequest = App::make(Capture::class);
$response = $captureRequest->setAmount($payment->amount)
->setPayboxCallNumber($payment->call_number)

View File

@@ -11,122 +11,121 @@
"php": "^7.4|^8.0",
"akaunting/laravel-apexcharts": "^2.0",
"alexisgeneau/mailvalidate": "dev-master",
"arrilot/laravel-widgets": "^3.13",
"awobaz/compoships": "^2.1",
"arrilot/laravel-widgets": "^3.14",
"awobaz/compoships": "^2.2",
"balping/laravel-hashslug": "^2.2",
"barryvdh/laravel-dompdf": "^2.0",
"barryvdh/laravel-snappy": "^1.0",
"bnbwebexpertise/laravel-paybox-gateway": "^1.1",
"browner12/helpers": "^3.0",
"cesargb/laravel-cascade-delete": "^1.5",
"browner12/helpers": "^3.5",
"cesargb/laravel-cascade-delete": "^1.7",
"coduo/php-humanizer": "^4.0",
"composer/composer": "^2.0.13",
"cornford/googlmapper": "^3.3",
"darryldecode/cart": "^4.1",
"composer/composer": "^2.6",
"cornford/googlmapper": "^3.4",
"darryldecode/cart": "^4.2",
"datatables/datatables": "^1.10",
"ddzobov/laravel-pivot-softdeletes": "^2.1",
"dietercoopman/smart": "^1.6",
"dompdf/dompdf": "^2.0.3",
"dyrynda/laravel-cascade-soft-deletes": "^4.1",
"eduardokum/laravel-mail-auto-embed": "^2.0",
"erjanmx/laravel-migrate-check": "^2.1",
"dietercoopman/smart": "^1.7",
"dompdf/dompdf": "^2.0.4",
"dyrynda/laravel-cascade-soft-deletes": "^4.2",
"eduardokum/laravel-mail-auto-embed": "^2.10",
"erjanmx/laravel-migrate-check": "^2.4",
"fico7489/laravel-eloquent-join": "^4.1",
"fideloper/proxy": "^4.0",
"geo6/geocoder-php-addok-provider": "^1.1",
"fideloper/proxy": "^4.4",
"geo6/geocoder-php-addok-provider": "^1.4",
"gzero/eloquent-tree": "^3.1",
"hassankhan/config": "^3.1",
"htmlmin/htmlmin": "^9.0",
"intervention/image": "^2.5",
"intervention/imagecache": "^2.4",
"intervention/image": "^2.7",
"intervention/imagecache": "^2.6",
"jasonlewis/expressive-date": "^1.0",
"jenssegers/date": "^4.0",
"jeroen-g/blade-macro": "^1.0",
"kalnoy/nestedset": "^6.0",
"kirschbaum-development/eloquent-power-joins": "^2.3",
"kmlaravel/laravel-geographical-calculator": "^2.1",
"knplabs/knp-snappy": "^1.2",
"laracasts/utilities": "^3.0",
"kirschbaum-development/eloquent-power-joins": "^2.7",
"kmlaravel/laravel-geographical-calculator": "^2.2",
"knplabs/knp-snappy": "^1.5",
"laracasts/utilities": "^3.2",
"laracraft-tech/laravel-date-scopes": "^2.0",
"laravel/framework": "^9.0",
"laravel/helpers": "^1.1",
"laravel/scout": "^9.1",
"laravel/tinker": "^2.5",
"laravel/ui": "^3.0",
"laravelcollective/html": "^6.0",
"laravel/framework": "^9.52",
"laravel/helpers": "^1.7",
"laravel/scout": "^9.8",
"laravel/tinker": "^2.8",
"laravel/ui": "^3.4",
"laravelcollective/html": "^6.4",
"laravolt/avatar": "^4.1",
"lavary/laravel-menu": "1.8.3",
"league/climate": "^3.5",
"league/period": "^5.1",
"livewire/livewire": "^2.4",
"league/climate": "^3.8",
"league/period": "^5.3",
"livewire/livewire": "^2.12",
"maatwebsite/excel": "^3.1",
"moneyphp/money": "^4.1",
"mpdf/mpdf": "^8.0",
"moneyphp/money": "^4.3",
"mpdf/mpdf": "^8.2",
"mpociot/teamwork": "^7.0",
"nicmart/tree": "^0.7",
"nicolaslopezj/searchable": "^1.13",
"orangehill/iseed": "^3.0",
"php-console/php-console": "^3.1",
"proengsoft/laravel-jsvalidation": "^4.5",
"protonemedia/laravel-cross-eloquent-search": "^3.0",
"rahul900day/laravel-captcha": "^1.0",
"proengsoft/laravel-jsvalidation": "^4.8",
"protonemedia/laravel-cross-eloquent-search": "^3.2",
"rahul900day/laravel-captcha": "^1.2",
"ralphjsmit/laravel-seo": "^1.4",
"reedware/laravel-relation-joins": "^3.0",
"respect/validation": "^2.2",
"rinvex/laravel-categories": "^6.0",
"rinvex/laravel-tags": "^6.0",
"rutorika/sortable": "^9.0",
"santigarcor/laratrust": "^7.1",
"sebastienheyd/boilerplate": "^7.5",
"rinvex/laravel-categories": "^6.1",
"rinvex/laravel-tags": "^6.1",
"rutorika/sortable": "^9.1",
"santigarcor/laratrust": "^7.2",
"sebastienheyd/boilerplate": "^7.24",
"softcreatr/php-mime-detector": "^3.2",
"spatie/browsershot": "^3.57",
"spatie/eloquent-sortable": "^4.0",
"spatie/image-optimizer": "^1.4",
"spatie/browsershot": "^3.61",
"spatie/eloquent-sortable": "^4.1",
"spatie/image-optimizer": "^1.7",
"spatie/laravel-activitylog": "^4.7",
"spatie/laravel-backup": "^8.1",
"spatie/laravel-backup": "^8.2",
"spatie/laravel-collection-macros": "^7.12",
"spatie/laravel-cookie-consent": "^3.2",
"spatie/laravel-database-mail-templates": "^3.5",
"spatie/laravel-mail-preview": "^6.0",
"spatie/laravel-medialibrary": "^10.7",
"spatie/laravel-stats": "^2.0",
"staudenmeir/belongs-to-through": "^2.11",
"staudenmeir/eloquent-has-many-deep": "^1.13",
"spatie/laravel-medialibrary": "^10.15",
"spatie/laravel-stats": "^2.1",
"staudenmeir/belongs-to-through": "^2.12",
"staudenmeir/eloquent-has-many-deep": "^1.17",
"stillat/numeral.php": "^2.0",
"symfony/http-client": "^6.2",
"symfony/http-client": "^6.4",
"tanthammar/laravel-window-size": "^2.1",
"thomasjohnkane/snooze": "^2.2",
"toin0u/geocoder-laravel": "^4.2",
"thomasjohnkane/snooze": "^2.3",
"toin0u/geocoder-laravel": "^4.6",
"unicodeveloper/laravel-password": "^1.0",
"unisharp/laravel-filemanager": "^2.5",
"venturecraft/revisionable": "^1.39",
"watson/rememberable": "^6.0",
"wildside/userstamps": "^2.1",
"yadahan/laravel-authentication-log": "^1.2",
"unisharp/laravel-filemanager": "^2.6",
"venturecraft/revisionable": "^1.40",
"watson/rememberable": "^6.1",
"wildside/userstamps": "^2.3",
"yadahan/laravel-authentication-log": "^1.6",
"yajra/laravel-datatables": "^9.0"
},
"require-dev": {
"barryvdh/laravel-debugbar": "^3.8",
"barryvdh/laravel-debugbar": "^3.9",
"bestmomo/laravel5-artisan-language": "^0.3",
"beyondcode/laravel-dump-server": "^1.7",
"enlightn/enlightn": "^2.1",
"fakerphp/faker": "^1.13",
"beyondcode/laravel-dump-server": "^1.9",
"enlightn/enlightn": "^2.7",
"fakerphp/faker": "^1.23",
"fossbarrow/laravel-phpcs": "dev-main",
"kevincobain2000/laravel-erd": "^1.3",
"kitloong/laravel-migrations-generator": "^6.0",
"kevincobain2000/laravel-erd": "^1.6",
"kitloong/laravel-migrations-generator": "^6.11",
"laravel/pint": "^1.13",
"mockery/mockery": "^1.4.2",
"nunomaduro/collision": "^7.0",
"nunomaduro/larastan": "^2.6",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^7.10",
"nunomaduro/laravel-mojito": "^0.2.6",
"nunomaduro/phpinsights": "^2.8",
"nunomaduro/phpinsights": "^2.11",
"orangehill/iseed": "^3.0",
"phpmetrics/phpmetrics": "^2.8",
"phpunit/phpunit": "^9.5",
"spatie/laravel-ignition": "^1.0",
"spatie/laravel-web-tinker": "^1.7",
"squizlabs/php_codesniffer": "3.*",
"staudenmeir/dusk-updater": "^1.2",
"wnx/laravel-stats": "^2.11"
"phpunit/phpunit": "^9.6",
"spatie/laravel-ignition": "^1.6",
"spatie/laravel-web-tinker": "^1.8",
"squizlabs/php_codesniffer": "3.8",
"staudenmeir/dusk-updater": "^1.4",
"wnx/laravel-stats": "^2.12"
},
"config": {
"optimize-autoloader": true,

View File

@@ -1,3 +0,0 @@
<?php
Route::resource('OrderPayments', 'OrderPaymentController');

View File

@@ -21,6 +21,5 @@ Route::prefix('')->namespace('Shop')->name('Shop.')->group(function () {
include_once __DIR__.'/Offers.php';
include_once __DIR__.'/Orders.php';
include_once __DIR__.'/Orders.php';
include_once __DIR__.'/OrderPayments.php';
include_once __DIR__.'/Searches.php';
});