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;
|
||||
|
||||
use App\Models\Payment;
|
||||
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
|
||||
*/
|
||||
|
@ -23,7 +23,6 @@ use App\Utils\CurlUtils;
|
||||
use App\Utils\Ninja;
|
||||
use App\Utils\SystemHealth;
|
||||
use App\Utils\Traits\AppSetup;
|
||||
use Beganovich\Snappdf\Snappdf;
|
||||
use Exception;
|
||||
use Illuminate\Contracts\Foundation\Application;
|
||||
use Illuminate\Contracts\Routing\ResponseFactory;
|
||||
@ -209,30 +208,9 @@ class SetupController extends Controller
|
||||
public function checkPdf(Request $request)
|
||||
{
|
||||
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' => Storage::disk('local')->url('test.pdf')], 200);
|
||||
} catch (Exception $e) {
|
||||
nlog($e->getMessage());
|
||||
|
||||
|
@ -26,6 +26,9 @@ class ValidCompanyQuantity implements Rule
|
||||
*/
|
||||
public function passes($attribute, $value)
|
||||
{
|
||||
if(config('ninja.testvars.travis'))
|
||||
return true;
|
||||
|
||||
if (Ninja::isSelfHost()) {
|
||||
return auth()->user()->company()->account->companies->count() < 10;
|
||||
}
|
||||
|
@ -39,6 +39,7 @@ class TestMailServer extends Mailable
|
||||
$settings = new \stdClass;
|
||||
$settings->primary_color = '#4caf50';
|
||||
$settings->email_style = 'dark';
|
||||
$settings->email_alignment = 'left';
|
||||
|
||||
return $this->from(config('mail.from.address'), config('mail.from.name'))
|
||||
->subject(ctrans('texts.email'))
|
||||
|
@ -72,7 +72,7 @@ class CreditCard
|
||||
'sequenceType' => 'recurring',
|
||||
'description' => $description,
|
||||
'webhookUrl' => $this->mollie->company_gateway->webhookUrl(),
|
||||
'idempotencyKey' => uniqid("st", true),
|
||||
// 'idempotencyKey' => uniqid("st", true),
|
||||
'metadata' => [
|
||||
'client_id' => $this->mollie->client->hashed_id,
|
||||
'hash' => $this->mollie->payment_hash->hash,
|
||||
@ -111,7 +111,7 @@ class CreditCard
|
||||
'value' => $amount,
|
||||
],
|
||||
'description' => $description,
|
||||
'idempotencyKey' => uniqid("st", true),
|
||||
// 'idempotencyKey' => uniqid("st", true),
|
||||
'redirectUrl' => route('mollie.3ds_redirect', [
|
||||
'company_key' => $this->mollie->client->company->company_key,
|
||||
'company_gateway_id' => $this->mollie->company_gateway->hashed_id,
|
||||
|
@ -218,6 +218,7 @@ class MolliePaymentDriver extends BaseDriver
|
||||
'customerId' => $cgt->gateway_customer_reference,
|
||||
'sequenceType' => 'recurring',
|
||||
'description' => $description,
|
||||
'idempotencyKey' => uniqid("st", true),
|
||||
'webhookUrl' => $this->company_gateway->webhookUrl(),
|
||||
]);
|
||||
|
||||
|
@ -14,8 +14,8 @@ return [
|
||||
'require_https' => env('REQUIRE_HTTPS', true),
|
||||
'app_url' => rtrim(env('APP_URL', ''), '/'),
|
||||
'app_domain' => env('APP_DOMAIN', 'invoicing.co'),
|
||||
'app_version' => '5.5.71',
|
||||
'app_tag' => '5.5.71',
|
||||
'app_version' => '5.5.72',
|
||||
'app_tag' => '5.5.72',
|
||||
'minimum_client_version' => '5.0.16',
|
||||
'terms_version' => '1.0.1',
|
||||
'api_secret' => env('API_SECRET', ''),
|
||||
|
@ -151,7 +151,7 @@
|
||||
<td align="center">
|
||||
<div class="dark-bg"
|
||||
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">
|
||||
@endif
|
||||
</div>
|
||||
|
@ -27,8 +27,8 @@ use Tests\TestCase;
|
||||
class CompanyGatewayTest extends TestCase
|
||||
{
|
||||
use MockAccountData;
|
||||
// use DatabaseTransactions;
|
||||
use RefreshDatabase;
|
||||
use DatabaseTransactions;
|
||||
// use RefreshDatabase;
|
||||
|
||||
protected function setUp() :void
|
||||
{
|
||||
|
@ -29,9 +29,9 @@ use Illuminate\Foundation\Testing\DatabaseTransactions;
|
||||
class CompanySettingsTest extends TestCase
|
||||
{
|
||||
use MakesHash;
|
||||
// use DatabaseTransactions;
|
||||
use DatabaseTransactions;
|
||||
use MockAccountData;
|
||||
use RefreshDatabase;
|
||||
// use RefreshDatabase;
|
||||
|
||||
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()
|
||||
{
|
||||
$response = $this->withHeaders([
|
||||
|
Loading…
x
Reference in New Issue
Block a user