VirtueMart Forum

VirtueMart 2 + 3 + 4 => Virtuemart Development and bug reports => Topic started by: razor7 on December 07, 2023, 15:19:22 PM

Title: Issues with new PayPal Checkout plugin
Post by: razor7 on December 07, 2023, 15:19:22 PM
Hi!

Just finished new PayPal checkout plugin onboarding, accessed my paypal account through the onboarding popup and allowed iStraxx UG (haftungsbeschränkt) connection (or something like that), then after saving no fields where populated and the following issue displayed in the plugin edit view.

Currently I'm using php 8.0.12 and J 4.4.1

You can find attached the paypal edit screen, blurred data was data introduced by me.

PS: After the onboarding popup finished, I didn't see any config options or so, just a link to access my PP account, which I did, then in the PP account I was able to obtain my api credentials.

0 vmTrace There was an error get/post https://api-m.paypal.com/v1/customer/partners/WBA3Y7FQXGVW4/merchant-integrations/ Code: 400 sent headers: Var0:

Joomla\Registry\Registry Object
(
    [data:protected] => stdClass Object
        (
            [transport] => stdClass Object
                (
                    [curl] => Array
                        (
                            [64] =>
                            [81] =>
                            [10004] =>
                            [10006] =>
                        )

                )

            [headers] => Array
                (
                    [Content-Type] => application/json
                    [Authorization] => Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXry72OWdxSby_VPNXXXXXXXXXXXBDeIh-fw63hBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXx-XXXXX
                    [PayPal-Partner-Attribution-Id] => VirtueMart_Cart_PPCP
                    [userAgent] => VirtueMart.10925
                )

            [userAgent] => Mozilla/5.0 Joomla!/4.4.1 Joomla
        )

    [initialized:protected] =>
    [separator:protected] => .
)

Array
(
    [0] => __construct
    [1] => __clone
    [2] => __toString
    [3] => count
    [4] => jsonSerialize
    [5] => def
    [6] => exists
    [7] => get
    [8] => getIterator
    [9] => loadArray
    [10] => loadObject
    [11] => loadFile
    [12] => loadString
    [13] => merge
    [14] => extract
    [15] => offsetExists
    [16] => offsetGet
    [17] => offsetSet
    [18] => offsetUnset
    [19] => set
    [20] => append
    [21] => remove
    [22] => toArray
    [23] => toObject
    [24] => toString
    [25] => flatten
    [26] => __get
    [27] => __set
)

recieved: Var0:

Joomla\CMS\Http\Response Object
(
    [phrases:Laminas\Diactoros\Response:private] => Array
        (
            [100] => Continue
            [101] => Switching Protocols
            [102] => Processing
            [103] => Early Hints
            [200] => OK
            [201] => Created
            [202] => Accepted
            [203] => Non-Authoritative Information
            [204] => No Content
            [205] => Reset Content
            [206] => Partial Content
            [207] => Multi-Status
            [208] => Already Reported
            [226] => IM Used
            [300] => Multiple Choices
            [301] => Moved Permanently
            [302] => Found
            [303] => See Other
            [304] => Not Modified
            [305] => Use Proxy
            [306] => Switch Proxy
            [307] => Temporary Redirect
            [308] => Permanent Redirect
            [400] => Bad Request
            [401] => Unauthorized
            [402] => Payment Required
            [403] => Forbidden
            [404] => Not Found
            [405] => Method Not Allowed
            [406] => Not Acceptable
            [407] => Proxy Authentication Required
            [408] => Request Timeout
            [409] => Conflict
            [410] => Gone
            [411] => Length Required
            [412] => Precondition Failed
            [413] => Payload Too Large
            [414] => URI Too Long
            [415] => Unsupported Media Type
            [416] => Range Not Satisfiable
            [417] => Expectation Failed
            [418] => I'm a teapot
            [421] => Misdirected Request
            [422] => Unprocessable Entity
            [423] => Locked
            [424] => Failed Dependency
            [425] => Too Early
            [426] => Upgrade Required
            [428] => Precondition Required
            [429] => Too Many Requests
            [431] => Request Header Fields Too Large
            [444] => Connection Closed Without Response
            [451] => Unavailable For Legal Reasons
            [499] => Client Closed Request
            [500] => Internal Server Error
            [501] => Not Implemented
            [502] => Bad Gateway
            [503] => Service Unavailable
            [504] => Gateway Timeout
            [505] => HTTP Version Not Supported
            [506] => Variant Also Negotiates
            [507] => Insufficient Storage
            [508] => Loop Detected
            [510] => Not Extended
            [511] => Network Authentication Required
            [599] => Network Connect Timeout Error
        )

    [reasonPhrase:Laminas\Diactoros\Response:private] => Bad Request
    [statusCode:Laminas\Diactoros\Response:private] => 400
    [headers:protected] => Array
        (
            [Connection] => Array
                (
                    [0] => keep-alive
                )

            [Content-Length] => Array
                (
                    [0] => 82
                )

            [Cache-Control] => Array
                (
                    [0] => max-age=0, no-cache, no-store, must-revalidate
                )

            [Content-Type] => Array
                (
                    [0] => application/json
                )

            [Paypal-Debug-Id] => Array
                (
                    [0] => ea55343aad89d
                )

            [Set-Cookie] => Array
                (
                    [0] => l7_az=ccg01.phx; Path=/; Domain=paypal.com; Expires=Thu, 07 Dec 2023 14:34:03 GMT; HttpOnly; Secure
                )

            [Traceparent] => Array
                (
                    [0] => 00-0000000000000000000ea55343aad89d-112857789ceb04b3-01
                )

            [Accept-Ranges] => Array
                (
                    [0] => bytes
                )

            [Via] => Array
                (
                    [0] => 1.1 varnish, 1.1 varnish
                )

            [Edge-Control] => Array
                (
                    [0] => max-age=0
                )

            [Date] => Array
                (
                    [0] => Thu, 07 Dec 2023 14:04:03 GMT
                )

            [Strict-Transport-Security] => Array
                (
                    [0] => max-age=63072000; includeSubDomains; preload
                )

            [X-Served-By] => Array
                (
                    [0] => cache-gru-sbgr1930037-GRU, cache-eze2230062-EZE
                )

            [X-Cache] => Array
                (
                    [0] => MISS, MISS
                )

            [X-Cache-Hits] => Array
                (
                    [0] => 0, 0
                )

            [X-Timer] => Array
                (
                    [0] => S1701957843.385340,VS0,VE311
                )

            [Vary] => Array
                (
                    [0] => Accept-Encoding
                )

        )

    [headerNames:protected] => Array
        (
            [connection] => Connection
            [content-length] => Content-Length
            [cache-control] => Cache-Control
            [content-type] => Content-Type
            [paypal-debug-id] => Paypal-Debug-Id
            [set-cookie] => Set-Cookie
            [traceparent] => Traceparent
            [accept-ranges] => Accept-Ranges
            [via] => Via
            [edge-control] => Edge-Control
            [date] => Date
            [strict-transport-security] => Strict-Transport-Security
            [x-served-by] => X-Served-By
            [x-cache] => X-Cache
            [x-cache-hits] => X-Cache-Hits
            [x-timer] => X-Timer
            [vary] => Vary
        )

    [protocol:Laminas\Diactoros\Response:private] => 1.1
    [stream:Laminas\Diactoros\Response:private] => Laminas\Diactoros\Stream Object
        (
            [resource:protected] => Resource id #139
            [stream:protected] => php://memory
        )

    [body] => stdClass Object
        (
            [name] => VALIDATION_ERROR
            [message] => Invalid request
            [debug_id] => ea55343aad89d
        )

)

Array
(
    [0] => __get
    [1] => __construct
    [2] => getStatusCode
    [3] => getReasonPhrase
    [4] => withStatus
    [5] => getProtocolVersion
    [6] => withProtocolVersion
    [7] => getHeaders
    [8] => hasHeader
    [9] => getHeader
    [10] => getHeaderLine
    [11] => withHeader
    [12] => withAddedHeader
    [13] => withoutHeader
    [14] => getBody
    [15] => withBody
)

#0  vmTrace() called at [/home/c2041823/public_html/plugins/vmpayment/paypal_checkout/helpers/ppc_token.php:157]
#1  PayPalToken::sendCURL() called at [/home/c2041823/public_html/plugins/vmpayment/paypal_checkout/helpers/ppc_onboarding.php:123]
#2  PayPalOnboarding::checkMerchant() called at [/home/c2041823/public_html/plugins/vmpayment/paypal_checkout/paypal_checkout.php:1267]
#3  plgVmPaymentPaypal_checkout->OnStoreInstallPluginTable() called at [/home/c2041823/public_html/administrator/components/com_virtuemart/helpers/vdispatcher.php:75]
#4  vDispatcher::directTrigger() called at [/home/c2041823/public_html/administrator/components/com_virtuemart/models/paymentmethod.php:248]
#5  VirtueMartModelPaymentmethod->store() called at [/home/c2041823/public_html/administrator/components/com_virtuemart/helpers/vmcontroller.php:178]
#6  VmController->save() called at [/home/c2041823/public_html/administrator/components/com_virtuemart/controllers/paymentmethod.php:52]
#7  VirtuemartControllerPaymentmethod->save() called at [/home/c2041823/public_html/libraries/src/MVC/Controller/BaseController.php:693]
#8  Joomla\CMS\MVC\Controller\BaseController->execute() called at [/home/c2041823/public_html/administrator/components/com_virtuemart/virtuemart.php:77]
#9  require_once(/home/c2041823/public_html/administrator/components/com_virtuemart/virtuemart.php) called at [/home/c2041823/public_html/libraries/src/Dispatcher/LegacyComponentDispatcher.php:71]

1 vmdebug setIdByRequest Var0:

virtuemart_user_id

2 vmdebug Model VirtueMartModelUser no id in request virtuemart_user_id
3 vmdebug Get user, setIdByRequest 0
4 vmdebug Get user id 0
5 vmdebug my $methods Var0:

1

6 vmdebug PayPal sendCURL my URL https://api-m.paypal.com/v1/notifications/webhooks Var0:

7 vmdebug PayPal sendCURL my result by getHttp Var0:

stdClass Object
(
    [webhooks] => Array
        (
            [0] => stdClass Object
                (
                    [id] => 3J982441WA250204E
                    [url] => https://XXXXXXXXXXXXXXXXXXXXXXXXX.com/index.php?option=com_virtuemart&view=plugin&vmtype=vmpayment&name=paypal_checkout&task=webhook
                    [event_types] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [name] => CHECKOUT.ORDER.APPROVED
                                    [description] => An order has been approved by buyer.
                                    [status] => ENABLED
                                )

                            [1] => stdClass Object
                                (
                                    [name] => CHECKOUT.ORDER.COMPLETED
                                    [description] => Webhook event emitted after all the purchase_units have been processed
                                    [status] => ENABLED
                                )

                            [2] => stdClass Object
                                (
                                    [name] => CHECKOUT.PAYMENT-APPROVAL.REVERSED
                                    [description] => Payment approval has been reversed.
                                    [status] => ENABLED
                                )

                            [3] => stdClass Object
                                (
                                    [name] => MERCHANT.PARTNER-CONSENT.REVOKED
                                    [description] => The consents for a merchant account setup are revoked or an account is closed.
                                    [status] => ENABLED
                                )

                            [4] => stdClass Object
                                (
                                    [name] => PAYMENT.AUTHORIZATION.CREATED
                                    [description] => A payment authorization is created, approved, executed, or a future payment authorization is created.
                                    [status] => ENABLED
                                )

                            [5] => stdClass Object
                                (
                                    [name] => PAYMENT.AUTHORIZATION.VOIDED
                                    [description] => A payment authorization is voided.
                                    [status] => ENABLED
                                )

                            [6] => stdClass Object
                                (
                                    [name] => PAYMENT.CAPTURE.COMPLETED
                                    [description] => A payment capture completes.
                                    [status] => ENABLED
                                )

                            [7] => stdClass Object
                                (
                                    [name] => PAYMENT.CAPTURE.DENIED
                                    [description] => A payment capture is denied.
                                    [status] => ENABLED
                                )

                            [8] => stdClass Object
                                (
                                    [name] => PAYMENT.CAPTURE.PENDING
                                    [description] => The state of a payment capture changes to pending.
                                    [status] => ENABLED
                                )

                            [9] => stdClass Object
                                (
                                    [name] => PAYMENT.CAPTURE.REFUNDED
                                    [description] => A merchant refunds a payment capture.
                                    [status] => ENABLED
                                )

                            [10] => stdClass Object
                                (
                                    [name] => PAYMENT.CAPTURE.REVERSED
                                    [description] => PayPal reverses a payment capture.
                                    [status] => ENABLED
                                )

                        )

                    [links] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [href] => https://api.paypal.com/v1/notifications/webhooks/3J982441WA250204E
                                    [rel] => self
                                    [method] => GET
                                )

                            [1] => stdClass Object
                                (
                                    [href] => https://api.paypal.com/v1/notifications/webhooks/3J982441WA250204E
                                    [rel] => update
                                    [method] => PATCH
                                )

                            [2] => stdClass Object
                                (
                                    [href] => https://api.paypal.com/v1/notifications/webhooks/3J982441WA250204E
                                    [rel] => delete
                                    [method] => DELETE
                                )

                        )

                )

        )

)

9 vmdebug vmInfo: All Webhooks set
10 vmdebug my $SQLfields Var0:

Array
(
    [id] => int(11) UNSIGNED NOT NULL AUTO_INCREMENT
    [virtuemart_order_id] => int(1) UNSIGNED
    [order_number] => char(64)
    [virtuemart_paymentmethod_id] => mediumint(1) UNSIGNED
    [payment_name] => varchar(600)
    [payment_order_total] => decimal(15,5) NOT NULL
    [payment_currency] => smallint(1)
    [ppOrderId] => varchar(100)
    [capture_id] => varchar(100)
    [authorize_id] => varchar(100)
    [cost_per_transaction] => decimal(10,2)
    [cost_percent_total] => decimal(10,2)
    [body] => varchar(10000)
)

11 vmdebug my update Var0:

Array
(
    [#__virtuemart_payment_plg_paypal_checkout] => Array
        (
            [0] => Array
                (
                    [id] => int(11) UNSIGNED NOT NULL AUTO_INCREMENT
                    [virtuemart_order_id] => int(1) UNSIGNED
                    [order_number] => char(64)
                    [virtuemart_paymentmethod_id] => mediumint(1) UNSIGNED
                    [payment_name] => varchar(600)
                    [payment_order_total] => decimal(15,5) NOT NULL
                    [payment_currency] => smallint(1)
                    [ppOrderId] => varchar(100)
                    [capture_id] => varchar(100)
                    [authorize_id] => varchar(100)
                    [cost_per_transaction] => decimal(10,2)
                    [cost_percent_total] => decimal(10,2)
                    [body] => varchar(10000)
                    [created_on] => datetime
                    [created_by] => int(11) NOT NULL DEFAULT '0'
                    [modified_on] => datetime
                    [modified_by] => int(11) NOT NULL DEFAULT '0'
                    [locked_on] => datetime
                    [locked_by] => int(11) NOT NULL DEFAULT '0'
                )

            [1] => Array
                (
                    [id] => PRIMARY KEY (`id`)
                    [virtuemart_order_id] => KEY (`virtuemart_order_id`)
                )

            [2] => Array
                (
                )

        )

)

12 vmdebug My Memory Limit in MB 507
14 vmdebug vmInfo: alterTable DROP INDEX d49zm0h7_virtuemart_payment_plg_paypal_checkout.virtuemart_order_id
16 vmdebug vmInfo: alterKey ADD INDEX virtuemart_order_id
18 vmdebug vmInfo: Método de pago successfully saved
19 vmdebug vmTime: "VirtueMartControllerPaymentmethod" Finished task apply: 2.43842697143555
20 vmdebug End used Ram 8M
21 vmdebug Peak memory peak 8M
Title: Re: Issues with new PayPal Checkout plugin
Post by: rdcustom on December 15, 2023, 13:39:27 PM
same problem here
Title: Re: Issues with new PayPal Checkout plugin
Post by: rdcustom on January 18, 2024, 09:52:16 AM
up
Title: Re: Issues with new PayPal Checkout plugin
Post by: Gingerweb on January 19, 2024, 17:01:05 PM
same here - 100% only happens in VirtueMart 4.2.4 10922 - rolled back and all working fine
Title: Re: Issues with new PayPal Checkout plugin
Post by: rdcustom on January 21, 2024, 11:31:44 AM
this forum seems to be dead... no answers, no support...
Title: Re: Issues with new PayPal Checkout plugin
Post by: MAD King on January 24, 2024, 17:13:50 PM
I have the same problem on a new installation.
Seems that VM is dying. No support anymore the all the problems and bugs.
No update for months.

VirtueMart 4.2.4 10922
Joomla 4.2.2
Title: Re: Issues with new PayPal Checkout plugin
Post by: Milbo on February 06, 2024, 19:37:49 PM
I dont get you guys. Why do you say that VirtueMart dies? If you want that it dies, tell the world that it dies. But it is a lie.

I told you often. I cannot answer in the forum and do the development. Makes sense, eh? and it makes also not fun to answer grumpy people, who just see their part and expet the worst from the other. that is not cooperative, guys. What you do is badmouthing and you should know better.

Here read the news and you should notice, that we worked really hard the last months. It makes no sense to release a buggy version. So the release was meant for christmas, but we still found small errors here and there.

and you can see, that a lot development was done for Paypal, weeks,... and the error above should be solved by this
- PayPal Checkout, replaced all cUrl against VmConnector::getHttp

https://virtuemart.net/news/virtuemart-for-joomla-5
Title: Re: Issues with new PayPal Checkout plugin
Post by: Gingerweb on February 07, 2024, 09:59:38 AM
Quote from: Milbo on February 06, 2024, 19:37:49 PM

and you can see, that a lot development was done for Paypal, weeks,... and the error above should be solved by this
- PayPal Checkout, replaced all cUrl against VmConnector::getHttp

Thanks! Is this Paypal issue fixed in VM 4.2.6 Milbo?
Title: Re: Issues with new PayPal Checkout plugin
Post by: Milbo on February 08, 2024, 17:23:30 PM
Should be fixed, if not,  let me take a look whats going wrong in your case.
Title: Re: Issues with new PayPal Checkout plugin
Post by: Gingerweb on February 09, 2024, 18:38:33 PM
Quote from: Milbo on February 08, 2024, 17:23:30 PM
Should be fixed, if not,  let me take a look whats going wrong in your case.

yes confirmed it is fixed in my installation once i update the VM to 4.2.6 10972
many thanks
Title: Re: Issues with new PayPal Checkout plugin
Post by: Milbo on February 10, 2024, 23:15:27 PM
Great,

so it works now for you. Did you notice the new features/fixes?
Title: Re: Issues with new PayPal Checkout plugin
Post by: Gingerweb on February 11, 2024, 10:55:08 AM
Quote from: Milbo on February 10, 2024, 23:15:27 PM
so it works now for you. Did you notice the new features/fixes?

For the Paypal plugin? It is different, seems you now login to PP and go through payment then come back to the shop to "confirm purchase" - different definitely but seems to work!
Thanks for all you do for VM, great job!
Title: Re: Issues with new PayPal Checkout plugin
Post by: geraldb on February 19, 2024, 10:06:26 AM
Joomla: 4.4.2 VM: 4.2.6 10126
Hello dear forum team

During the payment process you get the following error message. See appendix. I think it has to do with the update to the current version.

After clicking on PayPal Checkout, a popup with a white background appears. When you close it, the normal PayPal dialog appears.



Does anything need to be changed in the settings after the update?
Title: Re: Issues with new PayPal Checkout plugin
Post by: audiorock on March 18, 2024, 12:04:08 PM
Quote from: geraldb on February 19, 2024, 10:06:26 AMJoomla: 4.4.2 VM: 4.2.6 10126
Hello dear forum team

During the payment process you get the following error message. See appendix. I think it has to do with the update to the current version.

After clicking on PayPal Checkout, a popup with a white background appears. When you close it, the normal PayPal dialog appears.



Does anything need to be changed in the settings after the update?


Hi, I have same problem in my site.

There is the solution?
Title: Re: Issues with new PayPal Checkout plugin
Post by: Milbo on March 19, 2024, 21:44:38 PM
I am still fighting that it does not work sometimes. One customer has the problem, it works on his development server, but not on the live server. I write a pn to you, then you can contact me via skype and maybe we can find the culprit.
Title: Re: Issues with new PayPal Checkout plugin
Post by: audiorock on March 21, 2024, 22:22:07 PM
I solved the problem by activating the "cross-origin-opener-policy" in the HTTP Header plugin as shown in the figure.

This solution may be useful to some other users

Bye Bye.

immagine_2024-03-21_221900005.png
Title: Re: Issues with new PayPal Checkout plugin
Post by: TheThingIs on March 25, 2024, 17:19:45 PM
Interesting.

That plugin is disabled on an upgrade J3 to J4, and it is enabled on new installations of J4, do you have the same error with the plugin disabled?
Title: Re: Issues with new PayPal Checkout plugin
Post by: audiorock on March 28, 2024, 11:23:54 AM
Quote from: TheThingIs on March 25, 2024, 17:19:45 PMInteresting.

That plugin is disabled on an upgrade J3 to J4, and it is enabled on new installations of J4, do you have the same error with the plugin disabled?

these parameters could also be present on the server side (.htaccess)
these configurations concern http headers
If the plugin is deactivated and you still encounter the problem, check the server side.