giffgaff 英国 SIM 卡申请记录 & eSIM 转换教程

0、前言

giffgaff 应该是云旅客能接触到的最实惠的境外 SIM 卡之一:

  • 获取方便:可以免费申请国际邮件(挂号信)寄到中国;
  • 保号持久:首次充值只需要 10 英镑(约合 93 人民币),再加赠送的 5 或 10 英镑(不同时期赠送不同),可轻松保号 50 年起。

然而,如果你不住在上海这种国际化大都市,一般是收不到国际平邮的。因此,需要找万能的网友要一张带有他 aff 的卡,你激活后两人都可以获赠相同金额的余额(5 或 10 英镑)。我正在和来自多个城市的朋友们实验能否收到邮件,如果成功收到,之后大家就可以免费在我这里领取 giffgaff 卡啦~

虽然是是免费赠送,但是邮费还是要自付的。

1、简介

Giffgaff 是一家总部位于英国的移动电话公司。作为一家移动虚拟网络电信运营商,Giffgaff 使用 O2 的网络,是 O2 的全资子公司,成立于 2009 年 11 月 25 日。
Giffgaff与传统的移动电话运营商不同,区别在于其用户也可以参与公司的部分运营,如销售、客服、营销环节等。

在 giffgaff 之前,曾经有更好用的 Vodafone 英国卡,然而 Vodafone UK 后来开始限制漫游使用,规定不能连续漫游超过 2 个月,因此能够长期漫游使用的英国卡中,giffgaff 成为几乎唯一的选择。

2、购买

如果你的手机支持 eSIM,现在已经可以直接从 giffgaff 官网购买 eSIM 了,具体流程参考:

How do I get an eSIM on giffgaff?
https://www.giffgaff.com/help/articles/how-do-i-get-an-esim-on-giffgaff

如果你想要自行下单实体 SIM 卡,可以通过我的邀请链接:

Free SIM Cards and Pay as You Go SIMs from giffgaff
https://www.giffgaff.com/orders/affiliate/hsukqilee

选择免费 SIM:

下单页面

填写地址的时候有一个技巧:虽然英文地址是从门牌号到街道到城市,但是实际承运人是中国人并且英文不一定多好,因此可以将城市写在最后,其他地址按中文顺序写在前面,例如:

AAA District, BBB Street, CCC Building, DDD#EEEFGGG, Beijing

街道、小区名都可以用拼音。

3、激活

从网友处得到的卡一般是国内快递的到付邮件,有的甚至会包邮(毕竟能赚 aff)。和之前测评的 hahaSIM、台湾大哥大实体卡一样,giffgaff 未拆封状态是 Full-size 大小的卡:

正面

反面

把卡装到手机里,等待卡片连接到运营商信号,收到短信:

Hey, we're chuffed you've chosen giffgaff. Head to www.giffgaff.com/activate?SSN=80 to get set up. The site's free to visit, whether you've oodles of data or haven't got a megabyte.

我用漫游的网络似乎进不去,所以建议连上 WiFi 并且使用代理访问激活地址:

输入激活码

输入卡上的激活码(一般是 6 位的字母),开始注册流程(如果你之前没有注册 giffgaff 账号)。

输入邮箱:

邮箱

设置密码:

密码

设置是否接收营销短信(如果允许,虽然有点烦,但是如果遇到收不到短信的情况,可以及时注意到):

营销短信

全部信息输入完之后选择套餐:

选择套餐

选择 Pay as you go 即可:

Pay as you go

然后充值 10 英镑激活:

充值

如果你没有可用的支付方式,可以自行找代充,价格大概在 96~100 人民币之间,也就是收取不到 10 块钱的费用。

充值完成后成功激活:

成功激活

4、转为 eSIM

由于我的手机是实体卡槽+eSIM,在激活完成后我就立刻把 giffgaff 转换成了 eSIM,然后把实体卡插回卡槽。如果你不需要转换或者你的手机不支持 eSIM,并且你没有“可插拔 eSIM 卡”(可写入 eSIM 的卡板),你可以直接跳过这节。

下面分两种情况转换:

4.1、手机原生支持

打开 giffgaff App,点击右下角的 Account,找到 SIM:

SIM 设置

选择替换 SIM:

替换 SIM

选择切换到 eSIM:

切换到 eSIM

然后就会开始下载 eSIM,如果写入成功:

写入成功

eSIM 就转换成功啦。

提示:
第一次玩 eSIM,如果碰到点问题总会有点慌,以下是常见问题:

  1. 写入 eSIM 后无信号或无法自动选择网络?

等待数小时后即可正常连接。

  1. 写入 eSIM 后实体卡失效?

写入成功后实体卡就失效了,不过不要丢,如果有需要可以再切换回来。

4.2、使用可插拔 eSIM 卡

此处参考:

分享一個 Giffgaff 實體轉 eSIM 的 Postman 腳本
https://www.nodeseek.com/post-76162-1

流程:

将以下代码导入 Postman:

json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
{
  "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()[0].data.reserveESim.esim.ssn);\r",
              "pm.collectionVariables.set(\"esim_activation_code\", pm.response.json()[0].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()[0].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://api.qrserver.com/v1/create-qr-code/?data={{lpa_string}}&size=200x200",
          "protocol": "https",
          "host": [
            "api",
            "qrserver",
            "com"
          ],
          "path": [
            "v1",
            "create-qr-code",
            ""
          ],
          "query": [
            {
              "key": "data",
              "value": "{{lpa_string}}"
            },
            {
              "key": "size",
              "value": "200x200"
            }
          ]
        }
      },
      "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": ""
    }
  ]
}

导入成功后,选择左侧 Giffgaff 文件夹,再选择右侧的 Authorization(认证),拉到底,点击 Get New Access Token(取得新权杖),会自动打开网页,登录 giffgaff 账号。

如果登入成功,在 MANAGE ACCESS TOKEN 的窗口点 Use Token(使用权杖),之后依序填写,最后按下 Send(发送)。

在“检查邮件验证码 Verify Email code”的步骤,把code=000000中的000000换成你邮箱收到的验证码,再按下 Send 发送,最后就能看到 eSIM 的二维码。

giffgaff 英国 SIM 卡申请记录 & eSIM 转换教程

https://blog.tsinbei.com/archives/1802/

文章作者
Hsukqi Lee
发布于

2024-08-26

修改于

2024-11-16

许可协议

CC BY-NC-ND 4.0

# SIM  eSIM  英国  Vodafone

评论

昵称
邮箱
网址
3 条

菜团子

菜团子

申请过去20天了,依旧没有收到平信,再等十天看看

  回复

1

1

请问可以注册微信吗

  回复

Hsukqi Lee

Hsukqi Lee 作者

亲测可以,我注册微信的时候发现更重要的貌似是IP。

  回复