swoosh 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +7 -0
  2. data/.rubocop.yml +51 -0
  3. data/.tool-versions +1 -0
  4. data/AGENTS.md +13 -0
  5. data/CHANGELOG.md +68 -0
  6. data/Gemfile +17 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +377 -0
  9. data/Rakefile +32 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/certs/Swish_Merchant_TestCertificate_1234679304.csr +27 -0
  13. data/certs/Swish_Merchant_TestCertificate_1234679304.key +52 -0
  14. data/certs/Swish_Merchant_TestCertificate_1234679304.p12 +0 -0
  15. data/certs/Swish_Merchant_TestCertificate_1234679304.pem +98 -0
  16. data/certs/Swish_Merchant_TestSigningCertificate_1234679304.csr +27 -0
  17. data/certs/Swish_Merchant_TestSigningCertificate_1234679304.key +52 -0
  18. data/certs/Swish_Merchant_TestSigningCertificate_1234679304.p12 +0 -0
  19. data/certs/Swish_Merchant_TestSigningCertificate_1234679304.pem +98 -0
  20. data/certs/Swish_TLS_RootCA.pem +22 -0
  21. data/certs/Swish_TechnicalSupplier_TestCertificate_9870474641.csr +27 -0
  22. data/certs/Swish_TechnicalSupplier_TestCertificate_9870474641.key +52 -0
  23. data/certs/Swish_TechnicalSupplier_TestCertificate_9870474641.p12 +0 -0
  24. data/certs/Swish_TechnicalSupplier_TestCertificate_9870474641.pem +98 -0
  25. data/lib/swoosh/callback/controller.rb +31 -0
  26. data/lib/swoosh/callback.rb +35 -0
  27. data/lib/swoosh/certificates.rb +92 -0
  28. data/lib/swoosh/configuration.rb +54 -0
  29. data/lib/swoosh/errors.rb +100 -0
  30. data/lib/swoosh/payment.rb +101 -0
  31. data/lib/swoosh/payment_request.rb +53 -0
  32. data/lib/swoosh/qr_code.rb +36 -0
  33. data/lib/swoosh/railtie.rb +41 -0
  34. data/lib/swoosh/test.rb +116 -0
  35. data/lib/swoosh/token_store.rb +66 -0
  36. data/lib/swoosh/version.rb +5 -0
  37. data/lib/swoosh.rb +172 -0
  38. metadata +86 -0
@@ -0,0 +1,52 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ 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
51
+ HF5ksXJQsBp1ZSrF04WMTCXFnEHZRGc=
52
+ -----END PRIVATE KEY-----
@@ -0,0 +1,98 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ hw==
32
+ -----END CERTIFICATE-----
33
+ -----BEGIN CERTIFICATE-----
34
+ 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
65
+ -----END CERTIFICATE-----
66
+ -----BEGIN CERTIFICATE-----
67
+ MIIFoTCCA4mgAwIBAgIQe0NQ6INMIiyugRazVbqIgjANBgkqhkiG9w0BAQ0FADBQ
68
+ MR4wHAYDVQQDDBVTd2lzaCBSb290IENBIHYyIFRlc3QxGDAWBgNVBAsMD1N3aXNo
69
+ IE1lbWJlciBDQTEUMBIGA1UECgwLR2V0c3dpc2ggQUIwHhcNMTgwNDEzMTE1MzUx
70
+ WhcNMjkwNDEzMTE1MzUxWjBmMSQwIgYDVQQDDBtOb3JkZWEgUm9vdCBDQSB2MiBm
71
+ b3IgU3dpc2gxETAPBgNVBAUTCE5ERUFTRVNTMR4wHAYDVQQKDBVOb3JkZWEgQmFu
72
+ ayBBQiAocHVibCkxCzAJBgNVBAYTAlNFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
73
+ MIICCgKCAgEAwnyBbFdx3xBeGRpkK3zI5ASUYZ5ER/CrOp+kpxjQB0m9uvBirITR
74
+ qyhk40icNME8dy3JN1qdOuuG7NPiNRHaoBS2/4/v1fk+kktz5dcZIX+m18JAgiVw
75
+ agmaF2UXLxqX18BiWdszCMw4GvzUZL8DTtVMVj9By8S7rnhi61HAkYktmfEmm6/F
76
+ UXzp49EThSmtVrFrwZrJXvtArZjRFT92JM7K3TCjSfow0W6a/0EcHqSQA5ItWyHt
77
+ 0llUlVh1kezjBH6zxQSWJA7G2+adFyKLaMJ2gPcZ0W5HO1AAK10WsWsysGqgYRvv
78
+ JzwX00WmUG6A2bPNdvAT+1i9oeV3tmXhM3EArWM8ZZgAv1jBlm7iIxZ8y0UQR47m
79
+ +YHqt8a3l6hX/RnaDD7Tyu5giTV6CoVT4mL76mdLxV24pqAp+6SC5GjrjLnbkHvC
80
+ SjtXfDT5Dq6dRDfSfk4hXHr3I30cPWDmBtBy6gYE/rpK20pM2yeJBi/z36gIrn2A
81
+ I75mEa4fXVti4o0t+KdRvJnMJAXe/sqcX4RjAum3apD0vYCN+tcDNIdDxV7KjbAU
82
+ 0k7IzTW1wiDJRVz0+PbLZP/Sx8+lJBQN+KTU6U6eDy+r9ZszQA2iGaqkOTa0oizX
83
+ eoYhz1wsBCr5X8jEsEO68dzgDSbrvlLgmDFvioC8HxQwJxf4XS7UkDUCAwEAAaNh
84
+ MF8wDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISIS5Rh83PeowFAYDVR0gBA0w
85
+ CzAJBgcqhXCBbQEBMBMGA1UdIwQMMAqACEqxL1U1jBlzMA4GA1UdDwEB/wQEAwIB
86
+ BjANBgkqhkiG9w0BAQ0FAAOCAgEAd5iHMuPFZwBX1HwukvWizO4bAFXFQedQxSiT
87
+ SA7ADEt2JZR+fXCokZ67Wao+YtwKr8yyW++1dgxiIyLlg5BPlaM0LIuH2NpbEaVL
88
+ tpeklOgRou8g7sssy8tReWEzgFU5n9zDynZFUStLaxgincTVJlyi96c3G7shupxi
89
+ FdfqtdazmSIQ+DFzXfXtVsOsE5GzPUvhmi+8pkKnR6cPlwqSRmfFxbWzxsa36ffP
90
+ LIRVUP1OmC30MvwMq3VpObajTkunPZPMYiNASEaR/hspxiPiw4SQi8SJYuBQT6Ky
91
+ KNoo78rknsCu6+L2hgPHomrvaLnrg4kq3idIbCYQk+V8378EUg5cZRca5vhPzMUA
92
+ Zn1AKfC+mMQi7VgL9NHHfHfgP11562C7dPMjweX61UwLEC7HRu21kA3A4TQs9e4E
93
+ nFLxPryJyh0X2kxwdknOyiCDqKGYHU44Ks1L6kouw7+8ugtBaCG3b3cijBasIuuT
94
+ Tk6U6Ce4YdaNzdEKvZ/zhRT6/EuJvBLVABdfFwP42Ji4S+XEo0+OIf/UcmFn4xCf
95
+ mNF6+h/sSJQBIQNhLnZ2tzhuBo4PlcBi4OSmn2rGxzxocH2Mg1YKUlKPnCpgILq5
96
+ ycm2x5j/lbQ00SUgX/a0qZDNtl+VgMaHANOytXGTj9vbCdQAslAymynrrzpFsh48
97
+ JSn319I=
98
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIIEpzCCAo8CAQAwTDELMAkGA1UEBhMCU0UxEzARBgNVBAgMClNvbWUtU3RhdGUx
3
+ EzARBgNVBAoMCjU1NjA5OTc5ODIxEzARBgNVBAMMCjEyMzQ2NzkzMDQwggIiMA0G
4
+ CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDAqNGhw6y8mcCfPdbuRSB4MX//FZkU
5
+ ytsxGJWnbk+UWVm6mpZrjprTubOIIK+vPBp1mQxP+sUSHxRNZvJwI431EtHJAsfE
6
+ ZL0vKo+mToNeeElpvkiLdFF3UDiaKtLqpTQOV40y+yAaH+4ZpKPfQlFfcMw1/tJQ
7
+ cCL/Nl9HxSV1lOW5pbpg4YPk86A9FFExt7W6E+GL2y/DvUQ3mEaO3vND94he2a5C
8
+ 220CH8ozhwkD04oIDQh9lBZjwMgYw2CLJmTj37OB/YkRSIh5QNxNrov9kSPDgb4B
9
+ HLouBPFTm0BAheG9pTJWEBGK3TsdqKHKnEMyt0aRGMBzvU3nCKahfseRGlFwYEGf
10
+ Th1Nsw9479WSAjZD8gsKw+HeLLHpN9C1XU3aVRuXNCdhI5YhNOub1VrprpctkErU
11
+ nxYWdEAPpJ3D0wgN4uPiuCUbbSVkz6t8YsigxxH2rq4qG7Qw/yxvYokssBVzPPkP
12
+ /i4J9/SP10DOouBincYbNGswCYznyLOkGh+5XkZoaQBLWPoUxkpL+ICXiedZjM+h
13
+ m8BmAwtX3HAkYYfujtyANUjcYwEs22et29f+2nUSNAH+zgoFH2sOnWQtfYhDzFvr
14
+ 12WeMv3w6fkAhRUcdP781xJzJwZ5b1GGBUVzlkuu+RqPnS38lXY1pOmnmrxjfnPj
15
+ kGZrEeT6/Y2XZwIDAQABoBYwFAYJKoZIhvcNAQkHMQcMBXN3aXNoMA0GCSqGSIb3
16
+ DQEBCwUAA4ICAQAozT2huKFhfdRxGragpj9zd+jWxz7Yk4oSEfOUIgLk/brb7Txs
17
+ QVko/bDg2QpP05mi99WWOl06TJmnZzmU+rVuONdXFov4wLJJFTnShTZpml6msZgk
18
+ KNTbYMTQDOIQGXgf8RLEFJhbzaNz2w/xerMc7TaKCPV9GZndW48/0Ndqukn79/eC
19
+ n5HTHREsd4ZupH4tzhM+O7x1zwA2nFYgEEY8SEEtNONeK+uBZsjM1dIk2VecA63o
20
+ XfbCF9zfeYh/lVuqiHiJX2evjObgsKDZukasXkmcLMSMNPebuCZ3QN8B071b3qeI
21
+ lkbnl68eClw5h3l8MkJXb2exA+gkvTPKSAuV9odwDtY318q6KQt+Gp7KhmUkV5ex
22
+ qxIPFsbn7AWAtdEpKbJw/ZI+YmWOJ7BB4+hRKysFljHBl8UPxON59pNq+lnskq0f
23
+ qlUv24uTGXtBvUCO1HYBMqwsvkooPYQzGqDHWahvQgrZpJ14K0IL25I5VqAvAuTl
24
+ Ns4YAjTwDLDBd59/8vHURNfV2IJgmSyX0q1JppaAegvNyAT30wDfoYmlcMQNkp6O
25
+ eRFULH1LUqETxp05D9g3gHbrKy3qibVRoKnKqXuux1whRdApEjY6CLFhHvK+nKZW
26
+ gxCAgrOVEy8l+7QxdvZ0Fk3Lwscfj/OTzg78OjU1duFCO/8IGMYrK66Lsw==
27
+ -----END CERTIFICATE REQUEST-----
@@ -0,0 +1,52 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ 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
51
+ 66ACJea2XF/78GKD7iLCycgs1/TYZ9M=
52
+ -----END PRIVATE KEY-----
@@ -0,0 +1,98 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ mw==
32
+ -----END CERTIFICATE-----
33
+ -----BEGIN CERTIFICATE-----
34
+ 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
65
+ -----END CERTIFICATE-----
66
+ -----BEGIN CERTIFICATE-----
67
+ MIIFoTCCA4mgAwIBAgIQe0NQ6INMIiyugRazVbqIgjANBgkqhkiG9w0BAQ0FADBQ
68
+ MR4wHAYDVQQDDBVTd2lzaCBSb290IENBIHYyIFRlc3QxGDAWBgNVBAsMD1N3aXNo
69
+ IE1lbWJlciBDQTEUMBIGA1UECgwLR2V0c3dpc2ggQUIwHhcNMTgwNDEzMTE1MzUx
70
+ WhcNMjkwNDEzMTE1MzUxWjBmMSQwIgYDVQQDDBtOb3JkZWEgUm9vdCBDQSB2MiBm
71
+ b3IgU3dpc2gxETAPBgNVBAUTCE5ERUFTRVNTMR4wHAYDVQQKDBVOb3JkZWEgQmFu
72
+ ayBBQiAocHVibCkxCzAJBgNVBAYTAlNFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
73
+ MIICCgKCAgEAwnyBbFdx3xBeGRpkK3zI5ASUYZ5ER/CrOp+kpxjQB0m9uvBirITR
74
+ qyhk40icNME8dy3JN1qdOuuG7NPiNRHaoBS2/4/v1fk+kktz5dcZIX+m18JAgiVw
75
+ agmaF2UXLxqX18BiWdszCMw4GvzUZL8DTtVMVj9By8S7rnhi61HAkYktmfEmm6/F
76
+ UXzp49EThSmtVrFrwZrJXvtArZjRFT92JM7K3TCjSfow0W6a/0EcHqSQA5ItWyHt
77
+ 0llUlVh1kezjBH6zxQSWJA7G2+adFyKLaMJ2gPcZ0W5HO1AAK10WsWsysGqgYRvv
78
+ JzwX00WmUG6A2bPNdvAT+1i9oeV3tmXhM3EArWM8ZZgAv1jBlm7iIxZ8y0UQR47m
79
+ +YHqt8a3l6hX/RnaDD7Tyu5giTV6CoVT4mL76mdLxV24pqAp+6SC5GjrjLnbkHvC
80
+ SjtXfDT5Dq6dRDfSfk4hXHr3I30cPWDmBtBy6gYE/rpK20pM2yeJBi/z36gIrn2A
81
+ I75mEa4fXVti4o0t+KdRvJnMJAXe/sqcX4RjAum3apD0vYCN+tcDNIdDxV7KjbAU
82
+ 0k7IzTW1wiDJRVz0+PbLZP/Sx8+lJBQN+KTU6U6eDy+r9ZszQA2iGaqkOTa0oizX
83
+ eoYhz1wsBCr5X8jEsEO68dzgDSbrvlLgmDFvioC8HxQwJxf4XS7UkDUCAwEAAaNh
84
+ MF8wDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISIS5Rh83PeowFAYDVR0gBA0w
85
+ CzAJBgcqhXCBbQEBMBMGA1UdIwQMMAqACEqxL1U1jBlzMA4GA1UdDwEB/wQEAwIB
86
+ BjANBgkqhkiG9w0BAQ0FAAOCAgEAd5iHMuPFZwBX1HwukvWizO4bAFXFQedQxSiT
87
+ SA7ADEt2JZR+fXCokZ67Wao+YtwKr8yyW++1dgxiIyLlg5BPlaM0LIuH2NpbEaVL
88
+ tpeklOgRou8g7sssy8tReWEzgFU5n9zDynZFUStLaxgincTVJlyi96c3G7shupxi
89
+ FdfqtdazmSIQ+DFzXfXtVsOsE5GzPUvhmi+8pkKnR6cPlwqSRmfFxbWzxsa36ffP
90
+ LIRVUP1OmC30MvwMq3VpObajTkunPZPMYiNASEaR/hspxiPiw4SQi8SJYuBQT6Ky
91
+ KNoo78rknsCu6+L2hgPHomrvaLnrg4kq3idIbCYQk+V8378EUg5cZRca5vhPzMUA
92
+ Zn1AKfC+mMQi7VgL9NHHfHfgP11562C7dPMjweX61UwLEC7HRu21kA3A4TQs9e4E
93
+ nFLxPryJyh0X2kxwdknOyiCDqKGYHU44Ks1L6kouw7+8ugtBaCG3b3cijBasIuuT
94
+ Tk6U6Ce4YdaNzdEKvZ/zhRT6/EuJvBLVABdfFwP42Ji4S+XEo0+OIf/UcmFn4xCf
95
+ mNF6+h/sSJQBIQNhLnZ2tzhuBo4PlcBi4OSmn2rGxzxocH2Mg1YKUlKPnCpgILq5
96
+ ycm2x5j/lbQ00SUgX/a0qZDNtl+VgMaHANOytXGTj9vbCdQAslAymynrrzpFsh48
97
+ JSn319I=
98
+ -----END CERTIFICATE-----
@@ -0,0 +1,22 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
3
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
4
+ d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
5
+ MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
6
+ MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
7
+ b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
8
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
9
+ 2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
10
+ 1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
11
+ q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
12
+ tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
13
+ vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
14
+ BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
15
+ 5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
16
+ 1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
17
+ NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
18
+ Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
19
+ 8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
20
+ pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
21
+ MrY=
22
+ -----END CERTIFICATE-----
@@ -0,0 +1,27 @@
1
+ -----BEGIN CERTIFICATE REQUEST-----
2
+ MIIEpzCCAo8CAQAwTDELMAkGA1UEBhMCU0UxEzARBgNVBAgMClNvbWUtU3RhdGUx
3
+ EzARBgNVBAoMCjMxOTM2MTY5OTYxEzARBgNVBAMMCjk4NzA0NzQ2NDEwggIiMA0G
4
+ CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC7Kb4YahF+zG2Z93Rke63vjdIwjmXQ
5
+ QAg/54lFTFz1D8WWV/ywf9hLSpdwQoZ6ylekXL1WojX/BL+wMVCOYTox8q8Jhlwq
6
+ ePoVlIAmKW6AcSDP+R5yjeFlJobBCbhl6m8Gq4CDfZlC74xj9zQ+wAPKbqbgS8ge
7
+ 78BCrB78cFp+Yia0CuJxM3cu8CVx8Sh/NWd4V+XT+OMPfkTuz5yoVcqRHx4WGea7
8
+ nWDcZN602R2pfBw49o6aeLgI06sgQyFdZjzLnbG1OIfPg1D+HU1kk4txSE7VImBM
9
+ mKxrK0y9qdGfHIaW+Oj9z+nfd8f4y7u5Mds/v0TiXVFUxO4FBjo3aMs52yy0Rt1p
10
+ IqKFyVqOD+ax3p7RjN9+nbp5wKJEhAL6eeflPpxs83cSOrD7MZoWmJF40rgXnVN8
11
+ UKoSZucFc8QiOIhWGAC/pB880ae2gvA4zThfTWm7dFmMOIF4KUGlONG4DHbFUHW7
12
+ 9jgh83n703C9tdO8qqiS4pvMR6G9ZlTYzLzuF8+NyGG5a6TLg7LrPXkyY1tnO90W
13
+ PSYLa2FzrYLGU1dIVn3Q2d/u7V3a+ZjjvvpQj2BxEBFUopjQNGY50VA61GSB2yS6
14
+ JUAADzyN9LZxxV2lrsWfNOaYiS+JllSW0vyFJPmGqjuAP+L08KhBPt04thWjx688
15
+ JlJhha2IXQV4EQIDAQABoBYwFAYJKoZIhvcNAQkHMQcMBXN3aXNoMA0GCSqGSIb3
16
+ DQEBCwUAA4ICAQA1VTQNX/oYtZT6orauP0WcirvWbuGLO0eQDkfG+eR5PYW1M11J
17
+ Pfbr/zc8MFgwNz47evGHGEv/CdH/vnDrLJ9lUQK1/W5Gmsvh5eD/6dss6+ofohUf
18
+ VYAmWP9aUGfQoPTG2McFK/cl18ki6p25yzT3MtOwkghwoSEW+7C9JkXmghOOT7Ln
19
+ K2I+gqrxyb3P7s0H8vefZO5p/uf1CsJtsvbBr5bXnBoMB26yyPZMhzc+ero2IB/l
20
+ 3dmdd9bUHvzgCqY7XC/2ltYP81pwGkmKnN60tjT3eunKJH//kVQ/61pxETT5tfM3
21
+ bEUqCiZHC8R2Bgj6qeXycoYx4Y+hmhKyAgICoEI3k1xEVB4ZRQC962001Sm2xunL
22
+ iuevD/fBt/lQxYR53MQo9ik2/49B0MtZmWP3oEEZfGigudrwyla7sOdw/gwZn6/r
23
+ dGwRJaDInIH7M7mJAPbKuRyEyWjc/ZWev+hNKdMtmj0HvYG5WLCWM5t3EMbs1ItU
24
+ rHGFBkaIjqX4+t0JENEUuc5zlLYag5QEF5dSVvpHQK8m/myf1UgMj0ZEVkLWJXf9
25
+ Wrza7/94O1zoDMLv/PitiMzb2RIscdK8sD+V7b47M7gsRD9IfE1g+gkGM6c+44Ui
26
+ sCYBL1WjYBSEzaCdHY5ZC9fnSTXzd+XHr6VZEA3GfP5NjzSBT/Wedci+vw==
27
+ -----END CERTIFICATE REQUEST-----
@@ -0,0 +1,52 @@
1
+ -----BEGIN PRIVATE KEY-----
2
+ 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
51
+ wDNH4cxgdYSfcbW0St8uJT2+MY8B8/mT
52
+ -----END PRIVATE KEY-----
@@ -0,0 +1,98 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ Xw==
32
+ -----END CERTIFICATE-----
33
+ -----BEGIN CERTIFICATE-----
34
+ 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
65
+ -----END CERTIFICATE-----
66
+ -----BEGIN CERTIFICATE-----
67
+ MIIFoTCCA4mgAwIBAgIQe0NQ6INMIiyugRazVbqIgjANBgkqhkiG9w0BAQ0FADBQ
68
+ MR4wHAYDVQQDDBVTd2lzaCBSb290IENBIHYyIFRlc3QxGDAWBgNVBAsMD1N3aXNo
69
+ IE1lbWJlciBDQTEUMBIGA1UECgwLR2V0c3dpc2ggQUIwHhcNMTgwNDEzMTE1MzUx
70
+ WhcNMjkwNDEzMTE1MzUxWjBmMSQwIgYDVQQDDBtOb3JkZWEgUm9vdCBDQSB2MiBm
71
+ b3IgU3dpc2gxETAPBgNVBAUTCE5ERUFTRVNTMR4wHAYDVQQKDBVOb3JkZWEgQmFu
72
+ ayBBQiAocHVibCkxCzAJBgNVBAYTAlNFMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A
73
+ MIICCgKCAgEAwnyBbFdx3xBeGRpkK3zI5ASUYZ5ER/CrOp+kpxjQB0m9uvBirITR
74
+ qyhk40icNME8dy3JN1qdOuuG7NPiNRHaoBS2/4/v1fk+kktz5dcZIX+m18JAgiVw
75
+ agmaF2UXLxqX18BiWdszCMw4GvzUZL8DTtVMVj9By8S7rnhi61HAkYktmfEmm6/F
76
+ UXzp49EThSmtVrFrwZrJXvtArZjRFT92JM7K3TCjSfow0W6a/0EcHqSQA5ItWyHt
77
+ 0llUlVh1kezjBH6zxQSWJA7G2+adFyKLaMJ2gPcZ0W5HO1AAK10WsWsysGqgYRvv
78
+ JzwX00WmUG6A2bPNdvAT+1i9oeV3tmXhM3EArWM8ZZgAv1jBlm7iIxZ8y0UQR47m
79
+ +YHqt8a3l6hX/RnaDD7Tyu5giTV6CoVT4mL76mdLxV24pqAp+6SC5GjrjLnbkHvC
80
+ SjtXfDT5Dq6dRDfSfk4hXHr3I30cPWDmBtBy6gYE/rpK20pM2yeJBi/z36gIrn2A
81
+ I75mEa4fXVti4o0t+KdRvJnMJAXe/sqcX4RjAum3apD0vYCN+tcDNIdDxV7KjbAU
82
+ 0k7IzTW1wiDJRVz0+PbLZP/Sx8+lJBQN+KTU6U6eDy+r9ZszQA2iGaqkOTa0oizX
83
+ eoYhz1wsBCr5X8jEsEO68dzgDSbrvlLgmDFvioC8HxQwJxf4XS7UkDUCAwEAAaNh
84
+ MF8wDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISIS5Rh83PeowFAYDVR0gBA0w
85
+ CzAJBgcqhXCBbQEBMBMGA1UdIwQMMAqACEqxL1U1jBlzMA4GA1UdDwEB/wQEAwIB
86
+ BjANBgkqhkiG9w0BAQ0FAAOCAgEAd5iHMuPFZwBX1HwukvWizO4bAFXFQedQxSiT
87
+ SA7ADEt2JZR+fXCokZ67Wao+YtwKr8yyW++1dgxiIyLlg5BPlaM0LIuH2NpbEaVL
88
+ tpeklOgRou8g7sssy8tReWEzgFU5n9zDynZFUStLaxgincTVJlyi96c3G7shupxi
89
+ FdfqtdazmSIQ+DFzXfXtVsOsE5GzPUvhmi+8pkKnR6cPlwqSRmfFxbWzxsa36ffP
90
+ LIRVUP1OmC30MvwMq3VpObajTkunPZPMYiNASEaR/hspxiPiw4SQi8SJYuBQT6Ky
91
+ KNoo78rknsCu6+L2hgPHomrvaLnrg4kq3idIbCYQk+V8378EUg5cZRca5vhPzMUA
92
+ Zn1AKfC+mMQi7VgL9NHHfHfgP11562C7dPMjweX61UwLEC7HRu21kA3A4TQs9e4E
93
+ nFLxPryJyh0X2kxwdknOyiCDqKGYHU44Ks1L6kouw7+8ugtBaCG3b3cijBasIuuT
94
+ Tk6U6Ce4YdaNzdEKvZ/zhRT6/EuJvBLVABdfFwP42Ji4S+XEo0+OIf/UcmFn4xCf
95
+ mNF6+h/sSJQBIQNhLnZ2tzhuBo4PlcBi4OSmn2rGxzxocH2Mg1YKUlKPnCpgILq5
96
+ ycm2x5j/lbQ00SUgX/a0qZDNtl+VgMaHANOytXGTj9vbCdQAslAymynrrzpFsh48
97
+ JSn319I=
98
+ -----END CERTIFICATE-----
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../callback"
4
+
5
+ module Swoosh
6
+ module Callback
7
+ # The Rails half: nothing but the glue that hands Swoosh::Callback the raw
8
+ # body. All the behaviour lives in the plain module.
9
+ #
10
+ # class Swish::CallbacksController < ApplicationController
11
+ # include Swoosh::Callback::Controller
12
+ # skip_forgery_protection
13
+ #
14
+ # def create
15
+ # payment = swoosh_verified_payment
16
+ # Order.find_by!(swish_payment_id: payment.id).settle!(payment) if payment.paid?
17
+ # head :ok
18
+ # end
19
+ # end
20
+ module Controller
21
+ include Swoosh::Callback
22
+
23
+ private
24
+
25
+ def swoosh_callback_body
26
+ request.body.rewind if request.body.respond_to?(:rewind)
27
+ request.body.read
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Swoosh
4
+ # Framework-agnostic handling of the callback Swish POSTs when a payment
5
+ # settles. Include it anywhere and define `swoosh_callback_body` to return the
6
+ # raw request body:
7
+ #
8
+ # class Handler
9
+ # include Swoosh::Callback
10
+ #
11
+ # def initialize(body) = @body = body
12
+ # def swoosh_callback_body = @body
13
+ # end
14
+ #
15
+ # Rails controllers get that method for free from Swoosh::Callback::Controller.
16
+ module Callback
17
+ # The body as Swish sent it. UNAUTHENTICATED: Swish does not sign payment
18
+ # callbacks, so anyone who guesses a payment id can post one. Fine for
19
+ # logging; don't settle an order on it.
20
+ def swoosh_callback
21
+ @swoosh_callback ||= Payment.from_callback(swoosh_callback_body)
22
+ end
23
+
24
+ # The payment as Swish reports it over mTLS. This is the one to act on: it
25
+ # costs one request on a path that fires once per payment, and it makes the
26
+ # callback and the poller end at exactly the same place.
27
+ def swoosh_verified_payment
28
+ @swoosh_verified_payment ||= Swoosh.find_payment(swoosh_callback.id)
29
+ end
30
+
31
+ def swoosh_callback_body
32
+ raise NotImplementedError, "#{self.class} must define #swoosh_callback_body"
33
+ end
34
+ end
35
+ end