🆔 New format for ARC/APRC number is not accepted--testing and reporting thread

I want to start a new thread where people report websites/services/places where the new ID number format could not be used.
Btw. the idea by NIA to change the format was for it to be accepted at more online services. :man_facepalming:

What is the new ARC/APRC ID number format?


Why wouldn’t the new ARC/APRC ID number format work?

It depends on the implementation of the ID validity check.
If the implementation is done properly then it should reject the new ID format as the old format only allows [1,2,A,B,C,D] in the second spot of the ID number. The new format for ARC/APRC will have 8 or 9 in the second spot.

Why do we need a thread about it?

The new ID format is coming beginning of 2021 (ca. 3,5 weeks from now). If you need to update or replace your ARC/APRC it will have the new format!

If you had an ARC/APRC ID with old format it will still be printed on the new ARC/APRC somewhere and can be used in the next 10 years.
Not confirmed if foreign residents who get ARC for the first time will only have the new format.

We should should test as many websites/services as possible beforehand and contact them to fix their implementation if it fails. This will hopefully reduce the time the service is unavailable for foreign residents.

How to contribute?

Test a service/website that requires ID numbers. Most of the times it is not required to complete a registration, just fill the ID number field and let it verify. At this point, do not continue!
Report your result here. Inform them about the new foreign resident ID number format and that they need to fix the validity check.

DO NOT REGISTER AND USE A SERVICE WITH A GENERATED ID. THIS IS FRAUD.

The following ID can be used for test purposes, as it has been used as an example by government:

A900000016

Discussion about new ID format can be done here

10 Likes

Ruten does not verify new ID format.

3 Likes

PChome Myname does not verify the new ID format.

The javascript function chk_pid checks for a 1 or 2 in the second position:

function chk_pid() {
    var uid = arguments[0];
    var msg_alert = (arguments[1]) ? true : false;
    uid = uid.toUpperCase();
    if (!uid.match(/^[A-Z][12][0-9]{8}$/)) return (msg_alert) ? alert("頨思遢霅㗇聢撘譍�齿迤蝣綽�") : false;
    if (uid == "A123456789") return (msg_alert) ? alert("隢贝撓�交迤蝣箄澈隞質�匧�𡑒���") : false;
    var eng2num = [1, 10, 19, 28, 37, 46, 55, 64, 39, 73, 82, 2, 11, 20, 48, 29, 38, 47, 56, 65, 74, 83, 21, 3, 12, 30];
    var uidsum = eng2num[uid.charCodeAt(0) - 65];
    for (var i = 1; i < 10; i++) uidsum += parseInt(uid.charAt(i)) * ((9 - i) ? (9 - i) : 1);
    if (uidsum % 10) return (msg_alert) ? alert("�函�頨思遢霅匧�𡑒���㕑炊,隢𧢲䰻��衤�銝�!!\n") : false;

    return uid;
}
5 Likes

104.com.tw does not verify the new ID format

the javascript function isValidIdentity checks for a 1 or a 2 in the second position

    isValidIdentity: function(t) {
        return !!b(t) && !(t.length < 6 || t.length > 20) && (!a.test(t) || function(t) {
            if (!t) return !1;
            var n = t.substring(0, 1).toUpperCase(),
                e = p[n];
            if (void 0 === e) return !1;
            var r = t.charAt(1);
            if ("1" !== r && "2" !== r) return !1;
            for (var o = e + t.substring(1), i = 0, a = 0; a < o.length; a += 1) i += parseInt(o.charAt(a), 10) * m[a];
            return i % 10 == 0
        }(t))
    },
4 Likes

the Taiwan HSR online booking system does not validate the new format.

5 Likes

The Taiwan Railways Administration online booking system does not validate the new format.

The javascript function twid checks for a 1 or a 2 in the second position.

$.validator.addMethod("twid", function(id, element) {

	if (id == null || id == '') { // æ¬¡è™•åªæª¢æŸ¥æ ¼å¼æ˜¯å¦ç¬¦åˆï¼Œä¸æª¢æŸ¥æ˜¯å¦å¿…å¡«(實名制定票有不需要必填的狀況)
		return true;
	}
	// 建立字母分數陣列(A~Z)
	var city = new Array(1, 10, 19, 28, 37, 46, 55, 64, 39, 73, 82, 2, 11, 20,
			48, 29, 38, 47, 56, 65, 74, 83, 21, 3, 12, 30)
	id = id.toUpperCase();

	// ä½¿ç”¨ã€Œæ­£è¦è¡¨é”å¼ã€æª¢é©—æ ¼å¼
	if (id.search(/^[A-Z](1|2)\d{8}$/i) == -1) {
		// console.log('åŸºæœ¬æ ¼å¼éŒ¯èª¤');
		return false;
	} else {
		// 將字串分割為陣列(IE必需這麼做才不會出錯)
		id = id.split('');
		// 計算總分
		var total = city[id[0].charCodeAt(0) - 65];
		for (var i = 1; i <= 8; i++) {
			total += eval(id[i]) * (9 - i);
		}
		// 補上檢查碼(最後一碼)
		total += eval(id[9]);
		// 檢查比對碼(餘數應為0);
		return ((total % 10 == 0));
	}
});
6 Likes

Don’t they have a statement that alien residents should put their ARC or passport number in the “Passport No.” box? The current ARC no. certainly works in that field. It’s poorly implemented/worded but not entirely correct to say the system does not accept ARC numbers.

5 Likes

If that was the case, they would have to code for every country and territory’s individual passsport numbers, or simply leave no checks as an open form.

1 Like

1 Like

The point of the government’s exercise (and those organisations backing the move) is to see ARC IDs accepted wherever ROC IDs are to provide “dignity” for every day life. ARC is a type of ROC ID, so it should work when entered in the box. A caveat-note to enter an ARC ID in a box with another label related to a different kind of identity doesn’t reach those objectives, so still reportable IMO.

6 Likes

Put the ARC number into the passport field :rofl:

As per previous

2 Likes

Does the government actually say that is the point of the exercise? From the blurb on the immigration department website they state;

In a nut shell the policy change is due to complaints that foreign national couldn’t use various services due to the different number formats. In reaction to those complaints the number format has been changed to a “new UI no.” blah blah blah.

No where does it state that the " is to see ARC IDs accepted wherever ROC IDs are to provide “dignity” for every day life.". It may be somewhat implied however you cannot apply Western thinking to this :upside_down_face:.

They do not state this is the purpose, only that the number will change (and specifically state the different format). The number will change, therefore the project was a success!! Yeh!!! :see_no_evil: :hear_no_evil: :speak_no_evil:

1 Like

Shall we move this discussion back to the other thread to keep this one clean for reporting the sites?

The government announcement references the ECCT paper which is where the ‘dignity’ phrase comes from.

5 Likes

Should do.

:+1:

1 Like

Isn’t it the right thing until Jan. 2 next year?

Yes, from this point new ARC/APRC will have new ID format.

I doubt any of those companies have a plan to enable the new format on that date. We want to spread the word.

Keep in mind:

If you had an ARC/APRC ID with old format it will still be printed on the new ARC/APRC somewhere and can be used in the next 10 years.
Not confirmed if foreign residents who get ARC for the first time will only have the new format.

2 Likes

I’d rather not move posts from here into public areas of the forum (I’d have to get everyone’s OK). I suggest keeping ordinary discussion there in the future, and keep this thread focused on this specific and helpful task, thanks.

3 Likes

New Taipei City Police Traffic Offense Reporting Site, does not accept the new number format, although it does provide a “work around” whereby ARC holders need to upload a scan of their ARC. Stated reason was that ARC holders do not have a Hukou therefore their identity could not be verified…https://tvrs.ntpd.gov.tw/#events/index

image

The Highways police reporting system does appear to accept the new number format and it does not accept the current format, despite repeated complaints.

https://www.hpb.gov.tw/p/412-1000-116.php?Lang=zh-tw

Taipei City Police Traffic Reporting system does accept the current format however does not accept the new format… 檢舉資料填寫 | 臺北市交通違規檢舉專區 (tcpd.gov.tw)

2 Likes

Here is the code (Taiwan ID and old ARC format only):

https://prsweb.tcpd.gov.tw/js/chunk-529d1455.528a6c78.js

if (/[A-Z]{1}[1-2]{1}[0-9]{8}/.test(e)) {
	a += n[t.indexOf(e[0])];
	for (var o = 1, s = 8; o < 9; o++, s--) a += parseInt(e[o]) * s;
	return (a = (10 - (a % 10)) % 10), a == parseInt(e[9]);
}
if (/[A-Z]{1}[A-D]{1}[0-9]{8}/.test(e)) {
	(a = i[t.indexOf(e[0])]), (a += r[t.indexOf(e[1])]);
	for (var l = 2, u = 7; l < 9; l++, u--) a += parseInt(e[l]) * u;
	return (a = (10 - (a % 10)) % 10), a == parseInt(e[9]);
}
2 Likes