https://github.com/asioso/payone
A bundle to help integrating payone to e-commerce pimcore projects
https://github.com/asioso/payone
ecommerce payment-integration payone php pimcore pimcore-bundle pimcore-plugin
Last synced: 6 months ago
JSON representation
A bundle to help integrating payone to e-commerce pimcore projects
- Host: GitHub
- URL: https://github.com/asioso/payone
- Owner: asioso
- License: other
- Created: 2019-07-01T15:34:05.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2020-06-16T08:58:25.000Z (almost 6 years ago)
- Last Synced: 2025-09-08T09:46:53.929Z (9 months ago)
- Topics: ecommerce, payment-integration, payone, php, pimcore, pimcore-bundle, pimcore-plugin
- Language: PHP
- Homepage:
- Size: 1.35 MB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# PayOne Payment Bundle
## Prerequisites
* PHP 7.1 or higher (https://secure.php.net/)
* Composer (https://getcomposer.org/download/)
* A Pimcore Installation using the **pimcore e-commerce framework** (v5.7 or higher)
* A PAYONE account or test account (https://www.payone.com/kontakt/)
![payment_frame_screenshot][frame]
## Installation
### composer
add the bundle to composer.json with
```
composer require asioso/pimcore-payone-module
```
### Enable the Bundle in the Extension Manager
[NOTE] make sure, that you have the NumberGeneratorBundle enabled.
otherwise same old same old - this will create a new database Table and import an ObjectBrick.
### Add Static Routes for the Bundle
you need to add a static route named **payone** in pimcore's backend. Otherwise the checkout process will not work
```
pattern:
#(.*?)/paymentAction/([a-zA-Z\-\_]+)/([a-z\-]+)#
reverse:
/%prefix/paymentAction/%controller/%action
bundle:
PayoneBundle
controller:
%controller
action:
%action
variables:
prefix,controller,action
```
![static_routes_screenshot][route]
## Configuration
add payone as payment provider in your e-commerce configuration. Use payone as payment provider in your checkout manager:
```
default:
payment:
provider: payone
```
see an example below:
```
# Configuration of payment providers, key is name of provider
providers:
payone:
provider_id: PayoneBundle\Ecommerce\PaymentManager\BsPayone
profile: sandbox
profiles:
_defaults:
data_processor: \AppBundle\Ecommerce\DataProcessor
hash_algorithm: md5
#paypal_activate_item_level: true
partial: PayoneBundle:BsPayone:method_selection_seamless.html.php
js: /bundles/payone/js/payone-frontend.js
iframe_css_url: /bundles/payone/css/payment-iframe.css?elementsclientauth=disabled
payment_methods:
SEPA:
icon: /static/img/payment/icons/sepa.png
partial: PayoneBundle:BsPayone:payment_methods/sepa.html.php
CCARD:
icon: /static/img/payment/icons/cc.png
partial: PayoneBundle:BsPayone:payment_methods/ccard.html.php
PAYPAL:
icon: /static/img/payment/icons/paypal.png
PAYDIRECT:
icon: /static/img/payment/icons/paydirect.png
#partial: PayoneBundle:BsPayone:payment_methods/paydirect.html.php
SOFORT:
icon: /static/img/payment/icons/klarna.svg
#partial: PayoneBundle:BsPayone:payment_methods/sofort.html.php
GIROPAY:
icon: /static/img/payment/icons/giropay.png
partial: PayoneBundle:BsPayone:payment_methods/giropay.html.php
INVOICE:
icon: /static/img/payment/icons/invoice-logo.png
# example: use alternative credentials for invoices
aid:
mid:
portalid:
key:
mode: '%env(PAYONE_MODE)%' #example use env file to set your configuration see- /examples/payment.env
sandbox:
aid:
mid:
portalid:
key:
mode: test
live:
aid:
mid:
portalid:
key:
mode: live
```
#### Enable Payment Provider
update your payment controller to support payone as payment provider. take a look at [this controller example](https://github.com/asioso/payone/blob/master/examples/Controller/PaymentController.php)
Below you can see the most crucial part in the payment frame action:
```php
/**
* payment iframe
*/
public function paymentFrameAction(Request $request)
{
// init
$cart = $this->getCart();
$checkoutManager = Factory::getInstance()->getCheckoutManager($cart);
if ($checkoutManager->isCommitted()) {
throw new \Exception('Cart already committed');
}
$paymentInformation = $checkoutManager->startOrderPayment();
$payment = $checkoutManager->getPayment();
$language = substr($request->getLocale(), 0, 2);
// payment config
if($payment instanceof BsPayone) {
// payone
$payment->setPaymentInformation($paymentInformation);
$config['orderIdent'] = $paymentInformation->getInternalPaymentId();
$config['cart'] = $cart;
$config['language'] = substr($request->getLocale(), 0, 2);
}
else {
throw new \Exception('Unknown Payment configured.');
}
// init payment
$this->view->payment = $payment->initPayment($cart->getPriceCalculator()->getGrandTotal(), $config);
}
```
### DataProcessor
We need some information from earlier checkout steps, so your implementation of this class will be used to fill in personal Data and shipping data.
Take a look at [this example](https://github.com/asioso/payone/blob/master/examples/DataProcessor/DataProcessor.php)
### Callback url
you need to register your application's callback address in payone's merchant service portal.
it uses the the static route you defined earlier, and will look like this:
```
https:///de/paymentAction/BsPayone/confirm-payment-server-side
```
### Overriding default Payment URLs
In case you don't want to rely on the generated success/pending/failure URLs provided by this bundle (based on static routes- see above), there is another way using symfony's Dependency Injection component.
Register a new CompilerPass, take a look at [this example](https://github.com/asioso/payone/blob/master/examples/DependencyInjection/PaymentUrlGeneratorCompilerPass.php), which sets a tailored generator service that generates a custom completed-route, but still relies on the default implementation for the remaining URLs.
see [this class](https://github.com/asioso/payone/blob/master/examples/UrlGenerator/MyPaymentUrlGenerator.php) for more details.
### Any Questsion
write to info@asioso.com
[route]: https://github.com/asioso/payone/raw/master/documentation/img/static_routes.png "Extension Manager"
[frame]: https://github.com/asioso/payone/raw/master/documentation/img/payment_frame.png "Payment Frame"