Flutter, in_app_purchase: способ отображения даты истечения срока действия или статуса подписки

#flutter #asn.1 #asn1 #in-app-purchase-receipt #flutter-in-app-purchase

#flutter #asn.1 #in-app-purchase-получение #flutter-in-app-purchase

Вопрос:

Используя пакет in_app_purchase: ^ 0.3.5 1, я пытаюсь убедиться, что у пользователя есть активная подписка на iOS.

Я могу получить productID и transactionDate , с. purchaseDetails.productID amp; purchaseDetails.transactionDate Но, похоже, я не могу получить дату истечения срока действия или статус. Просматривая видеоролики Apple, они говорят о «статусных» кучах. Я не уверен, начнет ли кто-нибудь бесплатную 3-дневную пробную версию, если дата транзакции будет известна в случае отмены, поэтому не уверен, что все основано на этой дате транзакции.

Я могу получить purchaseDetails.verificationData.localVerificationData , который, кажется, является строкой ANS1, это может содержать больше информации, но, похоже, я не могу ее расшифровать. Кто-нибудь знает сейчас, как расшифровать это для iOS? Или знаете другой способ получить статус подписки?

Я стараюсь не использовать такие платформы, как RevenueCat (поскольку они сокращаются), хотя, похоже, они предлагают подобные функции.

Ниже приведена строка ASN.1:

 MIIbiQYJKoZIhvcNAQcCoIIbejCCG3YCAQExCzAJBgUrDgMCGgUAMIILKgYJKoZI
hvcNAQcBoIILGwSCCxcxggsTMAoCAQgCAQEEAhYAMAoCARQCAQEEAgwAMAsCAQEC
AQEEAwIBADALAgEDAgEBBAMMATMwCwIBCwIBAQQDAgEAMAsCAQ8CAQEEAwIBADAL
AgEQAgEBBAMCAQAwCwIBGQIBAQQDAgEDMAwCAQoCAQEEBBYCNCswDAIBDgIBAQQE
AgIAyzANAgENAgEBBAUCAwIjqDANAgETAgEBBAUMAzEuMDAOAgEJAgEBBAYCBFAy
NTYwGAIBBAIBAgQQ/UG8mQyNEnmF2PQy51nhPDAbAgEAAgEBBBMMEVByb2R1Y3Rp
b25TYW5kYm94MBsCAQICAQEEEwwRbWlsa2kuZm9jdXMudGltZXIwHAIBBQIBAQQU
j88VIyoRl7su71RrYMoWKY/VmoMwHgIBDAIBAQQWFhQyMDIxLTAxLTA5VDEzOjEz
OjM4WjAeAgESAgEBBBYWFDIwMTMtMDgtMDFUMDc6MDA6MDBaMEICAQcCAQEEOqon
CJy6w5atxqYbNoBJJa3W9WB6qVDijWLZvtDp4yolmsIVkHghqERYsDDj/FUfM9sN
eHQNEYbz8mowTQIBBgIBAQRF4nUjxdFAA0i0vWAK9OR1Y9990SU5jby3UYEwRDLm
rYQ4UJhpEm/mN20wqvhxSqUULT40ZvHz6TXjWvfnvIMIS7/A92nbMIIBgQIBEQIB
AQSCAXcxggFzMAsCAgatAgEBBAIMADALAgIGsAIBAQQCFgAwCwICBrICAQEEAgwA
MAsCAgazAgEBBAIMADALAgIGtAIBAQQCDAAwCwICBrUCAQEEAgwAMAsCAga2AgEB
BAIMADAMAgIGpQIBAQQDAgEBMAwCAgarAgEBBAMCAQMwDAICBq4CAQEEAwIBADAM
AgIGsQIBAQQDAgEAMAwCAga3AgEBBAMCAQAwEgICBq8CAQEECQIHA41 qEntmzAb
AgIGpwIBAQQSDBAxMDAwMDAwNzYyOTU2MjUyMBsCAgapAgEBBBIMEDEwMDAwMDA3
NjI5NTU2MDEwHwICBqYCAQEEFgwUc3Vic2NyaXB0aW9uQW5udWFsMjUwHwICBqgC
AQEEFhYUMjAyMS0wMS0wOVQwODoyMjo0OVowHwICBqoCAQEEFhYUMjAyMS0wMS0w
OVQwODoxODoxMVowHwICBqwCAQEEFhYUMjAyMS0wMS0wOVQwOToyMjo0OVowggGB
AgERAgEBBIIBdzGCAXMwCwICBq0CAQEEAgwAMAsCAgawAgEBBAIWADALAgIGsgIB
AQQCDAAwCwICBrMCAQEEAgwAMAsCAga0AgEBBAIMADALAgIGtQIBAQQCDAAwCwIC
BrYCAQEEAgwAMAwCAgalAgEBBAMCAQEwDAICBqsCAQEEAwIBAzAMAgIGrgIBAQQD
AgEAMAwCAgaxAgEBBAMCAQAwDAICBrcCAQEEAwIBADASAgIGrwIBAQQJAgcDjX6o
Se3OMBsCAganAgEBBBIMEDEwMDAwMDA3NjI5NjI3MzUwGwICBqkCAQEEEgwQMTAw
MDAwMDc2Mjk1NTYwMTAfAgIGpgIBAQQWDBRzdWJzY3JpcHRpb25Bbm51YWwyNTAf
AgIGqAIBAQQWFhQyMDIxLTAxLTA5VDA5OjIyOjQ5WjAfAgIGqgIBAQQWFhQyMDIx
LTAxLTA5VDA4OjE4OjExWjAfAgIGrAIBAQQWFhQyMDIxLTAxLTA5VDEwOjIyOjQ5
WjCCAYECARECAQEEggF3MYIBczALAgIGrQIBAQQCDAAwCwICBrACAQEEAhYAMAsC
AgayAgEBBAIMADALAgIGswIBAQQCDAAwCwICBrQCAQEEAgwAMAsCAga1AgEBBAIM
ADALAgIGtgIBAQQCDAAwDAICBqUCAQEEAwIBATAMAgIGqwIBAQQDAgEDMAwCAgau
AgEBBAMCAQAwDAICBrECAQEEAwIBADAMAgIGtwIBAQQDAgEAMBICAgavAgEBBAkC
BwONfqhJ7 owGwICBqcCAQEEEgwQMTAwMDAwMDc2Mjk3MTU2MTAbAgIGqQIBAQQS
DBAxMDAwMDAwNzYyOTU1NjAxMB8CAgamAgEBBBYMFHN1YnNjcmlwdGlvbkFubnVh
bDI1MB8CAgaoAgEBBBYWFDIwMjEtMDEtMDlUMTA6MjI6NDlaMB8CAgaqAgEBBBYW
FDIwMjEtMDEtMDlUMDg6MTg6MTFaMB8CAgasAgEBBBYWFDIwMjEtMDEtMDlUMTE6
MjI6NDlaMIIBgQIBEQIBAQSCAXcxggFzMAsCAgatAgEBBAIMADALAgIGsAIBAQQC
FgAwCwICBrICAQEEAgwAMAsCAgazAgEBBAIMADALAgIGtAIBAQQCDAAwCwICBrUC
AQEEAgwAMAsCAga2AgEBBAIMADAMAgIGpQIBAQQDAgEBMAwCAgarAgEBBAMCAQMw
DAICBq4CAQEEAwIBADAMAgIGsQIBAQQDAgEAMAwCAga3AgEBBAMCAQAwEgICBq8C
AQEECQIHA41 qEnx5DAbAgIGpwIBAQQSDBAxMDAwMDAwNzYyOTc3NzcwMBsCAgap
AgEBBBIMEDEwMDAwMDA3NjI5NTU2MDEwHwICBqYCAQEEFgwUc3Vic2NyaXB0aW9u
QW5udWFsMjUwHwICBqgCAQEEFhYUMjAyMS0wMS0wOVQxMToyMjo1NFowHwICBqoC
AQEEFhYUMjAyMS0wMS0wOVQwODoxODoxMVowHwICBqwCAQEEFhYUMjAyMS0wMS0w
OVQxMjoyMjo1NFowggGBAgERAgEBBIIBdzGCAXMwCwICBq0CAQEEAgwAMAsCAgaw
AgEBBAIWADALAgIGsgIBAQQCDAAwCwICBrMCAQEEAgwAMAsCAga0AgEBBAIMADAL
AgIGtQIBAQQCDAAwCwICBrYCAQEEAgwAMAwCAgalAgEBBAMCAQEwDAICBqsCAQEE
AwIBAzAMAgIGrgIBAQQDAgEAMAwCAgaxAgEBBAMCAQAwDAICBrcCAQEEAwIBADAS
AgIGrwIBAQQJAgcDjX6oSfQwMBsCAganAgEBBBIMEDEwMDAwMDA3NjI5ODk2ODMw
GwICBqkCAQEEEgwQMTAwMDAwMDc2Mjk1NTYwMTAfAgIGpgIBAQQWDBRzdWJzY3Jp
cHRpb25Bbm51YWwyNTAfAgIGqAIBAQQWFhQyMDIxLTAxLTA5VDEyOjIyOjU0WjAf
AgIGqgIBAQQWFhQyMDIxLTAxLTA5VDA4OjE4OjExWjAfAgIGrAIBAQQWFhQyMDIx
LTAxLTA5VDEzOjIyOjU0WjCCAYECARECAQEEggF3MYIBczALAgIGrQIBAQQCDAAw
CwICBrACAQEEAhYAMAsCAgayAgEBBAIMADALAgIGswIBAQQCDAAwCwICBrQCAQEE
AgwAMAsCAga1AgEBBAIMADALAgIGtgIBAQQCDAAwDAICBqUCAQEEAwIBATAMAgIG
qwIBAQQDAgEDMAwCAgauAgEBBAMCAQAwDAICBrECAQEEAwIBATAMAgIGtwIBAQQD
AgEAMBICAgavAgEBBAkCBwONfqhJ7ZowGwICBqcCAQEEEgwQMTAwMDAwMDc2Mjk1
NTYwMTAbAgIGqQIBAQQSDBAxMDAwMDAwNzYyOTU1NjAxMB8CAgamAgEBBBYMFHN1
YnNjcmlwdGlvbkFubnVhbDI1MB8CAgaoAgEBBBYWFDIwMjEtMDEtMDlUMDg6MTg6
MDlaMB8CAgaqAgEBBBYWFDIwMjEtMDEtMDlUMDg6MTg6MTFaMB8CAgasAgEBBBYW
FDIwMjEtMDEtMDlUMDg6MjA6MDlaoIIOZTCCBXwwggRkoAMCAQICCA7rV4fnngmN
MA0GCSqGSIb3DQEBBQUAMIGWMQswCQYDVQQGEwJVUzETMBEGA1UECgwKQXBwbGUg
SW5jLjEsMCoGA1UECwwjQXBwbGUgV29ybGR3aWRlIERldmVsb3BlciBSZWxhdGlv
bnMxRDBCBgNVBAMMO0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVsYXRpb25z
IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE1MTExMzAyMTUwOVoXDTIzMDIw
NzIxNDg0N1owgYkxNzA1BgNVBAMMLk1hYyBBcHAgU3RvcmUgYW5kIGlUdW5lcyBT
dG9yZSBSZWNlaXB0IFNpZ25pbmcxLDAqBgNVBAsMI0FwcGxlIFdvcmxkd2lkZSBE
ZXZlbG9wZXIgUmVsYXRpb25zMRMwEQYDVQQKDApBcHBsZSBJbmMuMQswCQYDVQQG
EwJVUzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKXPgf0looFb1oft
I9ozHI7iI8ClxCbLPcaf7EoNVYb/pALXl8o5VG19f7JUGJ3ELFJxjmR7gs6JuknW
COW0iHHPP1tGLsbEHbgDqViiBD4heNXbt9COEo2DTFsqaDeTwvK9HsTSoQxKWFKr
EuPt3R YFZA1LcLMEsqNSIH3WHhUa iMMTYfSgYMR1TzN5C4spKJfV khUrhwJzg
uqS7gpdj9CuTwf0 b8rB9Typj1IawCUKdg7e/pn /8Jr9VterHNRSQhWicxDkMyO
gQLQoJe2XLGhaWmHkBBoJiY5uB0Qc7AKXcVz0N92O9gt2Yge4 wHz KO0NP6JlWB
7 IDSSMCAwEAAaOCAdcwggHTMD8GCCsGAQUFBwEBBDMwMTAvBggrBgEFBQcwAYYj
aHR0cDovL29jc3AuYXBwbGUuY29tL29jc3AwMy13d2RyMDQwHQYDVR0OBBYEFJGk
nPzEdrefoIr0TfWPNl3tKwSFMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUiCcX
Cam2GGCL7Ou69kdZxVJUo7cwggEeBgNVHSAEggEVMIIBETCCAQ0GCiqGSIb3Y2QF
BgEwgf4wgcMGCCsGAQUFBwICMIG2DIGzUmVsaWFuY2Ugb24gdGhpcyBjZXJ0aWZp
Y2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRhbmNlIG9mIHRoZSB0aGVu
IGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdXNl
LCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmljYXRpb24gcHJhY3RpY2Ug
c3RhdGVtZW50cy4wNgYIKwYBBQUHAgEWKmh0dHA6Ly93d3cuYXBwbGUuY29tL2Nl
cnRpZmljYXRlYXV0aG9yaXR5LzAOBgNVHQ8BAf8EBAMCB4AwEAYKKoZIhvdjZAYL
AQQCBQAwDQYJKoZIhvcNAQEFBQADggEBAA2mG9MuPeNbKwduQpZs0 iMQzCCX Bc
0Y2 vQ 9GvwlktuMhcOAWd/j4tcuBRSsDdu2uP78NS58y60Xa45/H R3ubFnlbQT
XqYZhnb4WiCV52OMD3P86O3GH66Z GVIXKDgKDrAEDctuaAEOR9zucgF/fLefxoq
Km4rAfygIFzZ630npjP49ZjgvkTbsUxn/G4KT8niBqjSl/OnjmtRolqEdWXRFgRi
48Ff9Qipz2jZkgDJwYyz I0AZLpYYMB8r491ymm5WyrWHWhumEL1TKc3GZvMOxx6
GUPzo22/SGAGDDaSK zeGLUR2i0j0I78oGmcFxuegHs5R0UwYS/HE6gwggQiMIID
CqADAgECAggB3rzEOW2gEDANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQGEwJVUzET
MBEGA1UEChMKQXBwbGUgSW5jLjEmMCQGA1UECxMdQXBwbGUgQ2VydGlmaWNhdGlv
biBBdXRob3JpdHkxFjAUBgNVBAMTDUFwcGxlIFJvb3QgQ0EwHhcNMTMwMjA3MjE0
ODQ3WhcNMjMwMjA3MjE0ODQ3WjCBljELMAkGA1UEBhMCVVMxEzARBgNVBAoMCkFw
cGxlIEluYy4xLDAqBgNVBAsMI0FwcGxlIFdvcmxkd2lkZSBEZXZlbG9wZXIgUmVs
YXRpb25zMUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0
aW9ucyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQAD
ggEPADCCAQoCggEBAMo4VKbLVqrIJDlI6Yzu7F 4fyaRvDRTes58Y4Bhd2RepQcj
tjn UC0VVlhwLX7EbsFKhT4v8N6EGqFXya97GP9q hUSSRUIGayq2yoy7ZZjaFIV
PYyK7L9rGJXgA6wBfZcFZ84OhZU3au0Jtq5nzVFkn8Zc0bxXbmc1gHY2pIeBbjiP
2CsVTnsl2Fq/ToPBjdKT1RpxtWCcnTNOVfkSWAyGuBYNweV3RY1QSLorLeSUheHo
xJ3GaKWwo/xnfnC6AllLd0KRObn1zeFM78A7SIym5SFd/Wpqu6cWNWDS5q3zRinJ
6MOL6XnAamFnFbLw/eVovGJfbs Z3e8bY/6SZasCAwEAAaOBpjCBozAdBgNVHQ4E
FgQUiCcXCam2GGCL7Ou69kdZxVJUo7cwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSME
GDAWgBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjAuBgNVHR8EJzAlMCOgIaAfhh1odHRw
Oi8vY3JsLmFwcGxlLmNvbS9yb290LmNybDAOBgNVHQ8BAf8EBAMCAYYwEAYKKoZI
hvdjZAYCAQQCBQAwDQYJKoZIhvcNAQEFBQADggEBAE/P71m LPWybC P7hOHMugF
Nahui33JaQy52Re8dyzUZ L9mm06WVzfgwG9sq4qYXKxr83DRTCPo4MNzh1HtPGT
iqN0m6TDmHKHOz6vRQuSVLkyu5AYU2sKThC22R1QbCGAColOV4xrWzw9pv3e9w0j
HQtKJoc/upGSTKQZEhltV/V6WId7aIrkhoxK6 JJFKql3VUAqa67SzCu4aCxvCmA
5gl35b40ogHKf9ziCuY7uLvsumKV8wVjQYLNDzsdTJWk26v5yZXpT RN5yaZgem8
 bQp0gF6ZuEujPYhisX4eOGBrr/TkJ2prfOv/TgalmcwHFGlXOxxioK0bA8MFR8w
ggS7MIIDo6ADAgECAgECMA0GCSqGSIb3DQEBBQUAMGIxCzAJBgNVBAYTAlVTMRMw
EQYDVQQKEwpBcHBsZSBJbmMuMSYwJAYDVQQLEx1BcHBsZSBDZXJ0aWZpY2F0aW9u
IEF1dGhvcml0eTEWMBQGA1UEAxMNQXBwbGUgUm9vdCBDQTAeFw0wNjA0MjUyMTQw
MzZaFw0zNTAyMDkyMTQwMzZaMGIxCzAJBgNVBAYTAlVTMRMwEQYDVQQKEwpBcHBs
ZSBJbmMuMSYwJAYDVQQLEx1BcHBsZSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEW
MBQGA1UEAxMNQXBwbGUgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC
AQoCggEBAOSRqQkfkdseR1DrBe1eeYQt6zaiV0xV7IsZid75S2z1B6siMALoGD74
UAnTf0GomPnRymacJGsR0KO75Bsqwx VnnoMpEeLW9QWNzPLxA9NzhRp0ckZcvVd
DtV/X5vyJQO6VY9NXQ3xZDUjFUsVWR2zlPf2nJ7PULrBWFBnjwi0IPfLrCwgb3C2
PwEwjLdDzw dPfMrSSgayP7OtbkO2V4c1ss9tTqt9A8OAJILsSEWLnTVPA3bYhar
o3GSR1NVwa8vQbP4  NwzeajTEV H0xrUJZBicR0YgsQg0GHM4qBsTBY7FoEMoxo
s48d3mVz/2deZbxJ2HafMxRloXeUyS0CAwEAAaOCAXowggF2MA4GA1UdDwEB/wQE
AwIBBjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQr0GlHlHYJ/vRrjS5ApvdH
TX8IXjAfBgNVHSMEGDAWgBQr0GlHlHYJ/vRrjS5ApvdHTX8IXjCCAREGA1UdIASC
AQgwggEEMIIBAAYJKoZIhvdjZAUBMIHyMCoGCCsGAQUFBwIBFh5odHRwczovL3d3
dy5hcHBsZS5jb20vYXBwbGVjYS8wgcMGCCsGAQUFBwICMIG2GoGzUmVsaWFuY2Ug
b24gdGhpcyBjZXJ0aWZpY2F0ZSBieSBhbnkgcGFydHkgYXNzdW1lcyBhY2NlcHRh
bmNlIG9mIHRoZSB0aGVuIGFwcGxpY2FibGUgc3RhbmRhcmQgdGVybXMgYW5kIGNv
bmRpdGlvbnMgb2YgdXNlLCBjZXJ0aWZpY2F0ZSBwb2xpY3kgYW5kIGNlcnRpZmlj
YXRpb24gcHJhY3RpY2Ugc3RhdGVtZW50cy4wDQYJKoZIhvcNAQEFBQADggEBAFw2
mUwteLftjJvc83eb8nbSdzBPwR Fg4UbmT1HN/Kpm0COLNSxkBLYvvRzm 7SZA/L
eU802KI  Xj/a8gH7H05g4tTINM4xLG/mk8Ka/8r/FmnBQl8F0BWER5007eLIztH
o9VvJOLr0bdw3w9F4SfK8W147ee1Fxeo3H4iNcol1dkP1mvUoiQjEfehrI9zgWDG
G1sJL5Ky ERI8GA4nhX1PSZnIIozavcNgs/e66Mv VNqW2TAYzN39zoHLFbr2g8h
Dtq6cxlPtdk2f8GHVdmnmbkyQvvY1XGefqFStxu9k0IkEirHDx22TZxeY8hLgBdQ
qorV2uT80AkHN7B1dSExggHLMIIBxwIBATCBozCBljELMAkGA1UEBhMCVVMxEzAR
BgNVBAoMCkFwcGxlIEluYy4xLDAqBgNVBAsMI0FwcGxlIFdvcmxkd2lkZSBEZXZl
bG9wZXIgUmVsYXRpb25zMUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxv
cGVyIFJlbGF0aW9ucyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eQIIDutXh eeCY0w
CQYFKw4DAhoFADANBgkqhkiG9w0BAQEFAASCAQA00os/nEDLvWqxtyQvpSTIJUH4
fo3p7B9pNkKt7faN1xaj7YJtos1EpGYpw6J4qeCrERAPoNHsUrAFIkxN2KBG86qB
JNIULlY5qGVmsPcAvVceb4jEwHTghiU4 1aGM2oUTOBoVxpJbA6XOT9ZY6ePz0cj
6WPQ abJBMuk28D7V9mbfytPJxJxRjG1n5k5qDTJeH6 M72X T8IOwB6i2tGBG8s
GWYkS eMPgXCtaPPcQBVP9jH7Ri AA7HloZWuUkAtdExz6bn3fPUMd00/z8MYbqI
LNfAd4UidVsNGIudimK/MTjwTWDY2qW/KE7/T9qQhOfLxg5nJnOvFAGKod3U
 

Ответ №1:

Строка действительно является данными ASN.1. Вы можете декодировать строку онлайн, например, с помощью https://lapo.it/asn1js /. Декодированные данные содержат некоторые поля дат, поэтому, возможно, там есть нужная вам информация. Вам понадобится схема ASN.1, чтобы действительно понять, какое поле что означает.

Для того, чтобы декодировать данные ASN.1 в вашем приложении, вам необходимо использовать некоторую библиотеку декодирования ASN.1. Вы также можете попробовать написать декодер TLV (tag-length-value) для ASN.1 BER (основные правила кодирования), который поможет вам получить отдельные поля изданные. Достичь этого не должно быть слишком сложно. После декодирования данных ASN.1 BER в TLV вы можете дополнительно декодировать только некоторые конкретные поля, которые вам полезны.

Комментарии:

1. Спасибо! Судя по всему, я вижу идентификатор и дату транзакции. Никаких признаков даты через 12 месяцев или статуса, возможно, его там нет.

2. Привет, просроченные или отмененные продукты больше не восстанавливаются в приложении. Далее все зависит от вашей логики, например, для вычисления и отображения даты истечения срока действия; просто введите дату транзакции период подписки, определенный для этого продукта при покупке