Giter Club home page Giter Club logo

magento-2's People

Contributors

andrepayone avatar anton-levitsky avatar berwa avatar davidlambauer avatar davidverholen avatar espressobytes avatar fatchip-gmbh avatar fatchip-stefan avatar fatchiprobert avatar fjbender avatar gerritpechmann avatar hreinberger avatar janteuber avatar josefbehr avatar jvarelmann avatar markusmichalski-fc avatar matthiashamacher avatar mborkowski avatar mfickers avatar nether-cat avatar niclashoyer avatar nicolasbachmaier avatar pankajlele avatar ptylek avatar riconeitzel avatar sippsolutions avatar sp0ng3b0b avatar splendidinternet avatar t-kuchel avatar torhoehn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

magento-2's Issues

PayPal fails on pre-authorization | working on direct-authorization

Hi there ;)

Magento 2.1.5
PayOne Extension in most recent version.
Payment Method: PayPal

If I switch the authorization method to "pre-authorization" the redirect back to the shop fails.
After successfully logging in at paypal and confirming the payment I should see a redirect to the checkout success page, but instead I see the checkout page (step 1) again without any error message. The Payone Response status is: "REDIRECT" and I don't see any error message or error code and the order status is cancelled.
Payone status: 902 (Unbekannter Fehler bei externem Dienstleister.)

Everything is fine, if I select "authorization" as authorization mode.

Do you have any idea, or need further information about my configuration settings?

Thank you in advance!

Integration tests fail because of wrong module sequence

When running integration tests on a project with this module it will fail with the message:

Base table or view not found: 1146 Table 'integration_test.quote_address' doesn't exist, query was: DESCRIBE quote_address

Since there is no sequence defined, this modules setup is run very early and fails because quote tables have not been created yet.
Adding Magento_Quote to the sequence fixes the problem (Should probably also add Magento_Sales since order tables are being changed to be more correct).

Would be really helpful since it should not break anything and there is no way to add a sequence to another module as far as I know.

Undifined Index on Checkout, Magento 2.0.4

We've installed your module on a Magento 2.0.4 system. When we're trying to access the checkout we get an error:

Notice: Undefined index: Number_type in /home/stage/public_html/app/code/Payone/Core/Helper/HostedIframe.php on line 100
#0 /home/stage/public_html/app/code/Payone/Core/Helper/HostedIframe.php(100): Magento\Framework\App\ErrorHandler->handler(8, 'Undefined index...', '/home/atroposst...', 100, Array)
#1 /home/stage/public_html/app/code/Payone/Core/Helper/HostedIframe.php(123): Payone\Core\Helper\HostedIframe->getFieldConfigField('cardpan', 'Number')
#2 /home/stage/public_html/app/code/Payone/Core/Helper/HostedIframe.php(160): Payone\Core\Helper\HostedIframe->getFieldConfig()
#3 /home/stage/public_html/app/code/Payone/Core/Model/ConfigProvider.php(148): Payone\Core\Helper\HostedIframe->getHostedFieldConfig()
#4 /home/stage/public_html/vendor/magento/module-checkout/Model/CompositeConfigProvider.php(32): Payone\Core\Model\ConfigProvider->getConfig()
#5 /home/stage/public_html/vendor/magento/module-checkout/Block/Onepage.php(91): Magento\Checkout\Model\CompositeConfigProvider->getConfig()
#6 /home/stage/public_html/vendor/magento/module-checkout/view/frontend/templates/onepage.phtml(26): Magento\Checkout\Block\Onepage->getCheckoutConfig()
#7 /home/stage/public_html/vendor/magento/framework/View/TemplateEngine/Php.php(59): include('/home/atroposst...')
#8 /home/stage/public_html/vendor/magento/framework/View/Element/Template.php(255): Magento\Framework\View\TemplateEngine\Php->render(Object(Magento\Checkout\Block\Onepage), '/home/atroposst...', Array)
#9 /home/stage/public_html/vendor/magento/framework/View/Element/Template.php(279): Magento\Framework\View\Element\Template->fetchView('/home/atroposst...')
#10 /home/stage/public_html/vendor/magento/framework/View/Element/AbstractBlock.php(657): Magento\Framework\View\Element\Template->_toHtml()
#11 /home/stage/public_html/vendor/magento/framework/View/Layout.php(542): Magento\Framework\View\Element\AbstractBlock->toHtml()
#12 /home/stage/public_html/vendor/magento/framework/View/Layout.php(518): Magento\Framework\View\Layout->_renderBlock('checkout.root')
#13 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('checkout.root')
#14 /home/stage/public_html/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('checkout.root')
#15 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('checkout.root', true)
#16 /home/stage/public_html/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('checkout.root')
#17 /home/stage/public_html/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('content')
#18 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('content')
#19 /home/stage/public_html/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('content')
#20 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('content', true)
#21 /home/stage/public_html/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('content')
#22 /home/stage/public_html/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('main')
#23 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('main')
#24 /home/stage/public_html/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main')
#25 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('main', true)
#26 /home/stage/public_html/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('main')
#27 /home/stage/public_html/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('columns')
#28 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('columns')
#29 /home/stage/public_html/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('columns')
#30 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('columns', true)
#31 /home/stage/public_html/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('columns')
#32 /home/stage/public_html/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('main.content')
#33 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('main.content')
#34 /home/stage/public_html/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('main.content')
#35 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('main.content', true)
#36 /home/stage/public_html/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('main.content')
#37 /home/stage/public_html/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('page.wrapper')
#38 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('page.wrapper')
#39 /home/stage/public_html/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('page.wrapper')
#40 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('page.wrapper', true)
#41 /home/stage/public_html/vendor/magento/framework/View/Layout.php(569): Magento\Framework\View\Layout\Interceptor->renderElement('page.wrapper')
#42 /home/stage/public_html/vendor/magento/framework/View/Layout.php(520): Magento\Framework\View\Layout->_renderContainer('root')
#43 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(206): Magento\Framework\View\Layout->renderNonCachedElement('root')
#44 /home/stage/public_html/vendor/magento/framework/View/Layout.php(472): Magento\Framework\View\Layout\Interceptor->renderNonCachedElement('root')
#45 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(193): Magento\Framework\View\Layout->renderElement('root', true)
#46 /home/stage/public_html/vendor/magento/framework/View/Layout.php(938): Magento\Framework\View\Layout\Interceptor->renderElement('root')
#47 [internal function]: Magento\Framework\View\Layout->getOutput()
#48 /home/stage/public_html/vendor/magento/framework/Interception/Interceptor.php(144): call_user_func_array(Array, Array)
#49 /home/stage/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(494): Magento\Framework\View\Layout\Interceptor->___callPlugins('getOutput', Array, Array)
#50 /home/stage/public_html/vendor/magento/framework/View/Result/Page.php(241): Magento\Framework\View\Layout\Interceptor->getOutput()
#51 /home/stage/public_html/vendor/magento/framework/View/Result/Layout.php(162): Magento\Framework\View\Result\Page->render(Object(Magento\Framework\App\Response\Http\Interceptor))
#52 [internal function]: Magento\Framework\View\Result\Layout->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#53 /home/stage/public_html/vendor/magento/framework/Interception/Interceptor.php(74): call_user_func_array(Array, Array)
#54 /home/stage/public_html/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\View\Result\Page\Interceptor->___callParent('renderResult', Array)
#55 /home/stage/public_html/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderResult', Object(Magento\Framework\View\Result\Page\Interceptor), Array, 'result-varnish-...')
#56 /home/stage/public_html/vendor/magento/module-page-cache/Model/Controller/Result/VarnishPlugin.php(74): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#57 [internal function]: Magento\PageCache\Model\Controller\Result\VarnishPlugin->aroundRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Closure), Object(Magento\Framework\App\Response\Http\Interceptor))
#58 /home/stage/public_html/vendor/magento/framework/Interception/Chain/Chain.php(67): call_user_func_array(Array, Array)
#59 /home/stage/public_html/vendor/magento/framework/Interception/Interceptor.php(136): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'renderResult', Object(Magento\Framework\View\Result\Page\Interceptor), Array, 'result-builtin-...')
#60 /home/stage/public_html/vendor/magento/module-page-cache/Model/Controller/Result/BuiltinPlugin.php(67): Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Response\Http\Interceptor))
#61 [internal function]: Magento\PageCache\Model\Controller\Result\BuiltinPlugin->aroundRenderResult(Object(Magento\Framework\View\Result\Page\Interceptor), Object(Closure), Object(Magento\Framework\App\Response\Http\Interceptor))
#62 /home/stage/public_html/vendor/magento/framework/Interception/Interceptor.php(140): call_user_func_array(Array, Array)
#63 /home/stage/public_html/var/generation/Magento/Framework/View/Result/Page/Interceptor.php(130): Magento\Framework\View\Result\Page\Interceptor->___callPlugins('renderResult', Array, Array)
#64 /home/stage/public_html/vendor/magento/framework/App/Http.php(119): Magento\Framework\View\Result\Page\Interceptor->renderResult(Object(Magento\Framework\App\Response\Http\Interceptor))
#65 /home/stage/public_html/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#66 /home/stage/public_html/index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#67 {main}

magento 2.1 version constraints

I just tried to install the dev-master version. There is a problem with installing it on magento 2.1.2.

Magento 2.1 requires magento/module-framework 100.1.2 and the payone module requires 100.0.*
Same problem for the magento/module-store extension.

To make it installable with magento 2.1 via composer (if 2.1 is supported) you have to change the constraints in the composer.json

for example:

{
    "name": "payone-gmbh/magento-2",
    "description": "PAYONE FinanceGate payment gateway for all german online and offline payment methods including PayPal, all major Credit Cards and Maestro.",
    "type": "magento2-module",
    "version": "1.2.2",
    "license": [
      "OSL-3.0",
      "AFL-3.0"
    ],
    "require": {
        "php": "~5.5.0|~5.6.0|~7.0.0",
        "magento/framework": "^100.0.0",
        "magento/module-store": "^100.0.0"
    },
    "autoload": {
        "files": [
            "registration.php"
        ],
        "psr-4": {
            "Payone\\Core\\": ""
        }
    }
}

the ^ constraint operator allows increasing the minor and bugfix version but not the major version

Offline capture for preauthorization disables creditmemo.

I found this piece of Code in Observer:

$oInvoice->setRequestedCaptureCase(Invoice::CAPTURE_OFFLINE);
-> this is fix in Observer\Transactionstatus\Paid.php!!

But if invoice is captured offline for advance_payment - I could not do creditmemo because invoiced status will not arrive in pmi. Set this to CAPTURE_ONLINE sends information to pmi an I can do a creditmemo, but I get message 907 - An error occured while processing this transaction (wrong parameters) when I try do make a creditmemo with less than the complete invoice items (i.e. creditmemo for 2 of three parts)

Wenn ich als Kunde eine Paypal Bestellung abbreche, wird der Warenkorb gelehrt.

Schritte zur Reproduktion:

  1. Einen Artikel in den Warenkorb legen und zur Kasse gehen.
  2. Bei der Kasse Zahlungsart PayPal auswählen.
  3. Warten bis die Seite von PayPal fertig geladen hat und anschließend auf zurück gehen.

Aktuelles Verhalten:

Man kommt wieder auf die Shop-Seite, allerdings mit der Meldung der Warenkorb ist leer.

Erwartetes Verhalten:

Der Warenkorb enthält die Artikel, die ich zuvor hineingelegt habe.

Advance Payment not automatically captured

When paying with advance payment, an invoice is created when the customer pays. Order is marked as fully paid and goes into processing however the payment is not really captured.

Is there a reason why it does not capture automatically? Maybe I am missing some configuration. Having to manually confirm hundreds of payments each day is not a very good solution.

Create order from Admin

When I want to create an order from admin I can select all available payment methods. But whichever I select there are no additional form elements displayed (bank country, iban, cc,...).

Creating a new non-payone creditmemo shows exception

When I try to create a creditmemo for an order not paid by a Payone payment I get an Invalid Method exception.
1 exception(s): Exception #0 (Magento\Framework\Exception\LocalizedException): Invalid method Magento\OfflinePayments\Model\Banktransfer\Interceptor::needsSepaDataOnDebit

Magento version: 2.2
Module version: commit beb4103
Only stops working in Developer mode, in Production it just logs the error but the error is still there.

see:

Missing default value for payone_general/global/request_type

Hi!
Low priority issue.
There is no default value given for xpath payone_general/global/request_type in etc/config.xml (no such node).
If you configure payone only for one website for instance (no global values in core_config_data) and take what you see for granted (the config source model shows a "preauthorization" default - see attached image) ... no request_type is sent and thus you end up with the API errormessage | Parameter {request} faulty or missing.
bildschirmfoto 2017-07-19 um 15 35 12

I suggest you either provide a default value in the config.xml or make the <source_model>Payone\Core\Model\Source\RequestType</source_model> return an additional empty value to show the request_type config field is "required".

Fehlermeldung nur auf englisch

Wenn man im letzten Checkout-Schritt falsche Kreditkarten-Daten angibt, erscheint eine Fehlermeldung vom Payone-Server, z.B.:

Invalid card number. Please verify your card data.

Der Text kommt aus dem javascript des iFrames.

Gibt es die Möglichkeit, dass diese in deutscher Sprache erscheint?
Oder ist dies ein Bug?

PHP 7.1 compatibility

Shouldn't be a big issue, but I haven't gotten around to test it yet. This is a reminder for me.

Can't place order with Creditcard when JS is merged/minifed/bundled

Preconditions

  • Store is in production mode
  • Javascript is merged/minified/bundled: Stores->Configuration->(Advanced)Developer->Javascript settings
  • Magento v2.1.6 (with sample data)
  • module v1.3.5

In the checkout, choosing creditcard and placing an order will not work. The fullscreen loader is started, one ajax request is made (to secure.pay1.de) but nothing else happens. There are no javascript errors.
The same works if the javascript is not merged/minified.

I had a quick look and my best guess is that it doesn't work because function processPayoneResponseCCHosted(response) is not accessible when merging/bundling is enabled.
This is the function that leads to the redirect being made and if I try to call this function in browsers console it does not exist in merged/bundled mode.

This function is defined here

Migration Magento2 Mapping etc

Hi
is there a plan for doing migration from magento1 (1.9.3.2) and latest payone extension to magento 2.1.4?
I need information for mapping etc
Thanks
michael

Can't install

with compose i got these problems:
payone-gmbh/magento-2 v1.3.1 requires magento/framework ^100.0.0 -> no matching package found.

because my magento/framework is version 100.1.4.... so i think in the payone composer.json file is the "require" not write correctly.

Order confirmation sent when payment failed

yesterday, we had the case, that a payment could not be completed because the mastercard was not registered for mastercard securecode (regarding to the error message of the cc provider).

after the payment failed, order confirmations have still been sent to the customer.

checkout: unserialize() Exception

Magento 2.1.7
PHP 5.6

  • Payone is just installed, not set up.
  • A product is added to the cart.
  • Click on "view all articles"

Then:

1 exception(s):
Exception #0 (Exception): Notice: unserialize(): Error at offset 0 of 751 bytes in /xxx/xxx/xxx/vendor/payone-gmbh/magento-2/Helper/Base.php on line 139

Exception #0 (Exception): Notice: unserialize(): Error at offset 0 of 751 bytes in /xxx/xxx/xxx/vendor/payone-gmbh/magento-2/Helper/Base.php on line 139
#0 [internal function]: Magento\Framework\App\ErrorHandler->handler(8, 'unserialize(): ...', '/xxx/xxx/xxx/...', 139, Array)
#1 /xxx/xxx/xxx/vendor/payone-gmbh/magento-2/Helper/Base.php(139): unserialize('{"Number_type":...')

This is the original function unserialize():

/**
 * @param  string $sValue
 * @return mixed
 */
public function unserialize($sValue) {	
    if (version_compare($this->shopHelper->getMagentoVersion(), '2.2.0', '>=')) { // Magento 2.2.0 and above
        return json_decode($sValue, true);
    }
    return unserialize($sValue);
}

The Problem i think is, you are expecting here that all Magento2 versions under 2.2.0 do not deal here with json objects. But the version i am using can not deal with the returned serialized version because it is expecting here a json object.

i updated the if condition
if (version_compare($this->shopHelper->getMagentoVersion(), '2.2.0', '>='))
to
(version_compare($this->shopHelper->getMagentoVersion(), '2.1.7', '>='))
and it is works.

I have to see now, if i will get another errors because of the wrong version or wrong returned data type after i configurated Payone.

I am waiting for your feedback.

Regards.

Creditcard logos

PAYONE merchant service told me that it is mandatory to add creditcard logos on the payment page. Instead of the merchant the extension itself should take care of this.

Refund orders with several variants for one configurable

When an order with a payone payment method was placed and captured, the refund during creditmemo creation fails in specific cases.

Given:

$order->getAllItems() = [
  0 => ['productId' => 1, 'sku' = 'abc_1', 'type' => 'configurable'],
  1 => ['productId' => 1, 'sku' = 'abc_1', 'type' => 'simple'],
  2 => ['productId' => 1, 'sku' = 'abc_2', 'type' => 'configurable'],
  3 => ['productId' => 1, 'sku' = 'abc_2', 'type' => 'simple'],
  4 => ['productId' => 2, 'sku' = 'def_1', 'type' => 'configurable'],
  5 => ['productId' => 2, 'sku' = 'def_1', 'type' => 'simple'],
];

$aPositions = $creditmemo->getItems() = [
  0 => ['orderItemId' => 11, 'productId' => 1,  'sku' = 'abc_1'],
];

Then the following code is executed for every order item (no dummy positions) and will create an invalid API call (\Payone\Core\Model\Api\Invoice::addProductItem):

[...]
if ($aPositions !== false && array_key_exists($oItem->getProductId(), $aPositions) !== false) {
  $dItemAmount = $aPositions[$oItem->getProductId()];
}
[...]

Order item 0 is included in parameters, because productId of creditmemo item matches order items product id. That is correct, because sku matches also.
Order item 2 is included in parameters, because productId of creditmemo item matches order items product id. That is not correct, because sku does not match.

Credit memo adjustment causes error

Setup: Magento CE 2.1.4, module-version 1.3.2

Steps to reproduce:

  • Place order e.g. with payment-method Paypal
  • Create an invoice for the placed order (capture online)
  • Try to create an credit memo with only an adjustment:
    • change to invoice-details
    • click 'Credit memo'
    • set item-qty(s) to 0
    • click 'Update Qty's'
    • enter a value (e.g. 10) in text field next to 'Adjustment Refund'
    • click 'Refund'

Result: An error message is displayed '950 - An error occured while processing this transaction (wrong parameters).', no refund is created.

Expected result: A refund is created matching the amount of money entered (10 € in the example above).

Additional information: the above mentioned steps do work for Magento default refunding (by clicking 'Refund Offline' instead of 'Refund').

Order Items send to Payone during capture

Hi,

during an online capture the order items are collected here in order to be sent to Payone: https://github.com/PAYONE-GmbH/magento-2/blob/master/Model/Api/Request/Capture.php getInvoiceList()

As you can see it expects request parameter, this means an online capture can only be done from the backend. There should be another solution so that you can create an online capture maybe on command line or in some other scope.

The only way now is to fake the request parameters, if possible.

Thanks :-)

Module cannot be compiled without dev dependencies

As a best practice, we do not deploy the dev dependencies (including phpunit) to the production systems (composer install --no-dev).

Unfortunately, there is an error during compilation of the module when phpunit is not installed

Errors during compilation:
Payone\Core\Model\Test\PayoneObjectManager
Class PHPUnit\Framework\TestCase does not exist

Company name taken from a forgone request

I sometimes have to create a lot of orders by code. It became evident now, that quite a lot (several hundreds) requests were send where the company name in the autorization request was the name of a foregone request. This leads to payments being matched to wrong orders.
Except for the company name, all customer data always was correct. The afftectet requests have consequent order_ids and very close txids.

I searched my database but all my sales_order_address and quote_addresses were correct. Now I checked in the extension code and I found the function addAdress in AddressRequest (which is extended by AuthrizationRequest)

protected function addAddress($oAddress, $blIsShipping = false)
    {
        $sPre = '';
        if ($blIsShipping === true) {
            $sPre = 'shipping_'; // add shipping prefix for shipping addresses
        }
        $this->addParameter($sPre.'firstname', $oAddress->getFirstname());
        $this->addParameter($sPre.'lastname', $oAddress->getLastname());
        if ($oAddress->getCompany()) {// company name existing?
            $this->addParameter($sPre.'company', $oAddress->getCompany());
        }

        $aStreet = $oAddress->getStreet();
        $sStreet = is_array($aStreet) ? implode(' ', $aStreet) : $aStreet; // street may be an array
        $this->addParameter($sPre.'street', trim($sStreet));
        $this->addParameter($sPre.'zip', $oAddress->getPostcode());
        $this->addParameter($sPre.'city', $oAddress->getCity());
        $this->addParameter($sPre.'country', $oAddress->getCountryId());

        if (CountryHelper::isStateNeeded($oAddress->getCountryId()) && $oAddress->getRegionCode()) {
            $this->addParameter($sPre.'state', $this->customerHelper->getRegionCode($oAddress));
        }
    }

The company ist not reset when current address does not have one. Without diffing further inot this I assume this is the reason for the explained behavoiur.

Here are some example txid pairs

236124436,236124433
236124452,236124450
236124460,236124456
236124475,236124478

I have a lot more examples if you need them ;)

A similar behaviour occurs with bankdata. I found requests with clearingtype "rec" that carry the IBAN form the request before.

It can be that my code has the bug, but I create empty quotes with Magento\Quote\Api\CartManagement::createEMptyCart() and then add sales items and customer information. As I said, my tables show no sign of any informaton from the foregone requests. And that the only affected customer information is company just fits so very nicely with the code quoted above.

CC Card iframe Custom Styling Quotation marks not escaped correctly

If you save a css string containing double quotes (e.g. font-family: "some font", ....") in cc_template -> Standard Style -> input (for Example), the value is saved correctly and also the css works in frontend.

The Problem is, when the configuration is loaded again in the Magento Backend, the quotes are not escaped correctly and the value of the input field is empty.

Saving the configuration will then empty the value in the database and the custom styling is gone.

Current workaround for us: use single quotes.

Fatal error: Uncaught TypeError: Argument 1 passed

After installation of the extension I get following error message on the frontend. The Backend is working.

Fatal error: Uncaught TypeError: Argument 1 passed to Magento\Customer\Model\AccountManagement::__construct() must be an instance of Magento\Customer\Model\CustomerFactory, instance of Magento\Framework\ObjectManager\ObjectManager given, called in /var/www/viktoriamed/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php on line 93 and defined in /var/www/viktoriamed/vendor/magento/module-customer/Model/AccountManagement.php:316 Stack trace: #0 /var/www/viktoriamed/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(93): Magento\Customer\Model\AccountManagement->__construct(Object(Magento\Framework\ObjectManager\ObjectManager)) #1 /var/www/viktoriamed/vendor/magento/framework/ObjectManager/Factory/Compiled.php(88): Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('LitExtension\Cu...', Array) #2 /var/www/viktoriamed/vendor/magento/framework/ObjectManager/Factory/Compiled.php(130): Magento\Framework\ObjectManager\Factory\Compiled->create('LitExtension\Cu...') #3 /var/www/vi in /var/www/viktoriamed/vendor/magento/module-customer/Model/AccountManagement.php on line 316

Payment method invoice / Order and invoice paid immediately

Steps to reproduce:

  1. Install a fresh Magento 2.1.5 (or 2.1.6) with sample data
  2. Create a customer
  3. Create an order using payment method "payone_invoice", authorization method "authorize" and payone mode "test".
  4. Do not pay

Expected result:

  1. An order is created, total paid is 0, total due is full amount
  2. An invoice is created, status is unpaid

Actual result:

  1. An order is created, total paid is full amount, total due is 0
  2. An invice is created, status is unpaid

Method "authorize" captures the invoice and by default Magento creates the invoice paid (due to US workflow where an invoice is generated AFTER payment). But for me this is to be rather unexpected, I use PAYONE to tell me whether and if an invoice is paid and I believe this is the usecae for most German PAYONE users.

I already have an email conversation with PAYONE technical support about this issue, but they told me that they cannot reproduce. Which is strange to me since I can reproduce this in two installitons, one of them being a FRESH one.

Could you plese verify if this is expeted behaviour? Or is there anything I am missing here?

Checkout-Agreements not working

We tried replacing an existing extension by a third-party developer by this official one and encountered a problem with the agreements when placing the order.
It doesn't matter if the boxes are checked or not, as (using this extension and a payment method provided by it) the data about them being checked is not transmitted anymore (see payload on request to V1/cart/mine/payment-information, "extension_attributes" are nowhere to be found, even though this is a core Magento functionality).
I assume this is a bug, as the extension seems to be relatively new and untested. Please get back to me about the state of the issue and if/when we can expect a solution. For mail, please use behr [ät] basecom [DE]

Problem bei Kreditkartenzahlung. Bestellungen trotz fehlerhafter Daten im Testmodus

Zusammenfassung:
Problem bei Kreditkartenzahlung: Bestellung wird abgeschickt, obwohl kein Vor- und/oder Nachname in den Kreditkarte angegeben ist.

Details zur Reproduktion:

  • Payone mus im Testmodus sein
  • Artikel in den Warenkorb legen
  • zur Kasse gehen (bis Zahlungsart)
  • Kreditkarte auswählen
  • Kreditkarten-Daten eingeben, allerdings keinen Namen
  • auf "Jetzt kaufen" klicken

Aktuelles Verhalten

  • Es erscheint eine Fehlermeldung (Bitte Vornamen eingeben)
  • Die Zahlung wird trotzdem abgeschlossen (User erhält Bestätigungsmail und wird auf Success-Seite weitergeleitet)

Erwartetes Verhalten:

  • Fehlermeldung (Bitte Vornamen eingeben)
  • Die Zahlung wird nicht abgeschlossen. User wird nicht weitergeleitet.

Mögliche Ursache
In der js-Datei credidcard-method.js wird zuerst die Funktion validate aufgerufen.
Das führt dazu, dass die Fehlermeldung "Bitte Vornamen angeben" erscheint.

Gleichzeitig wird aber über das iFrame ein ajax-call zu secure.pay1.de durchgeführt. In den Script (payone_hosted_min.js) wird dann wiederum in die Funktion
processPayoneResponseCCHosted(response)
(wieder in der Datei credidcard-method.js)
aufgerufen.

Obwohl die vorige Validierung (validate: function) vorher fehlgeschlagen ist, ist die response von Payone positiv:

In Zeile: 156: if (response.status === "VALID") { ...} => true

ist dieses Verhalten im Testmodus normal?

Trotzdem die Frage: Wieso führt man nicht in der Funktion processPayoneResponseCCHosted nochmal eine Validierung durch, um diesen Fall zu vermeiden.

z.B.:

function processPayoneResponseCCHosted(response)
{
    if (window.ccjs.firstname() != "" && window.ccjs.lastname() != "") {
        window.ccjs.processPayoneResponseCCHosted(response);
    }
}

Please create releases with minor number change for bugfixes

The latest release is from 18th of May, since then many bugfixes have been comitted but no release has been created. Can you please create a release with the increase of the minor number for that?

Otherwise I have to clone the repository which I don't want :-) Would be great :-)

New invoice order handling

With the "new" invoice handling an invoice is created and paid when payment occurs. However, if the merchant creates an invoice before the order is paid (my customer wants to create and send the invoice immediately after order generation, including payment method invoice ) the status updates creates a second invoice with a grand total of 0 and pays that.

It would be better if the status update would detect an existing invoice for that order and pay that.

I'll attach a pull request in a minute.

setup:di:compile Problem

We get on setup:di:compile in the developer mode following error message:

Repositories code generation... 1/7 [====>-----------------------] 14%
1 sec 77.8 MiBPHP Fatal error: Cannot use Magento\Framework\Controller\Result\Redirect as Redirect because the name is already in use in /xxx/vendor/payone-gmbh/magento-2/Controller/Onepage/Cancel.php on line 30

js error in checkout payment step

Magento 2.1.2 + sample data + payone module (dev-master)

In the payment step of the checkout I get a js error:
payone_iframe_min.js:8 Uncaught TypeError: Cannot read property 'hasOwnProperty' of null(…)

Still making an order (tested cc and paypal) seems to work, but this could break other js functionalities on the site
checkout-js-error

Tables get called without prefix

The module calls database table names without adding the needed prefix, which leads to exception errors.

Next Zend_Db_Statement_Exception: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'webuser_copy.sales_order' doesn't exist, query was:  SELECT
                        *
                    FROM
                        sales_order
                    WHERE
                        entity_id = :entity_id in /home/webuser/public_html/vendor/magento/zendframework1/library/Zend/Db/Statement/Pdo.php:235
Stack trace:
#0 /home/webuser/public_html/vendor/magento/framework/DB/Statement/Pdo/Mysql.php(95): Zend_Db_Statement_Pdo->_execute(Array)
#1 /home/webuser/public_html/vendor/magento/zendframework1/library/Zend/Db/Statement.php(303): Magento\Framework\DB\Statement\Pdo\Mysql->_execute(Array)
#2 /home/webuser/public_html/vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php(480): Zend_Db_Statement->execute(Array)
#3 /home/webuser/public_html/vendor/magento/zendframework1/library/Zend/Db/Adapter/Pdo/Abstract.php(238): Zend_Db_Adapter_Abstract->query(' SELECT\n       ...', Array)
#4 /home/webuser/public_html/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php(444): Zend_Db_Adapter_Pdo_Abstract->query(' SELECT\n       ...', Array)
#5 /home/webuser/public_html/vendor/magento/framework/DB/Adapter/Pdo/Mysql.php(499): Magento\Framework\DB\Adapter\Pdo\Mysql->_query(' SELECT\n       ...', Array)
#6 /home/webuser/public_html/vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php(756): Magento\Framework\DB\Adapter\Pdo\Mysql->query(' SELECT\n       ...', Array)
#7 /home/webuser/public_html/app/code/Payone/Core/Helper/Database.php(145): Zend_Db_Adapter_Abstract->fetchRow(' SELECT\n       ...', Array)
#8 /home/webuser/public_html/app/code/Payone/Core/Model/UiComponent/DataProvider.php(96): Payone\Core\Helper\Database->getIncrementIdByOrderId('132')
#9 /home/webuser/public_html/vendor/magento/framework/View/Element/UiComponent/DataProvider/DataProvider.php(108): Payone\Core\Model\UiComponent\DataProvider->prepareUpdateUrl()
#10 /home/webuser/public_html/app/code/Payone/Core/Model/UiComponent/DataProvider.php(74): Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider->__construct('payone_protocol...', 'id', 'order_id', Object(Magento\Framework\View\Element\UiComponent\DataProvider\Reporting), Object(Magento\Framework\Api\Search\SearchCriteriaBuilder), Object(Magento\Framework\App\Request\Http), Object(Magento\Framework\Api\FilterBuilder), Array, Array)
#11 /home/webuser/public_html/vendor/magento/framework/ObjectManager/Factory/AbstractFactory.php(118): Payone\Core\Model\UiComponent\DataProvider->__construct('payone_protocol...', 'id', 'order_id', Object(Magento\Framework\View\Element\UiComponent\DataProvider\Reporting), Object(Magento\Framework\Api\Search\SearchCriteriaBuilder), Object(Magento\Framework\App\Request\Http), Object(Magento\Framework\Api\FilterBuilder), Object(Payone\Core\Helper\Database), Array, Array)
#12 /home/webuser/public_html/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php(89): Magento\Framework\ObjectManager\Factory\AbstractFactory->createObject('Payone\\Core\\Mod...', Array)
#13 /home/webuser/public_html/vendor/magento/framework/ObjectManager/ObjectManager.php(57): Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('Payone\\Core\\Mod...', Array)
#14 /home/webuser/public_html/vendor/magento/framework/View/Element/UiComponent/Argument/Interpreter/ConfigurableObject.php(60): Magento\Framework\ObjectManager\ObjectManager->create('Payone\\Core\\Mod...', Array)
#15 /home/webuser/public_html/var/generation/Magento/Framework/Data/Argument/InterpreterInterface/Proxy.php(95): Magento\Framework\View\Element\UiComponent\Argument\Interpreter\ConfigurableObject->evaluate(Array)
#16 /home/webuser/public_html/vendor/magento/framework/Data/Argument/Interpreter/Composite.php(61): Magento\Framework\Data\Argument\InterpreterInterface\Proxy->evaluate(Array)
#17 /home/webuser/public_html/vendor/magento/module-ui/Model/Manager.php(191): Magento\Framework\Data\Argument\Interpreter\Composite->evaluate(Array)
#18 /home/webuser/public_html/vendor/magento/module-ui/Model/Manager.php(194): Magento\Ui\Model\Manager->evaluateComponentArguments(Array)
#19 /home/webuser/public_html/vendor/magento/module-ui/Model/Manager.php(175): Magento\Ui\Model\Manager->evaluateComponentArguments(Array)
#20 /home/webuser/public_html/vendor/magento/framework/View/Element/UiComponentFactory.php(139): Magento\Ui\Model\Manager->prepareData('payone_sales_or...')
#21 /home/webuser/public_html/vendor/magento/framework/View/Layout/Generator/UiComponent.php(124): Magento\Framework\View\Element\UiComponentFactory->create('payone_sales_or...', NULL, Array)
#22 /home/webuser/public_html/vendor/magento/framework/View/Layout/Generator/UiComponent.php(93): Magento\Framework\View\Layout\Generator\UiComponent->generateComponent(Object(Magento\Framework\View\Layout\Data\Structure), 'payone_sales_or...', Array, Object(Magento\Framework\View\Layout\Interceptor))
#23 /home/webuser/public_html/vendor/magento/framework/View/Layout/GeneratorPool.php(86): Magento\Framework\View\Layout\Generator\UiComponent->process(Object(Magento\Framework\View\Layout\Reader\Context), Object(Magento\Framework\View\Layout\Generator\Context))
#24 /home/webuser/public_html/vendor/magento/framework/View/Layout.php(327): Magento\Framework\View\Layout\GeneratorPool->process(Object(Magento\Framework\View\Layout\Reader\Context), Object(Magento\Framework\View\Layout\Generator\Context))
#25 /home/webuser/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(89): Magento\Framework\View\Layout->generateElements()
#26 /home/webuser/public_html/vendor/magento/framework/View/Layout/Builder.php(129): Magento\Framework\View\Layout\Interceptor->generateElements()
#27 /home/webuser/public_html/vendor/magento/framework/View/Page/Builder.php(55): Magento\Framework\View\Layout\Builder->generateLayoutBlocks()
#28 /home/webuser/public_html/vendor/magento/framework/View/Layout/Builder.php(65): Magento\Framework\View\Page\Builder->generateLayoutBlocks()
#29 /home/webuser/public_html/vendor/magento/framework/View/Layout.php(244): Magento\Framework\View\Layout\Builder->build()
#30 /home/webuser/public_html/vendor/magento/framework/View/Layout.php(859): Magento\Framework\View\Layout->build()
#31 /home/webuser/public_html/var/generation/Magento/Framework/View/Layout/Interceptor.php(414): Magento\Framework\View\Layout->getBlock('menu')
#32 /home/webuser/public_html/vendor/magento/module-backend/Model/View/Result/Page.php(59): Magento\Framework\View\Layout\Interceptor->getBlock('menu')
#33 /home/webuser/public_html/var/generation/Magento/Backend/Model/View/Result/Page/Interceptor.php(24): Magento\Backend\Model\View\Result\Page->setActiveMenu('Magento_Sales::...')
#34 /home/webuser/public_html/vendor/magento/module-sales/Controller/Adminhtml/Order.php(133): Magento\Backend\Model\View\Result\Page\Interceptor->setActiveMenu('Magento_Sales::...')
#35 /home/webuser/public_html/vendor/magento/module-sales/Controller/Adminhtml/Order/View.php(23): Magento\Sales\Controller\Adminhtml\Order->_initAction()
#36 /home/webuser/public_html/var/generation/Magento/Sales/Controller/Adminhtml/Order/View/Interceptor.php(24): Magento\Sales\Controller\Adminhtml\Order\View->execute()
#37 /home/webuser/public_html/vendor/magento/framework/App/Action/Action.php(102): Magento\Sales\Controller\Adminhtml\Order\View\Interceptor->execute()
#38 /home/webuser/public_html/vendor/magento/module-backend/App/AbstractAction.php(226): Magento\Framework\App\Action\Action->dispatch(Object(Magento\Framework\App\Request\Http))
#39 [internal function]: Magento\Backend\App\AbstractAction->dispatch(Object(Magento\Framework\App\Request\Http))
#40 /home/webuser/public_html/vendor/magento/framework/Interception/Interceptor.php(74): call_user_func_array(Array, Array)
#41 /home/webuser/public_html/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Sales\Controller\Adminhtml\Order\View\Interceptor->___callParent('dispatch', Array)
#42 /home/webuser/public_html/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Sales\\C...', 'dispatch', Object(Magento\Sales\Controller\Adminhtml\Order\View\Interceptor), Array, 'adminAuthentica...')
#43 /home/webuser/public_html/vendor/magento/module-backend/App/Action/Plugin/Authentication.php(143): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#44 [internal function]: Magento\Backend\App\Action\Plugin\Authentication->aroundDispatch(Object(Magento\Sales\Controller\Adminhtml\Order\View\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#45 /home/webuser/public_html/vendor/magento/framework/Interception/Chain/Chain.php(67): call_user_func_array(Array, Array)
#46 /home/webuser/public_html/vendor/magento/framework/Interception/Chain/Chain.php(63): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Sales\\C...', 'dispatch', Object(Magento\Sales\Controller\Adminhtml\Order\View\Interceptor), Array, 'designLoader')
#47 /home/webuser/public_html/vendor/magento/framework/App/Action/Plugin/Design.php(39): Magento\Framework\Interception\Chain\Chain->Magento\Framework\Interception\Chain\{closure}(Object(Magento\Framework\App\Request\Http))
#48 [internal function]: Magento\Framework\App\Action\Plugin\Design->aroundDispatch(Object(Magento\Sales\Controller\Adminhtml\Order\View\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#49 /home/webuser/public_html/vendor/magento/framework/Interception/Chain/Chain.php(67): call_user_func_array(Array, Array)
#50 /home/webuser/public_html/vendor/magento/framework/Interception/Interceptor.php(136): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Sales\\C...', 'dispatch', Object(Magento\Sales\Controller\Adminhtml\Order\View\Interceptor), Array, 'adminMassaction...')
#51 /home/webuser/public_html/vendor/magento/module-backend/App/Action/Plugin/MassactionKey.php(33): Magento\Sales\Controller\Adminhtml\Order\View\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#52 [internal function]: Magento\Backend\App\Action\Plugin\MassactionKey->aroundDispatch(Object(Magento\Sales\Controller\Adminhtml\Order\View\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#53 /home/webuser/public_html/vendor/magento/framework/Interception/Interceptor.php(140): call_user_func_array(Array, Array)
#54 /home/webuser/public_html/var/generation/Magento/Sales/Controller/Adminhtml/Order/View/Interceptor.php(39): Magento\Sales\Controller\Adminhtml\Order\View\Interceptor->___callPlugins('dispatch', Array, Array)
#55 /home/webuser/public_html/vendor/magento/framework/App/FrontController.php(55): Magento\Sales\Controller\Adminhtml\Order\View\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#56 [internal function]: Magento\Framework\App\FrontController->dispatch(Object(Magento\Framework\App\Request\Http))
#57 /home/webuser/public_html/vendor/magento/framework/Interception/Interceptor.php(74): call_user_func_array(Array, Array)
#58 /home/webuser/public_html/vendor/magento/framework/Interception/Chain/Chain.php(70): Magento\Framework\App\FrontController\Interceptor->___callParent('dispatch', Array)
#59 /home/webuser/public_html/vendor/magento/framework/Interception/Interceptor.php(136): Magento\Framework\Interception\Chain\Chain->invokeNext('Magento\\Framewo...', 'dispatch', Object(Magento\Framework\App\FrontController\Interceptor), Array, 'install')
#60 /home/webuser/public_html/vendor/magento/framework/Module/Plugin/DbStatusValidator.php(69): Magento\Framework\App\FrontController\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#61 [internal function]: Magento\Framework\Module\Plugin\DbStatusValidator->aroundDispatch(Object(Magento\Framework\App\FrontController\Interceptor), Object(Closure), Object(Magento\Framework\App\Request\Http))
#62 /home/webuser/public_html/vendor/magento/framework/Interception/Interceptor.php(140): call_user_func_array(Array, Array)
#63 /home/webuser/public_html/var/generation/Magento/Framework/App/FrontController/Interceptor.php(26): Magento\Framework\App\FrontController\Interceptor->___callPlugins('dispatch', Array, Array)
#64 /home/webuser/public_html/vendor/magento/framework/App/Http.php(115): Magento\Framework\App\FrontController\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#65 /home/webuser/public_html/vendor/magento/framework/App/Bootstrap.php(258): Magento\Framework\App\Http->launch()
#66 /home/webuser/public_html/index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http))
#67 {main} [] []

In file app/code/Payone/Core/Helper/Database.php are the functions located at:

/**
     * Get increment_id from order by given order id
     *
     * @param  string $sOrderId
     * @return string|bool
     */
    public function getIncrementIdByOrderId($sOrderId)
    {
        $oDb = $this->getDb();
        $sQuery = " SELECT
                        *
                    FROM
                        ".$oDb->getTableName('sales_order')."
                    WHERE
                        entity_id = :entity_id";
        $aResult = $oDb->fetchRow($sQuery, ['entity_id' => $sOrderId]);
        if ($aResult) {
            return $aResult['increment_id'];
        }
        return false;
    }

Seems like something is missing here. If I try to modify the calling database table to cc_sales_order (cc_ is our prefix) it works perfectly nice. Seems this function just don't get the prefix, other functions doesn't seem to have problems... Very weird. Maybe re-initiate the prefix request or get it directly from env.php? Just an idea...

Product Bundles SKU's too long for payone api

we currently have an issue, that we cannot checkout with a product bundle on the live system (it seemed to work in test mode before)

After talking to the technical support, it seems like all child product sku's are concatenated with the bundle sku itself

release plans?

Are there any release plans for this? I would like to get a shop running until mid november including a payone integration. Since magento 2 has been release for almost one year now, i wondered why such an important payment extension is still missing?

Sequence number incorrect with api requests

The sequnce number is stored only in table "payone_protocol_transactionstatus". When an API request occurs this number is fetched and incremented for that request only. The incremented sequence number is not saved. Making two consecutive api requests fails because the second tries to use the same sequence number.

Example:

  1. Create order and have it paid.
  2. Create a credit memo for a partial amount of total recevivable => works.
  3. Create another credit memo for a partial amount => fails, wrong sequnce number.

Magento Enterprise database split compatibility

Hello

We want to use your extension on Magento2 EE edition and wanted to use default Database Split feature of Magento EE. But unfortunately your extension is not compatible with it. May we expect that will will be fixed in future versions?

Thanks a lot

Missing messages when returning from bad credit card payment

In the credit card payment I noticed the following: In the IFrame heavy credit card errors are displayed before sending. However, e.g. enter an incorrect valid-to date or refuse payment for other reasons after exiting the I-frame, then the return goes to /checkout/

However, Magento's new one-page checkout consists of two parts, 1. the shipping address, 2. the payment method. The payment method is reached in Magento's Checkout via the "Next" button to the URL /checkout/#payment. This would be the correct jumpback URL.

Even worse is that no error message or error is issued after jumpback. There is a return to the /checkout without any indication that an error has occurred in the credit card payment.

This also happens when you pay with 3-D Secure, if you put the "Cancel" button on secure page, but also with other errors, which occur only on the secure side.

In my opinion, this is a bug of the extension, there should be at least one hint "An error occurred while the payment was made" or "Bad payment data were specified" with a return to the /checkout/#payment (with an open I frame) and usually red-marked fields.

Maybe I am wrong and have only configured incorrect, but I have searched everything. Or is there another way to achieve a correct error recovery? Otherwise this should be implemented urgently.

Magento 2.1.7 with Payone Extension 1.3.5

Greetings,
Stefan

release 1.3.1 breaks magento2 API

In the latest release, the Payone\Core\Model\WebApi\Addresscheck was added as a webservice class.

It does not follow the magento2 best practices for creating a new service in the service layer and fails an internal check which leads to an exception (in our case, when calling the getOrderList SOAP Call)

main.CRITICAL: InvalidArgumentException: The service interface name "Payone\Core\Model\WebApi\Addresscheck" is invalid. in /var/www/share/stage.ballon24.de/project/releases/20170206141358/vendor/magento/module-webapi/Model/ServiceMetadata.php:227

I assume, this breaks all SOAP API calls (maybe also REST) since the exception is thrown during the WSDL generation.

New invoice order handling with pre-authorization

If you create order with authorization method "pre-autorization" and payment method "invoice" the amount is not yet captured.
To tell PAYONE to capture the amount I have to invoice and capture online. But that marks my invoice and order immeditely as paid, although no payment has yet occurred.

Can you reproduce the problem? Or do I have a problem in my workflow?

I solved this with interceptor for \Magento\Sales\Model\Order\Invoice::pay().

public function aroundPay(\Magento\Sales\Model\Order\Invoice $invoice, callable $proceed)
    {
        $order = $invoice->getOrder();

        // capture online with PAYONE pre-authorization should not immediately mark the invoice as paid
        // paying the invoice (invoice->setForcePay(true)) should
        if ($order->getPayment()->getMethod() == 'payone_invoice'
            && $order->getPayoneAuthmode() === 'preauthorization'
            && !$invoice->getForcePay()
        ) {
            return $invoice;
        }
        return $proceed();
    }

Now in the transaction status paid-event one must call $invoice->setForcePay(true)->pay();

Please let me know if this solution is on interest to you then I'll attach a PR.

Magento Enterprise database split compatibility (Update)

Hello @fjbender
I have checked both closed issues.
#22
#75

You do not need to do any significant changes to make your extension supports Magento EE.
These are basic rules for supporting EE.
http://devdocs.magento.com/guides/v2.1/config-guide/multi-master/multi-master.html#config-ee-multidb-opts

You need to overwrite code where you use SQL to Magento model(PDO) style:
The bad code style examples preventing to use DB spliting:

https://github.com/PAYONE-GmbH/magento-2/blob/master/Helper/Database.php#L132
https://github.com/PAYONE-GmbH/magento-2/blob/master/Helper/Database.php#L219

Address validation error leads to PHP Notice

Hi there,

we had an address validation error (which is correct as the address was not correct) but the response from Payone lead to a PHP notice in the module.

In https://github.com/PAYONE-GmbH/magento-2/blob/master/Model/Api/Request/Consumerscore.php#L118 it is expected that the response has the score field, but in a case of a wrong address the response looks like:

[04-Jul-2017 07:29:34 UTC] array (
  'status' => 'INVALID',
  'errorcode' => '4041',
  'secstatus' => '30',
  'errormessage' => 'Address not found',
  'customermessage' => 'Address not found. Please verify your data.',
)

That is the reasons why line 118 throws a notice and nothing happens in the frontend (no message).

Thanks for your help :-)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.