{ "info": { "_postman_id": "b452c872-707a-42fb-9e1b-c8520c4e0a19", "name": "Giffgaff", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "_exporter_id": "2203562" }, "item": [ { "name": "發送認證郵件 Send Email Verification", "event": [ { "listen": "test", "script": { "exec": [ "pm.collectionVariables.set(\"email_code_ref\", pm.response.json().ref);" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\r\n\t\"source\": \"esim\",\r\n\t\"preferredChannels\": [\"EMAIL\"]\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "https://id.giffgaff.com/v4/mfa/challenge/me", "protocol": "https", "host": [ "id", "giffgaff", "com" ], "path": [ "v4", "mfa", "challenge", "me" ] } }, "response": [] }, { "name": "檢查郵件認證碼 Verify Email code", "event": [ { "listen": "test", "script": { "exec": [ "pm.collectionVariables.set(\"email_signature\", pm.response.json().signature);" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [ "pm.collectionVariables.set(\"email_code\", pm.request.url.query.get(\"code\"));" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "body": { "mode": "raw", "raw": "{\r\n\t\"ref\": \"{{email_code_ref}}\",\r\n\t\"code\": \"{{email_code}}\"\r\n}", "options": { "raw": { "language": "json" } } }, "url": { "raw": "https://id.giffgaff.com/v4/mfa/validation?code=159804", "protocol": "https", "host": [ "id", "giffgaff", "com" ], "path": [ "v4", "mfa", "validation" ], "query": [ { "key": "code", "value": "159804" } ] } }, "response": [] }, { "name": "取得會員資訊 Get Member", "event": [ { "listen": "test", "script": { "exec": [ "pm.collectionVariables.set(\"memberId\", pm.response.json().data.memberProfile.id);\r", "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [ "console.log(pm.collectionVariables.get(\"email_signature\"))\r", "if(pm.collectionVariables.get(\"email_signature\")==null || pm.collectionVariables.get(\"email_signature\")== \"\"){\r", " console.error(\"Email 尚未驗證\");\r", " throw new Error(\"Email 尚未驗證\");\r", "}" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [], "body": { "mode": "graphql", "graphql": { "query": "query getMemberProfileAndSim {\r\n memberProfile {\r\n id\r\n memberName\r\n __typename\r\n }\r\n sim {\r\n phoneNumber\r\n status\r\n __typename\r\n }\r\n}\r\n", "variables": "" } }, "url": { "raw": "https://publicapi.giffgaff.com/gateway/graphql", "protocol": "https", "host": [ "publicapi", "giffgaff", "com" ], "path": [ "gateway", "graphql" ] } }, "response": [] }, { "name": "申請 SIM卡 Reserve SIM", "event": [ { "listen": "test", "script": { "exec": [ "pm.collectionVariables.set(\"esim_ssn\", pm.response.json().data.reserveESim.esim.ssn);\r", "pm.collectionVariables.set(\"esim_activation_code\", pm.response.json().data.reserveESim.esim.activationCode);\r", "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "x-gg-app-os", "value": "iOS", "type": "text" }, { "key": "x-gg-app-os-version", "value": "14", "type": "text" }, { "key": "x-gg-app-build-number", "value": "722", "type": "text" }, { "key": "x-gg-app-device-manufacturer", "value": "apple", "type": "text" }, { "key": "x-gg-app-device-model", "value": "iphone15", "type": "text" }, { "key": "x-gg-app-version", "value": "13.21.2", "type": "text" } ], "body": { "mode": "graphql", "graphql": { "query": "mutation reserveESim($input: ESimReservationInput!) {\r\n reserveESim: reserveESim(input: $input) {\r\n id\r\n memberId\r\n reservationStartDate\r\n reservationEndDate\r\n status\r\n esim {\r\n ssn\r\n activationCode\r\n deliveryStatus\r\n associatedMemberId\r\n __typename\r\n }\r\n __typename\r\n }\r\n}\r\n", "variables": "{\r\n \"input\": {\r\n\t\t\"memberId\": \"{{memberId}}\",\r\n\t\t\"userIntent\": \"SWITCH\"\r\n\t}\r\n}" } }, "url": { "raw": "https://publicapi.giffgaff.com/gateway/graphql", "protocol": "https", "host": [ "publicapi", "giffgaff", "com" ], "path": [ "gateway", "graphql" ] } }, "response": [] }, { "name": "申請交換eSIM Swap SIM", "event": [ { "listen": "test", "script": { "exec": [ "" ], "type": "text/javascript" } }, { "listen": "prerequest", "script": { "exec": [ "" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "x-gg-app-os", "value": "iOS", "type": "text" }, { "key": "x-gg-app-os-version", "value": "14", "type": "text" }, { "key": "x-gg-app-build-number", "value": "722", "type": "text" }, { "key": "x-gg-app-device-manufacturer", "value": "apple", "type": "text" }, { "key": "x-gg-app-device-model", "value": "iphone15", "type": "text" }, { "key": "x-gg-app-version", "value": "13.21.2", "type": "text" } ], "body": { "mode": "graphql", "graphql": { "query": "mutation SwapSim($activationCode: String!, $mfaSignature: String!) {\r\n swapSim(activationCode: $activationCode, mfaSignature: $mfaSignature) {\r\n old {\r\n ssn\r\n activationCode\r\n __typename\r\n }\r\n new {\r\n ssn\r\n activationCode\r\n __typename\r\n }\r\n __typename\r\n }\r\n}\r\n", "variables": "{\r\n\t\"activationCode\": \"{{esim_activation_code}}\",\r\n\t\"mfaSignature\": \"{{email_signature}}\"\r\n}" } }, "url": { "raw": "https://publicapi.giffgaff.com/gateway/graphql", "protocol": "https", "host": [ "publicapi", "giffgaff", "com" ], "path": [ "gateway", "graphql" ] } }, "response": [] }, { "name": "取得eSIM Get ESIMs", "request": { "method": "POST", "header": [ { "key": "x-gg-app-os", "value": "iOS", "type": "text" }, { "key": "x-gg-app-os-version", "value": "14", "type": "text" }, { "key": "x-gg-app-build-number", "value": "722", "type": "text" }, { "key": "x-gg-app-device-manufacturer", "value": "apple", "type": "text" }, { "key": "x-gg-app-device-model", "value": "iphone15", "type": "text" }, { "key": "x-gg-app-version", "value": "13.21.2", "type": "text" } ], "body": { "mode": "graphql", "graphql": { "query": "query getESims($deliveryStatus: ESimDeliveryStatus!) {\r\n eSims(deliveryStatus: $deliveryStatus) {\r\n ssn\r\n __typename\r\n }\r\n}\r\n", "variables": "{\r\n\t\"deliveryStatus\": \"DOWNLOADABLE\"\r\n}" } }, "url": { "raw": "https://publicapi.giffgaff.com/gateway/graphql", "protocol": "https", "host": [ "publicapi", "giffgaff", "com" ], "path": [ "gateway", "graphql" ] } }, "response": [] }, { "name": "取得eSIM下載碼 Get ESIM Token", "event": [ { "listen": "test", "script": { "exec": [ "pm.collectionVariables.set(\"lpa_string\", pm.response.json().data.eSimDownloadToken.lpaString);" ], "type": "text/javascript" } } ], "request": { "method": "POST", "header": [ { "key": "x-gg-app-os", "value": "iOS", "type": "text" }, { "key": "x-gg-app-os-version", "value": "14", "type": "text" }, { "key": "x-gg-app-build-number", "value": "722", "type": "text" }, { "key": "x-gg-app-device-manufacturer", "value": "apple", "type": "text" }, { "key": "x-gg-app-device-model", "value": "iphone15", "type": "text" }, { "key": "x-gg-app-version", "value": "13.21.2", "type": "text" } ], "body": { "mode": "graphql", "graphql": { "query": "query eSimDownloadToken($ssn: String!) {\r\n eSimDownloadToken(ssn: $ssn) {\r\n id\r\n host\r\n matchingId\r\n lpaString\r\n __typename\r\n }\r\n}\r\n", "variables": "{\r\n\t\"ssn\": \"{{esim_ssn}}\"\r\n}" } }, "url": { "raw": "https://publicapi.giffgaff.com/gateway/graphql", "protocol": "https", "host": [ "publicapi", "giffgaff", "com" ], "path": [ "gateway", "graphql" ] } }, "response": [] }, { "name": "產生QRCode Get ESIM QRCode", "request": { "method": "GET", "header": [], "url": { "raw": "https://chart.googleapis.com/chart?cht=qr&chs=200x200&chl={{lpa_string}}", "protocol": "https", "host": [ "chart", "googleapis", "com" ], "path": [ "chart" ], "query": [ { "key": "cht", "value": "qr" }, { "key": "chs", "value": "200x200" }, { "key": "chl", "value": "{{lpa_string}}" } ] } }, "response": [] } ], "auth": { "type": "oauth2", "oauth2": [ { "key": "refreshRequestParams", "value": [], "type": "any" }, { "key": "tokenRequestParams", "value": [], "type": "any" }, { "key": "authRequestParams", "value": [], "type": "any" }, { "key": "tokenName", "value": "Giffgaff", "type": "string" }, { "key": "challengeAlgorithm", "value": "S256", "type": "string" }, { "key": "state", "value": "cd34c1ef-f1c7-4d5c-8030-bf9753a2ccd5", "type": "string" }, { "key": "scope", "value": "read", "type": "string" }, { "key": "redirect_uri", "value": "giffgaff://auth/callback/", "type": "string" }, { "key": "grant_type", "value": "authorization_code_with_pkce", "type": "string" }, { "key": "clientSecret", "value": "OQv4cfiyol8TvCW4yiLGj0c1AkTR3N2JfRzq7XGqMxk=", "type": "string" }, { "key": "clientId", "value": "4a05bf219b3985647d9b9a3ba610a9ce", "type": "string" }, { "key": "authUrl", "value": "https://id.giffgaff.com/auth/oauth/authorize", "type": "string" }, { "key": "addTokenTo", "value": "header", "type": "string" }, { "key": "client_authentication", "value": "header", "type": "string" }, { "key": "accessTokenUrl", "value": "https://id.giffgaff.com/auth/oauth/token", "type": "string" } ] }, "event": [ { "listen": "prerequest", "script": { "type": "text/javascript", "exec": [ "" ] } }, { "listen": "test", "script": { "type": "text/javascript", "exec": [ "" ] } } ], "variable": [ { "key": "memberId", "value": "" }, { "key": "esim_ssn", "value": "" }, { "key": "esim_activation_code", "value": "" }, { "key": "email_code_ref", "value": "" }, { "key": "email_signature", "value": "" }, { "key": "lpa_string", "value": "" }, { "key": "email_code", "value": "" } ] } 感谢楼主,脚本修改了下,可以获取二维码了,成功下载esim了,不过目前还出不了信号
按照步骤执行到了申請 SIM卡 Reserve SIM,返回 { "errors": [ { "message": "Bad Request", "locations": [ { "line": 2, "column": 3 } ], "path": [ "reserveESim" ], "extensions": { "code": "DEVICE_METADATA_MISSING", "message": "Device metadata is missing, unable to verify support." } } ], "data": { "reserveESim": null } } 有大佬知道怎么解决吗
感谢楼主,脚本修改了下,可以获取二维码了,成功下载esim了,不过目前还出不了信号
修改过的我第一步就说cookie获取不到 ac03
可以在没有实体卡的情况下发包直接申请esim再获得二维码吗?有无大佬实现一下
mark~
mark
按照步骤执行到了申請 SIM卡 Reserve SIM,返回
有大佬知道怎么解决吗
技术贴,感谢分享,说不定我也用得到。
@风为裳 #37
佬!你改的好使!成功!
@deathswaltz #36
我有更新腳本
用新的試試
@lou1s #33
可以
只要用啟用碼啟用過後
能登入my.giffgaff.com就能用