Discussions
Role: public
Salve,
sto mandando una richiesta come da guida:
<https://developers.satispay.com/reference/testinput>
ho fatto anche il check per il digest e signature e mi risultano ok.
Endpoint: <https://staging.authservices.satispay.com/wally-services/protocol/tests/signature>
Method: POST
Body:
{"flow":"MATCH_CODE","amount_unit":100,"currency":"EUR"}
Headers:
accept: application/json
host: staging.authservices.satispay.com
date: Fri, 21 Jul 2023 12:50:05 +0000
authorization: Signature keyId ="**_ key ID _**", algorithm="rsa-sha256", headers="(request-target) host date digest", signature="JmRmfdIw2hwlykiU/XHCuHyZ5pAhRq/o4tqNKmeOrcLBbmgNCOeYuP54p4OSMHGyxbV4EAabMUy6+a+lS+UMmtxgnrF8ZGS4lqMNA7z0jw+fVoJ0FCmOJvwl5NYe9TtUgiXRo8i0kW0mVG0CGS/4Je3W5DESjxUDptPHuv0Js17MQAHZ9udVUQdemIuh/sqi3VwebKgm3+JNUBh3JsHxBAhSNRZo8VvKUYLKYbSpRP27ppj3tDcRj+9oEIcFmEaB0OaldFcsfTK5fBSzuA5LHsb+rzbG0sKnAcGra6xV9hamdJqNuJC3c9ONqjY7eUjBSBpVSZp+1CFnpAwdMyME7Kk3zu+8XB5+3W9l6+lXaWHjpKZLeaW25mTugGyguTWhOkI0Qf4sNsQyEzypHh7AiqTnjahNiVdKhS4Xn/aDRahbCQLFXlqdwimgaU22mScjtY7FFghnA1tL7db2fcvWIvwbgCKviPZLxm+IcR47yrlOtqN2xquxMUL3W7V6xZIiwpixYwAiIS9rz+ucPvh7Ftiay/f1JKOBMIX0svprbf46DIwk6fj3LCMe7mcAdBkZlKwV9K7XXSD2nJa/IQIU92E0usxxl2wPKBWChmbSr0MxNLaLhPzIiN58XqLCDIXEzCKgY2UjaRwApXAOcrLK3rZF8YYWSuJD+aLGNpnQz6Y="
Content-Type: application/json
Il ritorno è
{
"authentication_key": {
"role": "PUBLIC"
},
"signature": {
"algorithm": "RSA_SHA256",
"headers": [
"(request-target)",
"host",
"date",
"digest"
],
"signature": "JmRmfdIw2hwlykiU/XHCuHyZ5pAhRq/o4tqNKmeOrcLBbmgNCOeYuP54p4OSMHGyxbV4EAabMUy6+a+lS+UMmtxgnrF8ZGS4lqMNA7z0jw+fVoJ0FCmOJvwl5NYe9TtUgiXRo8i0kW0mVG0CGS/4Je3W5DESjxUDptPHuv0Js17MQAHZ9udVUQdemIuh/sqi3VwebKgm3+JNUBh3JsHxBAhSNRZo8VvKUYLKYbSpRP27ppj3tDcRj+9oEIcFmEaB0OaldFcsfTK5fBSzuA5LHsb+rzbG0sKnAcGra6xV9hamdJqNuJC3c9ONqjY7eUjBSBpVSZp+1CFnpAwdMyME7Kk3zu+8XB5+3W9l6+lXaWHjpKZLeaW25mTugGyguTWhOkI0Qf4sNsQyEzypHh7AiqTnjahNiVdKhS4Xn/aDRahbCQLFXlqdwimgaU22mScjtY7FFghnA1tL7db2fcvWIvwbgCKviPZLxm+IcR47yrlOtqN2xquxMUL3W7V6xZIiwpixYwAiIS9rz+ucPvh7Ftiay/f1JKOBMIX0svprbf46DIwk6fj3LCMe7mcAdBkZlKwV9K7XXSD2nJa/IQIU92E0usxxl2wPKBWChmbSr0MxNLaLhPzIiN58XqLCDIXEzCKgY2UjaRwApXAOcrLK3rZF8YYWSuJD+aLGNpnQz6Y=",
"resign_required": false,
"iteration_count": 2617,
"valid": false
},
"signed_string": "(request-target): post /wally-services/protocol/tests/signature\\nhost: staging.authservices.satispay.com\\ndate: Fri, 21 Jul 2023 12:50:05 +0000\\ndigest: "
}
Avete modo di indicarmi cosa sto sbagliando.
Grazie mille in anticipo.
Posted by Maurizio Grifasi 2 months ago
Delay to consider redirect form timed out
Hi,
I am using Web-Redirect and Funds-Redirect, and I am wondering how long can the customer stays on the form and use it to pay?
In other words, after how long can I consider the link unusable and consider that the customer abandoned the payment, leading to order cancellation?
Thanks
Posted by Vincent 4 months ago
Differenza tra produzione e sviluppo
Buongiorno, ho sviluppato una pagina per l'acquisizione di donazioni e sto riscontrando una anomalia di comportamento tra il funzionamento dell'App di sviluppo e quella di produzione quando si effettua un pagamento da dispositivo mobile. Da desktop tutto funziona regolarmente mentre da mobile il comportamento cambia: il sistema rimanda all'appello regolarmente e la trasmissione avviene correttamente. Tuttavia tornando al browser, mentre in sviluppo il sistema correttamente rimanda alla pagina di ringraziamento, in produzione questo non avviene. Le uniche differenze tra i due sistemi sono l'url della pagina e i parametri di satispay che in un caso sono quelli di sviluppo e nell'altro quelli di produzione. Non riesco a capire che cosa non vada. Lato server non riscontro alcun errore nei log. Qualcuno ha idea di che cosa possa determinare questo comportamento? Grazie
Posted by Alberto Almagioni 4 months ago
jimdo
Buonasera a tutti, c'è modo di integrare satispay in un sito creato con jimdo?
Grazie
Posted by Davide 4 months ago
Authorisation fails
Hello,
we are trying to authorise against the staging environment following the guide in the API documentation with a generated keyId but we constantly get the public role back, meaning the authorisation failed:
{"authentication_key":{"role":"PUBLIC"}, "status_code": 200}
The authorisation is done through a python script which i attached below. I tried different body formatting because apparently the digest always turns out different and also not as expected as in the provided digest checker.
```python python
import hashlib
import base64
import json
import requests
from datetime import datetime
from cryptography.hazmat.primitives import serialization, hashes
from cryptography.hazmat.primitives.asymmetric import padding
# Setup
AUTH_HOST = "staging.authservices.satispay.com"
KEY_ID = "XXX"
# Body format 1
body = {
"flow": "MATCH_CODE",
"amount_unit": 100,
"currency": "EUR"
}
body = json.dumps(body)
# Body format 2
# body2 = "{\n \"flow\": \"MATCH_CODE\",\n \"amount_unit\": 100,\n \"currency\": \"EUR\"\n}"
# Body format 3
# body3 = '''
# {
# "flow": "MATCH_CODE",
# "amount_unit": 100,
# "currency": "EUR"
# }
# '''
# Create a digest of the body
digest = base64.b64encode(hashlib.sha256(body.encode("utf-8")).digest()).decode()
digest = f"SHA-256={digest}"
print(digest)
# Create string for signing
now = datetime.strftime(datetime.utcnow(), "%a, %d %b %Y %H:%M:%S +0000")
print(now)
string = f"(request-target): post /wally-services/protocol/tests/signature\nhost: {AUTH_HOST}\n" \
f"date: {now}\ndigest: {digest}"
# Same thing
# string2 = f'''(request-target): post /wally-services/protocol/tests/signature
# host: staging.authservices.satispay.com
# date: {now}
# digest: {digest}'''
# Sign the string
key_path = "/PATH/TO/PRIVATE/KEY"
with open(key_path, "rb") as key_file: # Load the private key from a PEM file
private_key = serialization.load_pem_private_key(
key_file.read(),
password=None # Replace with the password if the key is encrypted
)
signature = private_key.sign(
string.encode("utf-8"),
padding.PKCS1v15(),
hashes.SHA256()
)
# Convert the signature to Base64 format
signature_b64 = base64.b64encode(signature).decode()
# Create Authorisation header
authorisation_header = f'Signature keyId="{KEY_ID}", ' \
f'algorithm="rsa-sha256", ' \
f'headers="(request-target) host date digest", ' \
f'signature="{signature_b64}"'
# Compose all headers
headers = {
"accept": "application/json",
"content-type": "application/json",
"host": AUTH_HOST,
"date": now,
"digest": digest,
"authorisation": authorisation_header,
}
resp = requests.post(
"https://staging.authservices.satispay.com/wally-services/protocol/tests/signature",
headers=headers, data=body
)
print(resp.text)
print(resp.status_code)
#YIELDS THE FOLLOWING
#{"authentication_key":{"role":"PUBLIC"}}
#200
```
What are we doing wrong or did we oversee something? Can you please provide some help?
Posted by Christoph Koch 5 months ago
Ordini in attesa di pagamento / annullati woocommerce
Buongiorno, da qualche giorno ho un malfunzionamento nel plugin woocommerce satispay. A seguito di una migrazione di hosting, il plugin lato utente funziona correttamente e i pagamenti vengono processati normalmente, ma l'ordine lato backend non va a buon fine: resta in stato "in attesa di pagamento" per qualche ora finché non diventa annullato.
Ho provato a reimpostare il plugin, controllare l'attivazione del cron, disattivato tutti i plugin superflui del sito che potevano bloccare con firewall la risposta del pagamento, e segnalato al mio hosting questo problema.
Insieme all'aiuto dell'hosting e di un tecnico abbiamo individuato l'errore
[Wed May 03 09:08:52.138100 2023] [access_compat:error] [pid 1164511:tid 22907627403008] [client 34.249.61.43:5744] AH01797: client denied by server configuration: /home/khkjuvig/public_html/wc-api
[Wed May 03 09:08:52.138394 2023] [access_compat:error] [pid 1164511:tid 22907627403008] [client 34.249.61.43:5744] AH01797: client denied by server configuration: /home/khkjuvig/public_html/403.shtml
Quando viene effettuato un pagamento con Satispay. L'hosting mi ha consigliato di disattivare ModSecurity che poteva essere la causa del problema, ma non è stato risolutivo.
Potreste aiutarmi a risolvere?
L'hosting mi chiede inoltre di sapere lo user agent utilizzato da voi per poter effettuare altri controlli, è un'informazione che potete fornirmi?
Posted by Francesco Rossi 5 months ago
Api cost
I wish to integrate Satispay on my application and I wish to know the cost (in terms of dollars or euro) in order to use the API.
More in particular:
Are there any Terms of Service? limited calls per day, per user, etc.
Are there any costs to bear? What is the pricing policy?
Posted by renna 5 months ago
Su One-off Web-button custom UX, ogni tanto, sembra che "completed" non venga eseguita
Buongiorno,
Ho implementato su un sito la modalità One-off Web-button con una UX custom, quindi con "var satispay = SatispayWebButton.configure({...})"
Il flusso è abbastanza semplice: al momento del pagamento, salvo l'ordine sul database con stato "non pagato", quindi procedo:
1. alla creazione del paymentId
2. all'apertura della popup di Satispay
3. se l'ordine va a buon fine, al cambio di status dell'ordine sul db da "non pagato" a "pagato"
Il merchant lamenta che, ogni tanto, alcuni ordini, pur pagati, non passano allo status "pagato" e quindi deve controllarli e cambiare manualmente lo status. Ribadisco che il problema si verifica sporadicamente: la maggior parte degli ordini viene correttamente segnato come "pagato", quindi lo script funziona.
Ho messo dei log sia nella fase di creazione del paymentId (che va sempre a buon fine, ottengo sempre una risposta valida) che nella callback "completed": in effetti, nei casi segnalati dal cliente, i log qui non si creano proprio, come se "completed" non venisse eseguita. Eppure, come detto, il pagamento avviene.
Cosa può essere successo in questi casi? C'è qualcosa che mi sfugge ma non riesco a capire cosa
Grazie in anticipo per le risposte
Posted by Ivan 7 months ago
Cannot find shop payment list also with web site
Dear everyone,
I have one problem , because yesterday i tried to pay 1 euro to my shop satispay account, and in my phone i can find the record of payment, but in the web site there's nothing. Same thing with the api i use, i finally can get response :{"has_more":false,"data":[]}. it is like web site , there's no list of payment.
Thanks in advance and best regards
Posted by SUN AZZURRA 7 months ago
StatusCode: 403, ReasonPhrase: 'Forbidden' for my request "https://authservices.satispay.com/g_business/v1/payments?status=ACCEPTED&limit=20"
Dear everyone,
im new in satispay, so i don't know if i have lost some step
(request-target): get https://authservices.satispay.com/g_business/v1/payments?status=ACCEPTED&limit=20
host: authservices.satispay.com
date: Tue, 14 Mar 2023 09:35:34 GMT
digest: SHA-256=47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
my sign: UmjE0wIjuCBrQExCtWnAd5Q+a3/ouo6UpvlAPlRvvxvBin+yLCinY//8AdOwMmo/FO5P3Oeutj3WhVd+Y5aSjuGfd+iTnOy4UJGfKCWz6MpJ7OECHafL5JvGja0T71fnvNrPbcEVnxnIsJL8RlunfXW8kB1b9QgqJjcKThqRGYN0KbYUcJtmS0MsADkLLNDj87qdIYuTrOuDwfWHPvCMCcSsF20a2bZCPqFJ9/z2BfLrCMeF8l6IXD4uCiWCfWSKZIfsYYAMNOhwiPGSRwiMWxW/UFmbFFOT8omTIcmTGRJBE6rMy3f1+EDtIXkoG4tjqVWbQk8H33/7nfOfvqalyzgjK2SHsN19olIZI3CNFbLWVyIGyfaLPlFsnEgVZqzmTtnB5TcmhcGxtYt4tC+WFFv0NzeGwZzB1dY6Kf7/55fTFtWKvY8/8AixDW2MhoUMNNEb2Tp3OU3TPfPV/Hw4f527koM0PztOx4XC3DGItX+jWJGp4aYF/Zfe4OGsLnfkM41ahgX+sp9xkDC+Amczyon+s1Y28SBsD0UE8PcINk9pto3gWhSQnflKjlbvKUdXykmU+FKVQTHT2hb8g7H4QVOD0Ft1WlGUcZBVleCTy5ejnmL1V1l8zEd9KruyPZsHKH2bVYDqcEVm0zBq0VbjsaOT7GRF/k26N6pGZNmPUEI=
my authorization:
Authorization:Signature keyId ="k04rghfef4avi2hshl08h0sgfjhmmcqh28p4o1m9k920rpjg85kt00sil6fdfgqjsjdk62a0m5m6fliqtqn9e1n31ag0s6cs6u4n5poqeu9do556c086qlbimc9eqavtk5srghsbejj4423j72noanfnceplvjeacat1nk0heutekogahgrsk2ivl5hog5ffq2peqim4", algorithm="rsa-sha256", headers="(request-target) host date digest", signature="UmjE0wIjuCBrQExCtWnAd5Q+a3/ouo6UpvlAPlRvvxvBin+yLCinY//8AdOwMmo/FO5P3Oeutj3WhVd+Y5aSjuGfd+iTnOy4UJGfKCWz6MpJ7OECHafL5JvGja0T71fnvNrPbcEVnxnIsJL8RlunfXW8kB1b9QgqJjcKThqRGYN0KbYUcJtmS0MsADkLLNDj87qdIYuTrOuDwfWHPvCMCcSsF20a2bZCPqFJ9/z2BfLrCMeF8l6IXD4uCiWCfWSKZIfsYYAMNOhwiPGSRwiMWxW/UFmbFFOT8omTIcmTGRJBE6rMy3f1+EDtIXkoG4tjqVWbQk8H33/7nfOfvqalyzgjK2SHsN19olIZI3CNFbLWVyIGyfaLPlFsnEgVZqzmTtnB5TcmhcGxtYt4tC+WFFv0NzeGwZzB1dY6Kf7/55fTFtWKvY8/8AixDW2MhoUMNNEb2Tp3OU3TPfPV/Hw4f527koM0PztOx4XC3DGItX+jWJGp4aYF/Zfe4OGsLnfkM41ahgX+sp9xkDC+Amczyon+s1Y28SBsD0UE8PcINk9pto3gWhSQnflKjlbvKUdXykmU+FKVQTHT2hb8g7H4QVOD0Ft1WlGUcZBVleCTy5ejnmL1V1l8zEd9KruyPZsHKH2bVYDqcEVm0zBq0VbjsaOT7GRF/k26N6pGZNmPUEI="
and here the response:
StatusCode: 403, ReasonPhrase: 'Forbidden', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
x-satispay-cid: UxwuDPJ2
Digest: SHA-256=TC4Z8LCF1P4OIEFa7pdWnuGpqyDHwGGSH0Y2/+yZpI0=
Date: Tue, 14 Mar 2023 09:35:31 GMT
Server: Apache
Content-Length: 50
Content-Type: application/json
}
Thanks in advance
Posted by SUN AZZURRA 7 months ago