https://github.com/webburza/payum-setefi
A Payum gateway for Setefi payment processor.
https://github.com/webburza/payum-setefi
payment-gateway payment-integration payment-processing payum setefi sylius
Last synced: 3 months ago
JSON representation
A Payum gateway for Setefi payment processor.
- Host: GitHub
- URL: https://github.com/webburza/payum-setefi
- Owner: webburza
- License: mit
- Created: 2016-12-23T08:30:42.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2017-11-30T13:45:57.000Z (about 8 years ago)
- Last Synced: 2025-11-27T16:46:33.712Z (3 months ago)
- Topics: payment-gateway, payment-integration, payment-processing, payum, setefi, sylius
- Language: PHP
- Homepage:
- Size: 14.6 KB
- Stars: 1
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Setefi Payum gateway
A [Payum](https://payum.forma-pro.com/) gateway for [Setefi](http://www.setefi.it/) payment processor.
**Note:** all [user IDs, passwords and secrets listed are documented by Setefi](https://www.servizi.monetaonline.it/documenti/monetaweb/MonetaWeb%202.0%20-%20Technical%20Documentation.pdf) *(section "TEST ENVIRONMENT CREDENTIALS"*) and shared with all other Setefi sandbox users, they're NOT a secret.
## Sylius Integration
```yaml
# app/config/config.yml
parameters:
# NOTE:
# these are documented by Setefi and shared among all sandbox users, they're NOT a secret
setefi.id: "99999999"
setefi.password: "99999999"
setefi.sandbox: true # false in config_prod.yml
payum:
gateways:
setefi:
factory: "setefi"
payum.http_client: "@sylius.payum.http_client"
terminal_id: "%setefi.id%"
terminal_password: "%setefi.password%"
sandbox: "%setefi.sandbox%"
sylius_payment:
gateways:
setefi: Setefi
```
After having done this, enable the payment method in the Sylius admin interface.
*(**Note:** Any testing of the integration **must** be done on a public-accessible URL (ie. by using [ngrok](https://ngrok.com/)) because Setefi backend needs to be able to do valid server-to-server requests for the process to complete successfully.)*
## Setefi sandbox environment
Log in to [Setefi's sandbox environment](https://test.monetaonline.it/monetaweb/backoffice):
*(**Note:** these are documented by Setefi and shared among all sandbox users, they're NOT a secret)*
- *Codice Commerciante:* `009999999`
- *Codice Utente:* `009999999`
- *Password:* `Setefi14`
Note that your transactions will be among all other sandbox's users' transactions, you need to find your own to verify it works.
## Technical implementation
* Entrypoint is [`Webburza\Payum\Setefi\SetefiGatewayFactory`](src/SetefiGatewayFactory.php) which registers all known actions, sets up config and creates a new `Api`.
* [`Webburza\Payum\Setefi\Api`](src/Api.php) is a collection of helpers and constants specific to this provider, it gets injected to all actions implementing `Payum\Core\ApiAwareInterface`.
* Every action has a specific task and they declare on which part of the process they work on by implementing `support($request)` from `Payum\Core\Action\ActionInterface`. The action name itself does not matter.
For example, `Webburza\Payum\Setefi\Action\CancelAction` declares it can handle `Payum\Core\Request\Cancel` request and it will receive all those types of requests to handle.
**Action and the request are two different things**, you can (and do) have much more actions than you do request types (some gateways have no custom request types).
* We can also define some custom request types such as [`Webburza\Payum\Setefi\Request\CreateTransaction`](src/Request/CreateTransaction.php) for situations where domain-specific events need to happen. After having defined them, we register actions to handle them the same way we do native actions.
## Transaction sequence
1. `Webburza\Payum\Setefi\Action\StatusAction` marks the payment request as `new`
2. `Webburza\Payum\Setefi\Action\CaptureAction` triggers `Webburza\Payum\Setefi\Request\CreateTransaction` request
3. a new Setefi transaction is created using `Webburza\Payum\Setefi\Action\CreateTransactionAction` and a server-to-server (S2S) request
4. if successful, the user is redirected to Setefi web interface
5.
1. if payment successful, Setefi does a S2S request and `Webburza\Payum\Setefi\Action\StatusAction` marks the payment request as `captured`
2. if payment not successful, Setefi does a S2S request and `Webburza\Payum\Setefi\Action\StatusAction` marks the payment request as `canceled`
6. response to 5. is a valid redirect URL for Setefi to redirect to user back to
7. process complete
