sofort/sofortlib-php
PHP client library for the SOFORT API: initiate SOFORT Überweisung payments, Paycode/Billcode, refunds, and iDEAL. Fetch transaction details, parse XML responses, and generate iDEAL forward URLs and checksums. Includes examples and PHPUnit tests.
projectId support suggests the package is still lightly maintained (even if not actively). This may reduce risk of complete abandonment.projectId may be a legacy field (SOFORT v1) or redundant in Stripe’s v2 API.projectId without deprecation warnings may mask API version mismatches (e.g., sending v1 payloads to Stripe’s v2 endpoint).projectId is likely a SOFORT v1-specific field. If using Stripe’s SOFORT integration, this may be ignored or cause errors.projectId suggests the package still targets SOFORT v1, which may conflict with Stripe’s v2 API. Teams must validate whether this field is required, ignored, or rejected by the current SOFORT/Stripe endpoint.projectId may require new config options, increasing surface area for misconfiguration (e.g., hardcoding IDs, wrong API version).projectId, the package may break silently without updates.projectId still required by SOFORT/Stripe’s API, or is this a legacy field that can be safely omitted?projectId is rejected by the API (e.g., 4xx errors)? Does the package include validation?projectId support? Will the package need a major version bump?projectId addition is a configurable feature, not a breaking change → easy to adopt in existing integrations.projectId Requirement:
projectId.project_id to Laravel’s config (e.g., config/sofort.php):
'project_id' => env('SOFORT_PROJECT_ID', null),
$options = $projectId ? ['projectId' => $projectId] : [];
$this->app->singleton(SofortGateway::class, function ($app) {
return new SofortGateway($app['config']['sofort']);
});
event(new SofortTransactionProcessed($transaction));
projectId is part of webhook payloads, validate it in Laravel’s webhook listener:
if ($payload['projectId'] !== config('sofort.project_id')) {
abort(403, 'Invalid project ID');
}
create_function).projectId deprecation.projectId usage in a config check:
if (config('sofort.use_project_id')) {
$options['projectId'] = config('sofort.project_id');
}
projectId
projectId into transaction requests without disrupting current logic.projectId usage:
\Log::info('SOFORT transaction with projectId', ['projectId' => $projectId]);
projectId (e.g., 400 Bad Request).try {
$response = $gateway->charge($amount, $projectId);
} catch (SofortException $e) {
report($e);
throw new PaymentFailedException();
}
projectId is deprecated, plan a migration to Stripe’s native SDK or a forked package.projectId is a configurable addition → minimal changes needed.composer.lock for security patches.projectId-related errors (e.g., missing field, wrong format) may require debugging config.projectId validation failures (e.g., "Alert team within 1 hour of detection").projectId-related exceptions.projectId is a configurable payload field → no impact on scalability.ProcessSofortPayment::dispatch($amount, $projectId)->onQueue('payments');
How can I help you explore Laravel packages today?