mirror of
https://github.com/invoiceninja/invoiceninja.git
synced 2025-07-09 03:14:30 -04:00
Merge pull request #8293 from turbo124/v5-develop
Fixes for mollie - disable idempotency
This commit is contained in:
commit
cff6ab4fb6
@ -1 +1 @@
|
|||||||
5.5.71
|
5.5.72
|
@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
namespace App\Filters;
|
namespace App\Filters;
|
||||||
|
|
||||||
|
use App\Models\Payment;
|
||||||
use Illuminate\Database\Eloquent\Builder;
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -41,6 +42,70 @@ class PaymentFilters extends QueryFilters
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Filter based on client status.
|
||||||
|
*
|
||||||
|
* Statuses we need to handle
|
||||||
|
* - all
|
||||||
|
* - pending
|
||||||
|
* - cancelled
|
||||||
|
* - failed
|
||||||
|
* - completed
|
||||||
|
* - partially refunded
|
||||||
|
* - refunded
|
||||||
|
*
|
||||||
|
* @param string client_status The payment status as seen by the client
|
||||||
|
* @return Builder
|
||||||
|
*/
|
||||||
|
public function client_status(string $value = ''): Builder
|
||||||
|
{
|
||||||
|
if (strlen($value) == 0) {
|
||||||
|
return $this->builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
$status_parameters = explode(',', $value);
|
||||||
|
|
||||||
|
if (in_array('all', $status_parameters)) {
|
||||||
|
return $this->builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->builder->where(function ($query) use ($status_parameters) {
|
||||||
|
$payment_filters = [];
|
||||||
|
|
||||||
|
if (in_array('pending', $status_parameters)) {
|
||||||
|
$payment_filters[] = Payment::STATUS_PENDING;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array('cancelled', $status_parameters)) {
|
||||||
|
$payment_filters[] = Payment::STATUS_CANCELLED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array('failed', $status_parameters)) {
|
||||||
|
$payment_filters[] = Payment::STATUS_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array('completed', $status_parameters)) {
|
||||||
|
$payment_filters[] = Payment::STATUS_COMPLETED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array('partially_refunded', $status_parameters)) {
|
||||||
|
$payment_filters[] = Payment::STATUS_PARTIALLY_REFUNDED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (in_array('refunded', $status_parameters)) {
|
||||||
|
$payment_filters[] = Payment::STATUS_REFUNDED;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (count($payment_filters) >0) {
|
||||||
|
$query->whereIn('status_id', $payment_filters);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
return $this->builder;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a list of payments that can be matched to bank transactions
|
* Returns a list of payments that can be matched to bank transactions
|
||||||
*/
|
*/
|
||||||
|
@ -23,7 +23,6 @@ use App\Utils\CurlUtils;
|
|||||||
use App\Utils\Ninja;
|
use App\Utils\Ninja;
|
||||||
use App\Utils\SystemHealth;
|
use App\Utils\SystemHealth;
|
||||||
use App\Utils\Traits\AppSetup;
|
use App\Utils\Traits\AppSetup;
|
||||||
use Beganovich\Snappdf\Snappdf;
|
|
||||||
use Exception;
|
use Exception;
|
||||||
use Illuminate\Contracts\Foundation\Application;
|
use Illuminate\Contracts\Foundation\Application;
|
||||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||||
@ -209,30 +208,9 @@ class SetupController extends Controller
|
|||||||
public function checkPdf(Request $request)
|
public function checkPdf(Request $request)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
// if (config('ninja.pdf_generator') == 'phantom') {
|
|
||||||
// return $this->testPhantom();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// $pdf = new Snappdf();
|
|
||||||
|
|
||||||
// if (config('ninja.snappdf_chromium_path')) {
|
|
||||||
// $pdf->setChromiumPath(config('ninja.snappdf_chromium_path'));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// if (config('ninja.snappdf_chromium_arguments')) {
|
|
||||||
// $pdf->clearChromiumArguments();
|
|
||||||
// $pdf->addChromiumArguments(config('ninja.snappdf_chromium_arguments'));
|
|
||||||
// }
|
|
||||||
|
|
||||||
// $pdf = $pdf
|
|
||||||
// ->setHtml('GENERATING PDFs WORKS! Thank you for using Invoice Ninja!')
|
|
||||||
// ->generate();
|
|
||||||
|
|
||||||
// Storage::disk(config('filesystems.default'))->put('test.pdf', $pdf);
|
|
||||||
// Storage::disk('local')->put('test.pdf', $pdf);
|
|
||||||
return response(['url' => ''], 200);
|
return response(['url' => ''], 200);
|
||||||
|
|
||||||
// return response(['url' => Storage::disk('local')->url('test.pdf')], 200);
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
nlog($e->getMessage());
|
nlog($e->getMessage());
|
||||||
|
|
||||||
|
@ -26,6 +26,9 @@ class ValidCompanyQuantity implements Rule
|
|||||||
*/
|
*/
|
||||||
public function passes($attribute, $value)
|
public function passes($attribute, $value)
|
||||||
{
|
{
|
||||||
|
if(config('ninja.testvars.travis'))
|
||||||
|
return true;
|
||||||
|
|
||||||
if (Ninja::isSelfHost()) {
|
if (Ninja::isSelfHost()) {
|
||||||
return auth()->user()->company()->account->companies->count() < 10;
|
return auth()->user()->company()->account->companies->count() < 10;
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,8 @@ class TestMailServer extends Mailable
|
|||||||
$settings = new \stdClass;
|
$settings = new \stdClass;
|
||||||
$settings->primary_color = '#4caf50';
|
$settings->primary_color = '#4caf50';
|
||||||
$settings->email_style = 'dark';
|
$settings->email_style = 'dark';
|
||||||
|
$settings->email_alignment = 'left';
|
||||||
|
|
||||||
return $this->from(config('mail.from.address'), config('mail.from.name'))
|
return $this->from(config('mail.from.address'), config('mail.from.name'))
|
||||||
->subject(ctrans('texts.email'))
|
->subject(ctrans('texts.email'))
|
||||||
->markdown('email.support.message', [
|
->markdown('email.support.message', [
|
||||||
|
@ -72,7 +72,7 @@ class CreditCard
|
|||||||
'sequenceType' => 'recurring',
|
'sequenceType' => 'recurring',
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'webhookUrl' => $this->mollie->company_gateway->webhookUrl(),
|
'webhookUrl' => $this->mollie->company_gateway->webhookUrl(),
|
||||||
'idempotencyKey' => uniqid("st", true),
|
// 'idempotencyKey' => uniqid("st", true),
|
||||||
'metadata' => [
|
'metadata' => [
|
||||||
'client_id' => $this->mollie->client->hashed_id,
|
'client_id' => $this->mollie->client->hashed_id,
|
||||||
'hash' => $this->mollie->payment_hash->hash,
|
'hash' => $this->mollie->payment_hash->hash,
|
||||||
@ -111,7 +111,7 @@ class CreditCard
|
|||||||
'value' => $amount,
|
'value' => $amount,
|
||||||
],
|
],
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
'idempotencyKey' => uniqid("st", true),
|
// 'idempotencyKey' => uniqid("st", true),
|
||||||
'redirectUrl' => route('mollie.3ds_redirect', [
|
'redirectUrl' => route('mollie.3ds_redirect', [
|
||||||
'company_key' => $this->mollie->client->company->company_key,
|
'company_key' => $this->mollie->client->company->company_key,
|
||||||
'company_gateway_id' => $this->mollie->company_gateway->hashed_id,
|
'company_gateway_id' => $this->mollie->company_gateway->hashed_id,
|
||||||
|
@ -218,6 +218,7 @@ class MolliePaymentDriver extends BaseDriver
|
|||||||
'customerId' => $cgt->gateway_customer_reference,
|
'customerId' => $cgt->gateway_customer_reference,
|
||||||
'sequenceType' => 'recurring',
|
'sequenceType' => 'recurring',
|
||||||
'description' => $description,
|
'description' => $description,
|
||||||
|
'idempotencyKey' => uniqid("st", true),
|
||||||
'webhookUrl' => $this->company_gateway->webhookUrl(),
|
'webhookUrl' => $this->company_gateway->webhookUrl(),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
@ -14,8 +14,8 @@ return [
|
|||||||
'require_https' => env('REQUIRE_HTTPS', true),
|
'require_https' => env('REQUIRE_HTTPS', true),
|
||||||
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
||||||
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
||||||
'app_version' => '5.5.71',
|
'app_version' => '5.5.72',
|
||||||
'app_tag' => '5.5.71',
|
'app_tag' => '5.5.72',
|
||||||
'minimum_client_version' => '5.0.16',
|
'minimum_client_version' => '5.0.16',
|
||||||
'terms_version' => '1.0.1',
|
'terms_version' => '1.0.1',
|
||||||
'api_secret' => env('API_SECRET', ''),
|
'api_secret' => env('API_SECRET', ''),
|
||||||
|
@ -151,7 +151,7 @@
|
|||||||
<td align="center">
|
<td align="center">
|
||||||
<div class="dark-bg"
|
<div class="dark-bg"
|
||||||
style="background-color:#f9f9f9; padding-bottom: 20px; margin-top:20px;">
|
style="background-color:#f9f9f9; padding-bottom: 20px; margin-top:20px;">
|
||||||
@if($logo)
|
@if($logo && strpos($logo, 'blank.png') === false)
|
||||||
<img class="" src="{{ $logo ?? '' }}" width="50%" height="" alt="alt_text" border="0" style="width: 50%; max-width: 570px; height: auto; display: block;" class="g-img">
|
<img class="" src="{{ $logo ?? '' }}" width="50%" height="" alt="alt_text" border="0" style="width: 50%; max-width: 570px; height: auto; display: block;" class="g-img">
|
||||||
@endif
|
@endif
|
||||||
</div>
|
</div>
|
||||||
|
@ -27,8 +27,8 @@ use Tests\TestCase;
|
|||||||
class CompanyGatewayTest extends TestCase
|
class CompanyGatewayTest extends TestCase
|
||||||
{
|
{
|
||||||
use MockAccountData;
|
use MockAccountData;
|
||||||
// use DatabaseTransactions;
|
use DatabaseTransactions;
|
||||||
use RefreshDatabase;
|
// use RefreshDatabase;
|
||||||
|
|
||||||
protected function setUp() :void
|
protected function setUp() :void
|
||||||
{
|
{
|
||||||
|
@ -29,9 +29,9 @@ use Illuminate\Foundation\Testing\DatabaseTransactions;
|
|||||||
class CompanySettingsTest extends TestCase
|
class CompanySettingsTest extends TestCase
|
||||||
{
|
{
|
||||||
use MakesHash;
|
use MakesHash;
|
||||||
// use DatabaseTransactions;
|
use DatabaseTransactions;
|
||||||
use MockAccountData;
|
use MockAccountData;
|
||||||
use RefreshDatabase;
|
// use RefreshDatabase;
|
||||||
|
|
||||||
public function setUp() :void
|
public function setUp() :void
|
||||||
{
|
{
|
||||||
|
@ -62,6 +62,16 @@ class PaymentTest extends TestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testPatymentGetClientStatus()
|
||||||
|
{
|
||||||
|
$response = $this->withHeaders([
|
||||||
|
'X-API-SECRET' => config('ninja.api_secret'),
|
||||||
|
'X-API-TOKEN' => $this->token,
|
||||||
|
])->get('/api/v1/payments?client_status=completed');
|
||||||
|
|
||||||
|
$response->assertStatus(200);
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetPaymentMatchList()
|
public function testGetPaymentMatchList()
|
||||||
{
|
{
|
||||||
$response = $this->withHeaders([
|
$response = $this->withHeaders([
|
||||||
|
Loading…
x
Reference in New Issue
Block a user