Discussions

Ask a Question

Callback Url Function

Buongiorno a partire dal 1 Giugno 2023 la funzione callback_url viene richiamata 3 volte con lo stesso payload per ogni cambio di stato. Potete verificare l'anomalia?
ANSWERED

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
ANSWERED

jimdo

Buonasera a tutti, c'è modo di integrare satispay in un sito creato con jimdo? Grazie
ANSWERED

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?
ANSWERED

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?
ANSWERED

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?
ANSWERED

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
ANSWERED

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
ANSWERED

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
ANSWERED

Obtain the KeyId

Hi, in "Obtain the KeyId", i read: "token string required -> Activation code that can be generated from the Satispay Dashboard (or provided manually for Sandbox account)". In Sandbox account where can i find the Activation code ? Or how can i obtain it?