Bayyanar API na pacs008
Aikin yana ba da REST API da CLI don ayyukan sarrafa saƙonnin biyan kuɗi.
Shigarwa
Shigar da fakitin daga PyPI. Ana buƙatar Python 3.10 ko na baya.
python -m pip install pacs008
REST API
Fara sabar FastAPI ɗin da aka gina a ciki don samar da ƙarshen HTTP don tabbatarwa da ƙirƙira.
Fara sabar
uvicorn pacs008.api.app:app --reload --host 0.0.0.0 --port 8000
Ƙarshen hanyoyi
| Endpoint | Bayani |
|---|---|
GET /api/health | Health check that returns service status |
POST /api/validate | Validate payment data without generating XML |
POST /api/generate | Generate XML now and return the file |
POST /api/generate/async | Submit an async generation job |
GET /api/status/{job_id} | Check job status by ID |
GET /api/download/{job_id} | Download XML after the job completes |
DELETE /api/jobs/{job_id} | Cancel a pending or running job |
GET /api/docs | Swagger UI for testing all endpoints |
pacs.002.001.12— Rahoton matsayin biyan kuɗi tsakanin cibiyoyin kuɗipacs.003.001.09— Cire kuɗi kai tsaye na abokin ciniki tsakanin cibiyoyin kuɗipacs.004.001.11— Mayar da biyan kuɗipacs.007.001.11— Soke biyan kuɗi tsakanin cibiyoyin kuɗipacs.008.001.13— Canja wurin kuɗi na abokin ciniki tsakanin cibiyoyin kuɗipacs.009.001.10— Canja wurin kuɗi tsakanin cibiyoyin kuɗipacs.010.001.05— Cire kuɗi kai tsaye tsakanin cibiyoyin kuɗipacs.028.001.05— Neman matsayin biyan kuɗi tsakanin cibiyoyin kuɗi
Misalin tabbatarwa
Ƙaddamar da bayanan biyan kuɗi don tabbatarwa kafin ƙirƙirar XML.
curl -X POST http://localhost:8000/api/validate \
-H "Content-Type: application/json" \
-d '{
"message_type": "pacs.008.001.13",
"data": [{
"msg_id": "MSG-2026-001",
"creation_date_time": "2026-01-15T10:30:00",
"nb_of_txs": "1",
"settlement_method": "CLRG",
"interbank_settlement_date": "2026-01-15",
"end_to_end_id": "E2E-INV-2026-001",
"interbank_settlement_amount": "25000.00",
"interbank_settlement_currency": "EUR",
"charge_bearer": "SHAR",
"debtor_name": "Acme Corp GmbH",
"debtor_agent_bic": "DEUTDEFF",
"creditor_agent_bic": "COBADEFF",
"creditor_name": "Widget Industries SA"
}]
}'
{
"valid": true,
"message_type": "pacs.008.001.13",
"errors": [],
"warnings": []
}
Misalin ƙirƙira a daidai lokaci
Ƙirƙirar fayilin XML pacs.008.001.13 daga bayanan JSON.
curl -X POST http://localhost:8000/api/generate \
-H "Content-Type: application/json" \
-d '{
"message_type": "pacs.008.001.13",
"template": "pacs008/templates/pacs.008.001.13/template.xml",
"schema": "pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd",
"data": [{
"msg_id": "MSG-2026-001",
"creation_date_time": "2026-01-15T10:30:00",
"nb_of_txs": "1",
"settlement_method": "CLRG",
"interbank_settlement_date": "2026-01-15",
"end_to_end_id": "E2E-INV-2026-001",
"tx_id": "TX-001",
"interbank_settlement_amount": "25000.00",
"interbank_settlement_currency": "EUR",
"charge_bearer": "SHAR",
"debtor_name": "Acme Corp GmbH",
"debtor_agent_bic": "DEUTDEFF",
"creditor_agent_bic": "COBADEFF",
"creditor_name": "Widget Industries SA"
}]
}' --output pacs008_output.xml
Ƙirƙira mara daidaituwa
Don manyan fayiloli ko amfani da bututu, ƙaddamar da aikin mara daidaituwa kuma bincika har sai ya kammala.
# Submit the job
JOB=$(curl -s -X POST http://localhost:8000/api/generate/async \
-H "Content-Type: application/json" \
-d '{"message_type":"pacs.008.001.13","data":[...]}')
JOB_ID=$(echo $JOB | jq -r '.job_id')
# Poll for completion
curl http://localhost:8000/api/status/$JOB_ID
# Download the result
curl http://localhost:8000/api/download/$JOB_ID --output result.xml
{
"job_id": "8f7f0d4b-7df9-4d1a-8d47-19f4f28b6d38",
"status": "completed",
"message_type": "pacs.008.001.13",
"download_url": "/api/download/8f7f0d4b-7df9-4d1a-8d47-19f4f28b6d38"
}
CLI
Hanyar layin umarni tana karɓar fayilin bayanai, sigar saƙo, samfuri, da tsari. Tana tabbatar da shigarwa kuma tana rubuta XML ɗin da aka ƙirƙira zuwa kundin fitarwa.
Amfani na asali
pacs008 -t \
-m \
-s \
-d
Misali
pacs008 -t pacs.008.001.13 \
-m pacs008/templates/pacs.008.001.13/template.xml \
-s pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd \
-d payments.csv
Yanayin gwaji-bushewa
Yi amfani da --dry-run don tabbatar da bayanan shigarwa ba tare da ƙirƙirar XML ba. Lambar fitarwa tana nuna ko tabbatarwa ta wuce (0) ko ta gaza (1).
pacs008 -t pacs.008.001.13 \
-m pacs008/templates/pacs.008.001.13/template.xml \
-s pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd \
-d payments.csv \
--dry-run
Ƙara --verbose don cikakken fitarwa yayin ƙirƙira.
Python API
Yi amfani da ɗakin karatu kai tsaye a cikin rubutun Python ko sabis.
Ƙirƙirar XML daga bayanan biyan kuɗi
from pacs008 import generate_xml_string
payments = [{
"msg_id": "MSG-2026-001",
"creation_date_time": "2026-01-15T10:30:00",
"nb_of_txs": "1",
"settlement_method": "CLRG",
"interbank_settlement_date": "2026-01-15",
"end_to_end_id": "E2E-INV-2026-001",
"tx_id": "TX-001",
"interbank_settlement_amount": "25000.00",
"interbank_settlement_currency": "EUR",
"charge_bearer": "SHAR",
"debtor_name": "Acme Corp GmbH",
"debtor_agent_bic": "DEUTDEFF",
"creditor_agent_bic": "COBADEFF",
"creditor_name": "Widget Industries SA",
}]
xml = generate_xml_string(
payments,
"pacs.008.001.13",
"pacs008/templates/pacs.008.001.13/template.xml",
"pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd",
)
print(xml)
Binciken biyayya na SWIFT
Bincika kuma tsaftace bayanai akan ƙa'idodin haruffa da tsawon fili na SWIFT kafin ƙirƙira.
from pacs008.compliance import cleanse_data_with_report
raw = [{"debtor_name": "Müller & Söhne™", "msg_id": "X" * 50}]
clean, report = cleanse_data_with_report(raw)
print(report.summary())
Docker
Gudanar da API a cikin akwati ta amfani da Dockerfile ɗin da aka haɗa.
docker build -t pacs008:latest .
docker run -p 8000:8000 pacs008:latest
docker run --rm -e PACS008_LOG_LEVEL=INFO -v $PWD/examples:/data -p 8000:8000 pacs008:latest
Tabbatar da IBAN da BIC
Tabbatar da masu ganowa na kuɗi daban da ƙirƙirar XML.
from pacs008.validation import validate_iban, validate_bic
is_valid, error = validate_iban("DE89370400440532013000", strict=False)
is_valid, error = validate_bic("DEUTDEFF", strict=False)
Kwararar bayanai
Ɗaukar manyan bayanan bayanai a cikin guntaye masu iya saiti don iyakance amfani da ƙwaƙwalwar ajiya.
from pacs008.data.loader import load_payment_data_streaming
for chunk in load_payment_data_streaming("large_payments.csv", chunk_size=500):
print(f"Processing {len(chunk)} records")
from pacs008.validation import validate_batch
for chunk in load_payment_data_streaming("large_payments.csv", chunk_size=500):
report = validate_batch(chunk, "pacs.008.001.13")
print(report.summary())
Sabis na tabbatarwa
Gudanar da cikakken bututun tabbatarwa kafin ƙirƙira ta hanyar shirye-shirye.
from pacs008.validation import ValidationService, ValidationConfig
service = ValidationService()
report = service.validate_all(ValidationConfig(
xml_message_type="pacs.008.001.13",
xml_template_file_path="pacs008/templates/pacs.008.001.13/template.xml",
xsd_schema_file_path="pacs008/templates/pacs.008.001.13/pacs.008.001.13.xsd",
data_file_path="payments.csv",
))
print(report.is_valid, report.errors)
Filayen bayanai da ake buƙata
Kowane rikodin biyan kuɗi dole ne ya ƙunshi waɗannan filaye. Filayen da suka danganci siga an lissafa su a ƙasa.
| Fili | Bayani | Ƙayyadaddun sharadi |
|---|---|---|
msg_id | Mai ganowa saƙo | Mafi yawan haruffa 35 |
creation_date_time | Tambarin lokaci na ƙirƙira | Tsarin ISO 8601 |
nb_of_txs | Adadin ciniki | Adadi mai kyau |
settlement_method | Hanyar biyan kuɗi | CLRG, INDA, COVE, ko INGA |
end_to_end_id | Mai ganowa daga farko zuwa ƙarshe | Mafi yawan haruffa 35 |
interbank_settlement_amount | Adadin biyan kuɗi tsakanin bankuna | Adadi mai dasimai, misali `25000.00` |
interbank_settlement_currency | Kuɗin biyan kuɗi | Lambar ISO 4217 |
charge_bearer | Mai ɗaukar cajin | DEBT, CRED, SHAR, ko SLEV |
debtor_name | Sunan mai bashi | Mafi yawan haruffa 140 |
debtor_agent_bic | BIC na wakilin mai bashi | Haruffa 8 ko 11 |
creditor_agent_bic | BIC na wakilin mai ba da bashi | Haruffa 8 ko 11 |
creditor_name | Sunan mai ba da bashi | Mafi yawan haruffa 140 |
Filayen da suka danganci siga
| Fili | Bayani | Ƙayyadaddun sharadi |
|---|---|---|
uetr | Nassarin ciniki na musamman daga farko zuwa ƙarshe | Tsarin UUID — yana samuwa daga v08 |
mandate_id | Mai ganowa izini | Yana samuwa daga v10 |
expiry_date_time | Tambarin lokaci na ƙarewar saƙo | Yana samuwa a v13 |