Url () is not a fully qualified URL
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Most bizarre thing my PAYPAL SDK was working fine and then just stopped... most important it's intermittent...sometimes it processes the transaction sometimes it doesn't I have tried to log the living sh@@ out of my code and stil can't figure out what happened anyone can help?
<p[Removed. Phone #s not permitted]28:52] production.INFO: Received payment status request. {"request_data":{"checkout_type":"normal","paymentId":"PAYID-MU5ILLQ97Y87414M89180333","token":"EC-8CG89272NR3317133","PayerID":"YTC8Z2VQ9P82E"}}
\"id\": \"PAYID-MU5ILLQ97Y87414M89180333\",
\"intent\": \"sale\",
\"state\": \"approved\",
\"cart\": \"8CG89272NR3317133\",
\"payer\": {
\"payment_method\": \"paypal\",
\"status\": \"VERIFIED\",
\"payer_info\": {
\"email\": \"\",
\"first_name\": \"testmm\",
\"last_name\": \"buyer\",
\"payer_id\": \"YTC8Z2VQ9P82E\",
\"shipping_address\": {
\"recipient_name\": \"testmm buyer\",
\"id\": \"6948461615652027625\",
\"line1\": \"1 Main St\",
\"city\": \"San Jose\",
\"state\": \"CA\",
\"postal_code\": \"95131\",
\"country_code\": \"US\",
\"type\": \"HOME_OR_WORK\",
\"default_address\": false,
\"preferred_address\": true,
\"primary_address\": true,
\"disable_for_transaction\": false
},
\"country_code\": \"US\"
}
},
\"transactions\": [
{
\"amount\": {
\"total\": \"50.00\",
\"currency\": \"EUR\",
\"details\": {
\"subtotal\": \"50.00\",
\"shipping\": \"0.00\",
\"insurance\": \"0.00\",
\"handling_fee\": \"0.00\",
\"shipping_discount\": \"0.00\",
\"discount\": \"0.00\"
}
},
\"payee\": {
\"merchant_id\": \"CBJJDC847SYHQ\",
\"email\": \"\"
},
\"description\": \"file-tuning\",
\"item_list\": {
\"items\": [
{
\"name\": \"50.00 CRD\",
\"price\": \"50.00\",
\"currency\": \"EUR\",
\"tax\": \"0.00\",
\"quantity\": 1
}
],
\"shipping_address\": {
\"recipient_name\": \"testmm buyer\",
\"id\": \"6948461615652027625\",
\"line1\": \"1 Main St\",
\"city\": \"San Jose\",
\"state\": \"CA\",
\"postal_code\": \"95131\",
\"country_code\": \"US\",
\"type\": \"HOME_OR_WORK\",
\"default_address\": false,
\"preferred_address\": true,
\"primary_address\": true,
\"disable_for_transaction\": false
}
},
\"related_resources\": [
{
\"sale\": {
\"id\": \"2HD038396N1595005\",
\"state\": \"completed\",
\"amount\": {
\"total\": \"50.00\",
\"currency\": \"EUR\",
\"details\": {
\"subtotal\": \"50.00\",
\"shipping\": \"0.00\",
\"insurance\": \"0.00\",
\"handling_fee\": \"0.00\",
\"shipping_discount\": \"0.00\",
\"discount\": \"0.00\"
}
},
\"payment_mode\": \"INSTANT_TRANSFER\",
\"reason_code\": \"RECEIVING_PREFERENCE_MANDATES_MANUAL_ACTION\",
\"protection_eligibility\": \"ELIGIBLE\",
\"protection_eligibility_type\": \"ITEM_NOT_RECEIVED_ELIGIBLE,UNAUTHORIZED_PAYMENT_ELIGIBLE\",
\"receivable_amount\": {
\"value\": \"50.00\",
\"currency\": \"EUR\"
},
\"exchange_rate\": \"[Removed. Phone #s not permitted]",
\"parent_payment\": \"PAYID-MU5ILLQ97Y87414M89180333\",
\"create_time\": \"2023-10-26T15:28:54Z\",
\"update_time\": \"2023-10-26T15:28:54Z\",
\"links\": [
{
\"href\": \"https://api.sandbox.paypal.com/v1/payments/sale/2HD038396N1595005\",
\"rel\": \"self\",
\"method\": \"GET\"
},
{
\"href\": \"https://api.sandbox.paypal.com/v1/payments/sale/2HD038396N1595005/refund\",
\"rel\": \"refund\",
\"method\": \"POST\"
},
{
\"href\": \"https://api.sandbox.paypal.com/v1/payments/payment/PAYID-MU5ILLQ97Y87414M89180333\",
\"rel\": \"parent_payment\",
\"method\": \"GET\"
}
]
}
}
]
}
],
\"redirect_urls\": {
\"return_url\": \"/paypal/status/success?checkout_type=normal&paymentId=PAYID-MU5ILLQ97Y87414M89180333\",
\"cancel_url\": \"/paypal/status/cancel?checkout_type=normal\"
},
\"create_time\": \"2023-10-26T15:28:46Z\",
\"update_time\": \"2023-10-26T15:28:54Z\",
\"links\": [
{
\"href\": \"https://api.sandbox.paypal.com/v1/payments/payment/PAYID-MU5ILLQ97Y87414M89180333\",
\"rel\": \"self\",
\"method\": \"GET\"
}
],
\"failed_transactions\": []
}"}}
[stacktrace]
#0 /home/fsdfs52343534sfg/public_html/file_apps/vendor/paypal/rest-api-sdk-php/lib/PayPal/Api/Item.php(202): PayPal\\Validation\\UrlValidator::validate()
#1 /home/fsdfs52343534sfg/public_html/file_apps/vendor/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalModel.php(256): PayPal\\Api\\Item->setUrl()
#2 /home/fsdfs52343534sfg/public_html/file_apps/vendor/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalModel.php(244): PayPal\\Common\\PayPalModel->assignValue()
#3 /home/fsdfs52343534sfg/public_html/file_apps/vendor/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalModel.php(232): PayPal\\Common\\PayPalModel->fromArray()
#4 /home/fsdfs52343534sfg/public_html/file_apps/vendor/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalModel.php(223): PayPal\\Common\\PayPalModel->fromArray()
#5 /home/fsdfs52343534sfg/public_html/file_apps/vendor/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalModel.php(232): PayPal\\Common\\PayPalModel->fromArray()
#6 /home/fsdfs52343534sfg/public_html/file_apps/vendor/paypal/rest-api-sdk-php/lib/PayPal/Common/PayPalModel.php(270): PayPal\\Common\\PayPalModel->fromArray()
#7 /home/fsdfs52343534sfg/public_html/file_apps/vendor/paypal/rest-api-sdk-php/lib/PayPal/Api/Payment.php(652): PayPal\\Common\\PayPalModel->fromJson()
#8 /home/fsdfs52343534sfg/public_html/file_apps/app/Services/PayPalService.php(261): PayPal\\Api\\Payment->execute()
#9 /home/fsdfs52343534sfg/public_html/file_apps/app/Http/Controllers/Dashboard/CreditController.php(686): App\\Services\\PayPalService->getPaymentStatus()
#10 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): App\\Http\\Controllers\\Dashboard\\CreditController->paypalStatus()
#11 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction()
#12 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch()
#13 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#14 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Router.php(721): Illuminate\\Routing\\Route->run()
#15 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}()
#16 /home/fsdfs52343534sfg/public_html/file_apps/app/Http/Controllers/Dashboard/CreditController.php(52): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#17 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(149): App\\Http\\Controllers\\Dashboard\\CreditController->App\\Http\\Controllers\\Dashboard\\{closure}()
#18 /home/fsdfs52343534sfg/public_html/file_apps/app/Http/Middleware/CheckOtp.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#19 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\CheckOtp->handle()
#20 /home/fsdfs52343534sfg/public_html/file_apps/app/Http/Middleware/setCurrency.php(42): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#21 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\setCurrency->handle()
#22 /home/fsdfs52343534sfg/public_html/file_apps/app/Http/Middleware/IsVerified.php(23): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#23 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\IsVerified->handle()
#24 /home/fsdfs52343534sfg/public_html/file_apps/app/Http/Middleware/Authenticate.php(18): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#25 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\Authenticate->handle()
#26 /home/fsdfs52343534sfg/public_html/file_apps/app/Http/Middleware/Languages.php(23): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#27 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): App\\Http\\Middleware\\Languages->handle()
#28 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#29 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle()
#30 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(78): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#31 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\VerifyCsrfToken->handle()
#32 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#33 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle()
#34 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#35 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest()
#36 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle()
#37 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#38 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle()
#39 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#40 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle()
#41 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#42 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Router.php(723): Illuminate\\Pipeline\\Pipeline->then()
#43 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Router.php(698): Illuminate\\Routing\\Router->runRouteWithinStack()
#44 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Router.php(662): Illuminate\\Routing\\Router->runRoute()
#45 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Routing/Router.php(651): Illuminate\\Routing\\Router->dispatchToRoute()
#46 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch()
#47 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}()
#48 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#49 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#50 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle()
#51 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#52 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TrimStrings.php(40): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle()
#53 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\TrimStrings->handle()
#54 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#55 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle()
#56 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#57 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle()
#58 /home/fsdfs52343534sfg/public_html/file_apps/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#59 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle()
#60 /home/fsdfs52343534sfg/public_html/file_apps/vendor/fideloper/proxy/src/TrustProxies.php(57): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#61 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fideloper\\Proxy\\TrustProxies->handle()
#62 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#63 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then()
#64 /home/fsdfs52343534sfg/public_html/file_apps/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter()
#65 /home/fsdfs52343534sfg/public_html/index.php(52): Illuminate\\Foundation\\Http\\Kernel->handle()
#66 {main}
"}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Having exact same issue starting late yesterday.
I temporarily stopped the error by commenting out the code in rest-api-sdk-php/lib/PayPal/Validation/ UrlValidator.php
if (filter_var($url, FILTER_VALIDATE_URL) === false) {
//throw new \InvalidArgumentException("$urlName is not a fully qualified URL");
}
Hopefully PayPal will have more permanent fix ASAP.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
> Hopefully PayPal will have more permanent fix ASAP.
I doubt it. They're useless. And I think they've been trying to deprecate the REST API in favour of the Javascript-based Braintree for years.
We already planned to switch to Stripe, and will be prioritizing that more now.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have the same exact issue since yesterday. Getting error "Url is not a fully qualified URL" randomly while payments are being succesfully processed. Customers are getting angry.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It's worse than it seems. The payment goes through, but the customer is told that it failed, and invited to try again. Some customers have tried 3-4 times, and presumably been billed for each attempt. We will have to refund them, but take the hit on the seller fees, which is unacceptable, along with time taken that could have been spent gainfully.
There is no means of contacting PayPal. Would people be interested in pursuing a class action lawsuit against PayPal regarding this issue?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Had the same issue on two webshops of my Customers.
Instead of commenting out the Exception, i'll check if a empty element is give to the function, so on other cases (invalid URL) it should work as intended.
public static function validate($url, $urlName = null)
{
// Paypal added new empty items to the items object
// "url": "",
// "image_url": ""
// which crashed the payment
if (!empty($url) && filter_var($url, FILTER_VALIDATE_URL) === false) {
throw new \InvalidArgumentException("$url: $urlName is not a fully qualified URL");
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
> Instead of commenting out the Exception, i'll check if a empty element is give to the function, so on other cases (invalid URL) it should work as intended.
That won't fix the problem, which is caused by the URL being missing a hostname and scheme. E.g. PayPal returns `/checkout/complete?id=ABC` instead of `https://example.com/checkout/complete?id=ABC`. From the PHP doc:
> The FILTER_FLAG_SCHEME_REQUIRED and FILTER_FLAG_HOST_REQUIRED flags for the FILTER_VALIDATE_URL filter have been removed. The scheme and host are (and have been) always required.
So there is no option to use `filter_var` to allow the URL returned by PayPal to pass the test. The URL is not untrusted user input. All this test is doing is helping diagnose a programming error in which you (or in this case PayPal) are not supplying a fully-qualified URL, mitigating against a harder-to-diagnose failure downstream. So it is not required, but may be useful during development.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is 100% an issue from PayPal servers that started on October 25, 2023, mid-day eastern time.
If that is not enough info to fix the issue, then IO am not sure what else to do 🤷♂️

Haven't Found your Answer?
It happens. Hit the "Login to Ask the community" button to create a question for the PayPal community.
- If I don't capture within the 3 hour limit, how can I be sure that the payment went through? in REST APIs
- Need advice on Account / Donations / Payouts / technical issues in Sandbox Environment
- PayPalWebPayments - Shipping Address Change in SDKs
- Does the PayPal Checkout Standard integration support Apple Pay and Google Pay out of the box? in REST APIs
- sandbox email configuration in Sandbox Environment