From 6bfac17baa58ff82f12a3d938e4a929cf17085c7 Mon Sep 17 00:00:00 2001 From: Chris Josten Date: Wed, 3 May 2023 22:33:31 +0200 Subject: [PATCH] update pgp key, add EPC QR code --- index.html | 13 +++++- programmaatjes/ondertekening.js | 72 +++++++++++++++++------------- programmaatjes/qrious-4.0.2.min.js | 6 +++ stijl/standaard.css | 18 ++++++++ 4 files changed, 78 insertions(+), 31 deletions(-) create mode 100644 programmaatjes/qrious-4.0.2.min.js diff --git a/index.html b/index.html index 3aadd7a..88257d1 100644 --- a/index.html +++ b/index.html @@ -13,6 +13,7 @@ + @@ -75,6 +76,15 @@ toch?

  • +

    QR-code voor SEPA-overschrijving

    + +

    + Lees de QR-code hiernaast met je banktoepassing. Werkt zeker met ING en Bunq, werkt mogelijk niet met andere banktoepassingen. +

    +

    + Hiermee maak je naar het IBAN t.a.v. met de omschrijving .

    +
  • +
  • Overmaken

    Je maakt het bedrag over naar mijn bankrekening, met het IBAN en met als omschrijving . @@ -181,7 +191,8 @@

    Wij maken gebruik van:

    diff --git a/programmaatjes/ondertekening.js b/programmaatjes/ondertekening.js index 13c79b7..26ada01 100644 --- a/programmaatjes/ondertekening.js +++ b/programmaatjes/ondertekening.js @@ -1,34 +1,24 @@ console.info("ondertekening.js geladen"); -let publiekeSleutel = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n" + -"\n" + -"mQENBF3FuR0BCACxaQrLc53zFD1ch9lY9tsCcQpmBPRT1x9yPphMcJl+0K3Lu8AB\n" + -"F2Nktvol3oV8LT3JCOT9WXwV2srN3CbTAI2h9P6Bu5tHztCfhotNtgFSeX31r2fc\n" + -"raDaDgWS8iKOHk2SCRaOk4UqkZkjSnKGs56MWCqDjtKYOl3pCvTPzCsEiduJGPtj\n" + -"83xI9WyF3mkGvh9EVcbfGDywfDpZ6zmRfWiAniteZuXLgDtQ4aDC9rfjg6vVTNZz\n" + -"Q6ntVzC5bVLHcIpk4fSEXL0M/0yFwycGkbf2mZbbAMJCnXPKo8EEoZwh4d4SusSy\n" + -"coJzTUV9Azo57eO25iUdvWeDXtukqvMttapJABEBAAG0IENocmlzIEpvc3RlbiA8\n" + -"YmV0YWxlbkBuZXRzb2oubmw+iQFUBBMBCAA+FiEE9y0e0M5kgwkiGmLb2y0MgIMO\n" + -"E30FAl3FuR0CGwMFCQPDShMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ2y0M\n" + -"gIMOE32Cnwf/aFTKv5vxQTDkvTyKPLh/i/AfA4PEDyRF+oX0INTnZ3BwfUZxFoCs\n" + -"XBcxolqtjZdOUPmGEIj0GbDCQs/NyHuqESdiUYdAlodACepqALnIrT2DdlLL5OMx\n" + -"NgyakbrsLSWAKVayDbljuEQ0pU+NfkYFgZFDDRM9dVMRw3CEfnEnjiGmU+S6dx6b\n" + -"011UCtICWS50d0hXxyjCOM+0BEpYD6mH7ZEx+8CIXkAAZgVwGdmRzvbe2KAtgxGo\n" + -"vF+3DzsPfP/GguaUwpFblz6IUnjVKvdc7FYv+1TlJRvCJgKCXWHHtq6eOthIoQgv\n" + -"eJGglnQla0Sys+druwpYPAF/08aWXSBW1bkBDQRdxbkdAQgAtySuGbe3+CDetv5A\n" + -"vodDVSZu9MzreT1zVUce2EDKWYzukEOuqJLU/49sB11Nh59Q+mV7TRle8+0KXsLq\n" + -"3DxZejuN7JBGWKF/6HU8huIunDXkbixK6bPOcXTBKxUJJkW6gRPtwtP03uJqDblq\n" + -"U4huA1NNKTJXdz3kiHRyNIZYVFMDaWiX+btRFr3Vcplo9Gyn+uklzArZZjrdIzwv\n" + -"xBIRDu+cy8uvREy1KRx+AFWUAidKUldrUZ2kMpaOWG663/4Byvv7HcOTKhdiqVLU\n" + -"N9gkeZnr+JQGwme5/+2aZJVuYgjIf89lsYF2y+C4ByNhkaaYkilv7RGhBw+srAdj\n" + -"WDHWvwARAQABiQE8BBgBCAAmFiEE9y0e0M5kgwkiGmLb2y0MgIMOE30FAl3FuR0C\n" + -"GwwFCQPDShMACgkQ2y0MgIMOE32+dAf/doJBIiNn1WqS7jUmek4Yz71AzzsLVo+z\n" + -"5/Q4hDoSaQAXxYZcNt2SUqtmwdZ4vctEWp5xXn9g5ysd82LIT2QR8PRCWdWbiK9Z\n" + -"kGYDjabMsOt/+aACfvxbqrL48oXMdTgAET2t6LSKJHoyNlXPvgwtHxKk5O4tANJR\n" + -"8DmL1H1UlI9mSuipHYPPRTMxMdknnVaiKwVIXdkTm514XxLWLJB3Hkjrb2AHhwxb\n" + -"Lih5kdsxL/DoZ1Ss73SZWVATbpUAtkXbOAcePjGdpUS91krHGFacYSH4plnHGhcT\n" + -"2HfZWiN/fi2hfE9gXhRGYXiS8pRd0eMemt+gUIUkAyRy33BHvzkW2Q==\n" + -" =hGsM\n" + -"-----END PGP PUBLIC KEY BLOCK-----"; +const publiekeSleutel = `-----BEGIN PGP PUBLIC KEY BLOCK----- + +mDMEZFK5rRYJKwYBBAHaRw8BAQdAMTYOa+tK/1ojqvcwm6COXF17/e7mXJi/zsjM +1CWniLK0IENocmlzIEpvc3RlbiA8YmV0YWxlbkBuZXRzb2oubmw+iJkEExYIAEEW +IQTgjDs2/86n2pVsTdyKiCQFquzvCwUCZFK5rQIbAwUJA8MvcwULCQgHAgIiAgYV +CgkICwIEFgIDAQIeBwIXgAAKCRCKiCQFquzvC2v4AP0T+w0GHfW3GcMgexSLAxYU +XsstC+kzhYoeKkX9MiqQwwD9GSi9J3GgxLzRalsgGDkSK3Ia39RWK9uFkg8UCq/I +xAaJATMEEAEIAB0WIQQLgn4CBXfMJA//RIJxt+XUHlPEMwUCZFK6BAAKCRBxt+XU +HlPEM1ZpCACABZ1Iegb0HWs3s/a7OEQz7ynDmGMCndcRnTMX2RhdEv80Ajgh1cuD +LGBFg6i58jzSp1EzKI7QAkv6UuEce+iH1Axdvfx+XQmbft2eo/YYRqLDsg94oIFb +EsXQqOHCTWf57EUAN4beM+3jnHdmq/4ZEu1mJxps7HDxqlO0nrUyBPcjw5SGrmAv +jucs0DTRwTTS1tAcYcdVAG4LxwpAQNiw73bOp++FBPJg3UvV31RxbW0ZIIZ1goWf +ULWnBpCx7qABuBI+LPNUOKA5poAhGymTOh48muau7kBgC6yJmvR5/WEkyISvcbFa +yF//d4JWgUmo8kFE8eRekxYVWEV3Y6pouDgEZFK5rRIKKwYBBAGXVQEFAQEHQMje +uAuRdPjl/LV4lXgs5yW1AAVkNsJfRxwWJ3Vn2zEwAwEIB4h+BBgWCAAmFiEE4Iw7 +Nv/Op9qVbE3ciogkBars7wsFAmRSua0CGwwFCQPDL3MACgkQiogkBars7wvoyAD/ +RFNkqCy0d4pv0cHZMLam1El+mefgPs0gd77kRiNLO78BALKCQOtKE1+INMD+dApP +hs9ssb71ob7pPbLispAYsn8O +=SCX7 +-----END PGP PUBLIC KEY BLOCK-----` let TEKST_FOUT_ENGELS = 0; let TEKST_FOUT_MISSENDE_PARAMETERS = 1; @@ -174,6 +164,28 @@ document.addEventListener("DOMContentLoaded", function() { + betaalLinkParameters.toString(); document.getElementById("betaal-info").style.display = "block"; + + let qrValue = `BCD +002 +1 +SCT + +${aan} +${iban} +${valuta}${bedrag.replace(",", ".")} + + +${betreft} +via betalen.chris.netsoj.nl +`; + + // https://www.europeanpaymentscouncil.eu/sites/default/files/KB/files/EPC069-12%20v2.1%20Quick%20Response%20Code%20-%20Guidelines%20to%20Enable%20the%20Data%20Capture%20for%20the%20Initiation%20of%20a%20SCT.pdf + let qr = new QRious({ + element: document.getElementById('qr-sepa'), + level: "M", + size: 200, + value: qrValue + }); }); diff --git a/programmaatjes/qrious-4.0.2.min.js b/programmaatjes/qrious-4.0.2.min.js new file mode 100644 index 0000000..5735ea6 --- /dev/null +++ b/programmaatjes/qrious-4.0.2.min.js @@ -0,0 +1,6 @@ +/*! QRious v4.0.2 | (C) 2017 Alasdair Mercer | GPL v3 License +Based on jsqrencode | (C) 2010 tz@execpc.com | GPL v3 License +*/ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.QRious=e()}(this,function(){"use strict";function t(t,e){var n;return"function"==typeof Object.create?n=Object.create(t):(s.prototype=t,n=new s,s.prototype=null),e&&i(!0,n,e),n}function e(e,n,s,r){var o=this;return"string"!=typeof e&&(r=s,s=n,n=e,e=null),"function"!=typeof n&&(r=s,s=n,n=function(){return o.apply(this,arguments)}),i(!1,n,o,r),n.prototype=t(o.prototype,s),n.prototype.constructor=n,n.class_=e||o.class_,n.super_=o,n}function i(t,e,i){for(var n,s,a=0,h=(i=o.call(arguments,2)).length;a>1&1,n=0;n0;e--)n[e]=n[e]?n[e-1]^_.EXPONENT[v._modN(_.LOG[n[e]]+t)]:n[e-1];n[0]=_.EXPONENT[v._modN(_.LOG[n[0]]+t)]}for(t=0;t<=i;t++)n[t]=_.LOG[n[t]]},_checkBadness:function(){var t,e,i,n,s,r=0,o=this._badness,a=this.buffer,h=this.width;for(s=0;sh*h;)u-=h*h,c++;for(r+=c*v.N4,n=0;n=o-2&&(t=o-2,s>9&&t--);var a=t;if(s>9){for(r[a+2]=0,r[a+3]=0;a--;)e=r[a],r[a+3]|=255&e<<4,r[a+2]=e>>4;r[2]|=255&t<<4,r[1]=t>>4,r[0]=64|t>>12}else{for(r[a+1]=0,r[a+2]=0;a--;)e=r[a],r[a+2]|=255&e<<4,r[a+1]=e>>4;r[1]|=255&t<<4,r[0]=64|t>>4}for(a=t+3-(s<10);a=5&&(i+=v.N1+n[e]-5);for(e=3;et||3*n[e-3]>=4*n[e]||3*n[e+3]>=4*n[e])&&(i+=v.N3);return i},_finish:function(){this._stringBuffer=this.buffer.slice();var t,e,i=0,n=3e4;for(e=0;e<8&&(this._applyMask(e),(t=this._checkBadness())>=1)1&n&&(s[r-1-e+8*r]=1,e<6?s[8+r*e]=1:s[8+r*(e+1)]=1);for(e=0;e<7;e++,n>>=1)1&n&&(s[8+r*(r-7+e)]=1,e?s[6-e+8*r]=1:s[7+8*r]=1)},_interleaveBlocks:function(){var t,e,i=this._dataBlock,n=this._ecc,s=this._eccBlock,r=0,o=this._calculateMaxLength(),a=this._neccBlock1,h=this._neccBlock2,f=this._stringBuffer;for(t=0;t1)for(t=u.BLOCK[n],i=s-7;;){for(e=s-7;e>t-3&&(this._addAlignment(e,i),!(e6)for(t=d.BLOCK[r-7],e=17,i=0;i<6;i++)for(n=0;n<3;n++,e--)1&(e>11?r>>e-12:t>>e)?(s[5-i+o*(2-n+o-11)]=1,s[2-n+o-11+o*(5-i)]=1):(this._setMask(5-i,2-n+o-11),this._setMask(2-n+o-11,5-i))},_isMasked:function(t,e){var i=v._getMaskBit(t,e);return 1===this._mask[i]},_pack:function(){var t,e,i,n=1,s=1,r=this.width,o=r-1,a=r-1,h=(this._dataBlock+this._eccBlock)*(this._neccBlock1+this._neccBlock2)+this._neccBlock2;for(e=0;ee&&(i=t,t=e,e=i),i=e,i+=e*e,i>>=1,i+=t},_modN:function(t){for(;t>=255;)t=((t-=255)>>8)+(255&t);return t},N1:3,N2:3,N3:40,N4:10}),p=v,m=f.extend({draw:function(){this.element.src=this.qrious.toDataURL()},reset:function(){this.element.src=""},resize:function(){var t=this.element;t.width=t.height=this.qrious.size}}),g=h.extend(function(t,e,i,n){this.name=t,this.modifiable=Boolean(e),this.defaultValue=i,this._valueTransformer=n},{transform:function(t){var e=this._valueTransformer;return"function"==typeof e?e(t,this):t}}),k=h.extend(null,{abs:function(t){return null!=t?Math.abs(t):null},hasOwn:function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},noop:function(){},toUpperCase:function(t){return null!=t?t.toUpperCase():null}}),w=h.extend(function(t){this.options={},t.forEach(function(t){this.options[t.name]=t},this)},{exists:function(t){return null!=this.options[t]},get:function(t,e){return w._get(this.options[t],e)},getAll:function(t){var e,i=this.options,n={};for(e in i)k.hasOwn(i,e)&&(n[e]=w._get(i[e],t));return n},init:function(t,e,i){"function"!=typeof i&&(i=k.noop);var n,s;for(n in this.options)k.hasOwn(this.options,n)&&(s=this.options[n],w._set(s,s.defaultValue,e),w._createAccessor(s,e,i));this._setAll(t,e,!0)},set:function(t,e,i){return this._set(t,e,i)},setAll:function(t,e){return this._setAll(t,e)},_set:function(t,e,i,n){var s=this.options[t];if(!s)throw new Error("Invalid option: "+t);if(!s.modifiable&&!n)throw new Error("Option cannot be modified: "+t);return w._set(s,e,i)},_setAll:function(t,e,i){if(!t)return!1;var n,s=!1;for(n in t)k.hasOwn(t,n)&&this._set(n,t[n],e,i)&&(s=!0);return s}},{_createAccessor:function(t,e,i){var n={get:function(){return w._get(t,e)}};t.modifiable&&(n.set=function(n){w._set(t,n,e)&&i(n,t)}),Object.defineProperty(e,t.name,n)},_get:function(t,e){return e["_"+t.name]},_set:function(t,e,i){var n="_"+t.name,s=i[n],r=t.transform(null!=e?e:t.defaultValue);return i[n]=r,r!==s}}),M=w,b=h.extend(function(){this._services={}},{getService:function(t){var e=this._services[t];if(!e)throw new Error("Service is not being managed with name: "+t);return e},setService:function(t,e){if(this._services[t])throw new Error("Service is already managed with name: "+t);e&&(this._services[t]=e)}}),B=new M([new g("background",!0,"white"),new g("backgroundAlpha",!0,1,k.abs),new g("element"),new g("foreground",!0,"black"),new g("foregroundAlpha",!0,1,k.abs),new g("level",!0,"L",k.toUpperCase),new g("mime",!0,"image/png"),new g("padding",!0,null,k.abs),new g("size",!0,100,k.abs),new g("value",!0,"")]),y=new b,O=h.extend(function(t){B.init(t,this,this.update.bind(this));var e=B.get("element",this),i=y.getService("element"),n=e&&i.isCanvas(e)?e:i.createCanvas(),s=e&&i.isImage(e)?e:i.createImage();this._canvasRenderer=new c(this,n,!0),this._imageRenderer=new m(this,s,s===e),this.update()},{get:function(){return B.getAll(this)},set:function(t){B.setAll(t,this)&&this.update()},toDataURL:function(t){return this.canvas.toDataURL(t||this.mime)},update:function(){var t=new p({level:this.level,value:this.value});this._canvasRenderer.render(t),this._imageRenderer.render(t)}},{use:function(t){y.setService(t.getName(),t)}});Object.defineProperties(O.prototype,{canvas:{get:function(){return this._canvasRenderer.getElement()}},image:{get:function(){return this._imageRenderer.getElement()}}});var A=O,L=h.extend({getName:function(){}}).extend({createCanvas:function(){},createImage:function(){},getName:function(){return"element"},isCanvas:function(t){},isImage:function(t){}}).extend({createCanvas:function(){return document.createElement("canvas")},createImage:function(){return document.createElement("img")},isCanvas:function(t){return t instanceof HTMLCanvasElement},isImage:function(t){return t instanceof HTMLImageElement}});return A.use(new L),A}); + +//# sourceMappingURL=qrious.min.js.map \ No newline at end of file diff --git a/stijl/standaard.css b/stijl/standaard.css index 66801ad..c857baa 100644 --- a/stijl/standaard.css +++ b/stijl/standaard.css @@ -103,3 +103,21 @@ summary { font-weight: bold; padding: 0.25em; } + +.betaal-qr { + float: left; + padding-top: 0; + padding-left: 0; + padding-right: 0.5em; + padding-bottom: 0.5em; + max-width: 100%; + aspect-ratio: 1 / 1; +} + +@media (max-width: 500px) { + .betaal-qr { + float: none; + display: block; + margin: 0 auto; + } +}