exchange

Base system with REST service to issue digital coins, run by the payment service provider
Log | Files | Refs | Submodules | README | LICENSE

commit 11b63a55ac14ab49badb525dea87e790b2f0a4c8
parent 6d59f8e0105d50d1ad0fcf141ef3afec5fc528cc
Author: Christian Grothoff <christian@grothoff.org>
Date:   Thu, 10 Apr 2025 18:27:47 +0200

match scripts to TOPS spec

Diffstat:
Msrc/kyclogic/taler-exchange-helper-measure-tops-address-check | 802+++----------------------------------------------------------------------------
1 file changed, 29 insertions(+), 773 deletions(-)

diff --git a/src/kyclogic/taler-exchange-helper-measure-tops-address-check b/src/kyclogic/taler-exchange-helper-measure-tops-address-check @@ -1,7 +1,7 @@ #!/bin/bash # # This file is part of TALER -# Copyright (C) 2024 Taler Systems SA +# Copyright (C) 2024, 2025 Taler Systems SA # # TALER is free software; you can redistribute it and/or modify it under the # terms of the GNU General Public License as published by the Free Software @@ -34,9 +34,8 @@ do case "$OPTION" in a) # Address data is required. - echo "ADDRESS_STREET_NAME" - echo "ADDRESS_ZIPCODE" - echo "ADDRESS_COUNTRY_CC" + echo "ADDRESS_LINES" + echo "ADDRESS_COUNTRY" exit 0 ;; c) @@ -67,7 +66,7 @@ do exit 0 ;; v) - echo "$0 v0.0.0" + echo "$0 v0.0.1" exit 0 ;; V) @@ -91,781 +90,38 @@ fi INPUTS=$(jq '{"current_rules":.current_rules,"attributes":.attributes}') # Get address data -ADDRESS_NAME=$(echo "$INPUTS" | jq '.attributes.PERSON_FULL_NAME // .attributes.BUSINESS_DISPLAY_NAME // null') -# FIXME: -# Set 'name' to either of the two above, whichever one is non-null! - -ADDRESS_STREET_NAME=$(echo "$INPUTS" | jq '.attributes.ADDRESS_STREET_NAME // .attributes.ADDRESS_BUILDING_NAME // null') -ADDRESS_STREET_NUMBER=$(echo "$INPUTS" | jq '.attributes.ADDRESS_STREET_NUMBER // .attributes.ADDRESS_BUILDING_NUMBER // null') -ADDRESS_LINES=$(echo "$INPUTS" | jq '.attributes.ADDRESS_LINES // null') -ADDRESS_ZIPCODE=$(echo "$INPUTS" | jq '.attributes.ADDRESS_ZIPCODE // null') -ADDRESS_TOWN=$(echo "$INPUTS" | jq '.attributes.ADDRESS_TOWN_DISTRICT // .attributes.ADDRESS_TOWN_LOCATION // null') -ADDRESS_COUNTRY_SUBDIVISION=$(echo "$INPUTS" | jq '.attributes.ADDRESS_COUNTRY_SUBDIVISION // null') -ADDRESS_COUNTRY_CC=$(echo "$INPUTS" | jq '.attributes.ADDRESS_COUNTRY_CC // null') - -case "$ADDRESS_COUNTRY_CC" +CUSTOMER_TYPE=$(echo "$INPUTS" | jq '.attributes.CUSTOMER_TYPE // null') +case "$CUSTOMER_TYPE" in - AF) - COUNTRY='Afghanistan' - ;; - AX) - COUNTRY='Åland Islands' - ;; - AL) - COUNTRY='Albania' - ;; - DZ) - COUNTRY='Algeria' - ;; - AS) - COUNTRY='American Samoa' - ;; - AD) - COUNTRY='Andorra' - ;; - AO) - COUNTRY='Angola' - ;; - AI) - COUNTRY='Anguilla' - ;; - AQ) - COUNTRY='Antarctica' - ;; - AG) - COUNTRY='Antigua & Barbuda' - ;; - AR) - COUNTRY='Argentina' - ;; - AM) - COUNTRY='Armenia' - ;; - AW) - COUNTRY='Aruba' - ;; - AU) - COUNTRY='Australia' - ;; - AT) - COUNTRY='Austria' - ;; - AZ) - COUNTRY='Azerbaijan' - ;; - BS) - COUNTRY='Bahamas' - ;; - BH) - COUNTRY='Bahrain' - ;; - BD) - COUNTRY='Bangladesh' - ;; - BB) - COUNTRY='Barbados' - ;; - BY) - COUNTRY='Belarus' - ;; - BE) - COUNTRY='Belgium' - ;; - BZ) - COUNTRY='Belize' - ;; - BJ) - COUNTRY='Benin' - ;; - BM) - COUNTRY='Bermuda' - ;; - BT) - COUNTRY='Bhutan' - ;; - BO) - COUNTRY='Bolivia' - ;; - BA) - COUNTRY='Bosnia & Herzegovina' - ;; - BW) - COUNTRY='Botswana' - ;; - BV) - COUNTRY='Bouvet Island' - ;; - BR) - COUNTRY='Brazil' - ;; - IO) - COUNTRY='British Indian Ocean Territory' - ;; - VG) - COUNTRY='British Virgin Islands' - ;; - BN) - COUNTRY='Brunei' - ;; - BG) - COUNTRY='Bulgaria' - ;; - BF) - COUNTRY='Burkina Faso' - ;; - BI) - COUNTRY='Burundi' - ;; - KH) - COUNTRY='Cambodia' - ;; - CM) - COUNTRY='Cameroon' - ;; - CA) - COUNTRY='Canada' - ;; - CV) - COUNTRY='Cape Verde' - ;; - BQ) - COUNTRY='Caribbean Netherlands' - ;; - KY) - COUNTRY='Cayman Islands' - ;; - CF) - COUNTRY='Central African Republic' - ;; - TD) - COUNTRY='Chad' - ;; - CL) - COUNTRY='Chile' - ;; - CN) - COUNTRY='China' - ;; - CX) - COUNTRY='Christmas Island' - ;; - CC) - COUNTRY='Cocos' - ;; - CO) - COUNTRY='Colombia' - ;; - KM) - COUNTRY='Comoros' - ;; - CG) - COUNTRY='Congo - Brazzaville' - ;; - CD) - COUNTRY='Congo - Kinshasa' - ;; - CK) - COUNTRY='Cook Islands' - ;; - CR) - COUNTRY='Costa Rica' - ;; - CI) - COUNTRY='Côte d’Ivoire' - ;; - HR) - COUNTRY='Croatia' - ;; - CU) - COUNTRY='Cuba' - ;; - CW) - COUNTRY='Curaçao' - ;; - CY) - COUNTRY='Cyprus' - ;; - CZ) - COUNTRY='Czechia' - ;; - DK) - COUNTRY='Denmark' - ;; - DJ) - COUNTRY='Djibouti' - ;; - DM) - COUNTRY='Dominica' - ;; - DO) - COUNTRY='Dominican Republic' - ;; - EC) - COUNTRY='Ecuador' - ;; - EG) - COUNTRY='Egypt' - ;; - SV) - COUNTRY='El Salvador' - ;; - GQ) - COUNTRY='Equatorial Guinea' - ;; - ER) - COUNTRY='Eritrea' - ;; - EE) - COUNTRY='Estonia' - ;; - SZ) - COUNTRY='Eswatini' - ;; - ET) - COUNTRY='Ethiopia' - ;; - FK) - COUNTRY='Falkland Islands' - ;; - FO) - COUNTRY='Faroe Islands' - ;; - FJ) - COUNTRY='Fiji' - ;; - FI) - COUNTRY='Finland' - ;; - FR) - COUNTRY='France' - ;; - GF) - COUNTRY='French Guiana' - ;; - PF) - COUNTRY='French Polynesia' - ;; - TF) - COUNTRY='French Southern Territories' - ;; - GA) - COUNTRY='Gabon' - ;; - GM) - COUNTRY='Gambia' - ;; - GE) - COUNTRY='Georgia' - ;; - DE) - COUNTRY='Germany' - ;; - GH) - COUNTRY='Ghana' - ;; - GI) - COUNTRY='Gibraltar' - ;; - GR) - COUNTRY='Greece' - ;; - GL) - COUNTRY='Greenland' - ;; - GD) - COUNTRY='Grenada' - ;; - GP) - COUNTRY='Guadeloupe' - ;; - GU) - COUNTRY='Guam' - ;; - GT) - COUNTRY='Guatemala' - ;; - GG) - COUNTRY='Guernsey' - ;; - GN) - COUNTRY='Guinea' - ;; - GW) - COUNTRY='Guinea-Bissau' - ;; - GY) - COUNTRY='Guyana' - ;; - HT) - COUNTRY='Haiti' - ;; - HM) - COUNTRY='Heard & McDonald Islands' - ;; - HN) - COUNTRY='Honduras' - ;; - HK) - COUNTRY='Hong Kong SAR China' - ;; - HU) - COUNTRY='Hungary' - ;; - IS) - COUNTRY='Iceland' - ;; - IN) - COUNTRY='India' - ;; - ID) - COUNTRY='Indonesia' - ;; - IR) - COUNTRY='Iran' - ;; - IQ) - COUNTRY='Iraq' - ;; - IE) - COUNTRY='Ireland' - ;; - IM) - COUNTRY='Isle of Man' - ;; - IL) - COUNTRY='Israel' - ;; - IT) - COUNTRY='Italy' - ;; - JM) - COUNTRY='Jamaica' - ;; - JP) - COUNTRY='Japan' - ;; - JE) - COUNTRY='Jersey' - ;; - JO) - COUNTRY='Jordan' - ;; - KZ) - COUNTRY='Kazakhstan' - ;; - KE) - COUNTRY='Kenya' - ;; - KI) - COUNTRY='Kiribati' - ;; - KW) - COUNTRY='Kuwait' - ;; - KG) - COUNTRY='Kyrgyzstan' - ;; - LA) - COUNTRY='Laos' - ;; - LV) - COUNTRY='Latvia' - ;; - LB) - COUNTRY='Lebanon' - ;; - LS) - COUNTRY='Lesotho' - ;; - LR) - COUNTRY='Liberia' - ;; - LY) - COUNTRY='Libya' - ;; - LI) - COUNTRY='Liechtenstein' - ;; - LT) - COUNTRY='Lithuania' - ;; - LU) - COUNTRY='Luxembourg' - ;; - MO) - COUNTRY='Macao SAR China' - ;; - MG) - COUNTRY='Madagascar' - ;; - MW) - COUNTRY='Malawi' - ;; - MY) - COUNTRY='Malaysia' - ;; - MV) - COUNTRY='Maldives' - ;; - ML) - COUNTRY='Mali' - ;; - MT) - COUNTRY='Malta' - ;; - MH) - COUNTRY='Marshall Islands' - ;; - MQ) - COUNTRY='Martinique' - ;; - MR) - COUNTRY='Mauritania' - ;; - MU) - COUNTRY='Mauritius' - ;; - YT) - COUNTRY='Mayotte' - ;; - MX) - COUNTRY='Mexico' - ;; - FM) - COUNTRY='Micronesia' - ;; - MD) - COUNTRY='Moldova' - ;; - MC) - COUNTRY='Monaco' - ;; - MN) - COUNTRY='Mongolia' - ;; - ME) - COUNTRY='Montenegro' - ;; - MS) - COUNTRY='Montserrat' - ;; - MA) - COUNTRY='Morocco' - ;; - MZ) - COUNTRY='Mozambique' - ;; - MM) - COUNTRY='Myanmar' - ;; - NA) - COUNTRY='Namibia' - ;; - NR) - COUNTRY='Nauru' - ;; - NP) - COUNTRY='Nepal' - ;; - NL) - COUNTRY='Netherlands' - ;; - NC) - COUNTRY='New Caledonia' - ;; - NZ) - COUNTRY='New Zealand' - ;; - NI) - COUNTRY='Nicaragua' - ;; - NE) - COUNTRY='Niger' - ;; - NG) - COUNTRY='Nigeria' - ;; - NU) - COUNTRY='Niue' - ;; - NF) - COUNTRY='Norfolk Island' - ;; - KP) - COUNTRY='North Korea' - ;; - MK) - COUNTRY='North Macedonia' - ;; - MP) - COUNTRY='Northern Mariana Islands' - ;; - NO) - COUNTRY='Norway' - ;; - OM) - COUNTRY='Oman' - ;; - PK) - COUNTRY='Pakistan' - ;; - PW) - COUNTRY='Palau' - ;; - PS) - COUNTRY='Palestinian Territories' - ;; - PA) - COUNTRY='Panama' - ;; - PG) - COUNTRY='Papua New Guinea' - ;; - PY) - COUNTRY='Paraguay' - ;; - PE) - COUNTRY='Peru' - ;; - PH) - COUNTRY='Philippines' - ;; - PN) - COUNTRY='Pitcairn Islands' - ;; - PL) - COUNTRY='Poland' - ;; - PT) - COUNTRY='Portugal' - ;; - PR) - COUNTRY='Puerto Rico' - ;; - QA) - COUNTRY='Qatar' - ;; - RE) - COUNTRY='Réunion' - ;; - RO) - COUNTRY='Romania' - ;; - RU) - COUNTRY='Russia' - ;; - RW) - COUNTRY='Rwanda' - ;; - WS) - COUNTRY='Samoa' - ;; - SM) - COUNTRY='San Marino' - ;; - ST) - COUNTRY='São Tomé & Príncipe' - ;; - SA) - COUNTRY='Saudi Arabia' - ;; - SN) - COUNTRY='Senegal' - ;; - RS) - COUNTRY='Serbia' - ;; - SC) - COUNTRY='Seychelles' - ;; - SL) - COUNTRY='Sierra Leone' - ;; - SG) - COUNTRY='Singapore' - ;; - SX) - COUNTRY='Sint Maarten' - ;; - SK) - COUNTRY='Slovakia' - ;; - SI) - COUNTRY='Slovenia' - ;; - SB) - COUNTRY='Solomon Islands' - ;; - SO) - COUNTRY='Somalia' - ;; - ZA) - COUNTRY='South Africa' - ;; - GS) - COUNTRY='South Georgia & South Sandwich Islands' - ;; - KR) - COUNTRY='South Korea' - ;; - SS) - COUNTRY='South Sudan' - ;; - ES) - COUNTRY='Spain' - ;; - LK) - COUNTRY='Sri Lanka' - ;; - BL) - COUNTRY='St. Barthélemy' - ;; - SH) - COUNTRY='St. Helena' - ;; - KN) - COUNTRY='St. Kitts & Nevis' - ;; - LC) - COUNTRY='St. Lucia' - ;; - MF) - COUNTRY='St. Martin' - ;; - PM) - COUNTRY='St. Pierre & Miquelon' - ;; - VC) - COUNTRY='St. Vincent & Grenadines' - ;; - SD) - COUNTRY='Sudan' - ;; - SR) - COUNTRY='Suriname' - ;; - SJ) - COUNTRY='Svalbard & Jan Mayen' - ;; - SE) - COUNTRY='Sweden' - ;; - CH) - COUNTRY='Switzerland' - ;; - SY) - COUNTRY='Syria' - ;; - TW) - COUNTRY='Taiwan' - ;; - TJ) - COUNTRY='Tajikistan' - ;; - TZ) - COUNTRY='Tanzania' - ;; - TH) - COUNTRY='Thailand' - ;; - TL) - COUNTRY='Timor-Leste' - ;; - TG) - COUNTRY='Togo' - ;; - TK) - COUNTRY='Tokelau' - ;; - TO) - COUNTRY='Tonga' - ;; - TT) - COUNTRY='Trinidad & Tobago' - ;; - TN) - COUNTRY='Tunisia' - ;; - TR) - COUNTRY='Turkey' - ;; - TM) - COUNTRY='Turkmenistan' - ;; - TC) - COUNTRY='Turks & Caicos Islands' - ;; - TV) - COUNTRY='Tuvalu' - ;; - UM) - COUNTRY='U.S. Outlying Islands' - ;; - VI) - COUNTRY='U.S. Virgin Islands' - ;; - UG) - COUNTRY='Uganda' - ;; - UA) - COUNTRY='Ukraine' - ;; - AE) - COUNTRY='United Arab Emirates' - ;; - GB) - COUNTRY='United Kingdom' - ;; - US) - COUNTRY='United States' - ;; - UY) - COUNTRY='Uruguay' - ;; - UZ) - COUNTRY='Uzbekistan' - ;; - VU) - COUNTRY='Vanuatu' - ;; - VA) - COUNTRY='Vatican City' - ;; - VE) - COUNTRY='Venezuela' - ;; - VN) - COUNTRY='Vietnam' - ;; - WF) - COUNTRY='Wallis & Futuna' - ;; - EH) - COUNTRY='Western Sahara' - ;; - YE) - COUNTRY='Yemen' - ;; - ZM) - COUNTRY='Zambia' - ;; - ZW) - COUNTRY='Zimbabwe' - ;; + "NATURAL_PERSON") + CONTACT_NAME=$(echo "$INPUTS" | jq '.attributes.FULL_NAME') + ;; + "LEGAL_ENTITY") + BUSINESS_NAME=$(echo "$INPUTS" | jq '.attributes.COMPANY_NAME') + CONTACT_PERSON=$(echo "$INPUTS" | jq '.attributes.CONTACT_PERSON_NAME // null') + if [ "null" != "$CONTACT_PERSON" ] + then + CONTACT_NAME=$(echo -en "${BUSINESS_NAME}\nAttn. ${CONTACT_PERSON_NAME}") + else + CONTACT_NAME="$BUSINESS_NAME" + fi + ;; + "OTHER") *) - echo "ERROR: Country code '${ADDRESS_COUNTRY_CC}' not recognized" 1>&2 - COUNTRY="${ADDRESS_COUNTRY_CC}" + # Strange, we don't know. Let's try everything... + CONTACT_NAME=$(echo "$INPUTS" | jq '.attributes.CONTACT_NAME // attributes.FULL_NAME // .attributes.COMPANY_NAME') ;; esac +ADDRESS_LINES=$(echo "$INPUTS" | jq '.attributes.DOMICILE_ADDRESS') +ADDRESS_COUNTRY=$(echo "$INPUTS" | jq '.attributes.ADDRESS_COUNTRY') + # Convert address data to Challenger format as best we can. ADDRESS=$(jq \ - --argjson full_name "$ADDRESS_NAME $ADDRESS_LINES" \ - --argjson street "$ADDRESS_STREET_NAME $ADDRESS_STREET_NUMBER" \ - --argjson city "$ADDRESS_TOWN" \ - --argjson postcode "$ADDRESS_ZIPCODE" \ - --argjson country "$COUNTRY" \ - '{"full_name":$full_name,"street":$street,"city":$city,"postcode":$postcode,"country":$country}') + --argjson contact_name "$CONTACT_NAME" \ + --argjson address_lines "$ADDRESS_LINES" \ + --argjson address_country "$ADDRESS_COUNTRY" \ + '{"contact_name":$contact_name,"address_lines":$address_lines,"address_country":$address_country}') # Get current rules. CURRENT_RULES=$(echo "$INPUTS" | jq '.current_rules // null')