发码方表
发码方表列出了不同长度用户展示码的发码方ID (CII) 及对应的发码方,并提供了描述码长度及格式的正则表达式。 使用该表,可追踪用户展示码发码方,也可通过码长度、码格式和发码方ID来辨别发码方。如下所示:
表1.2:发码方表示例(最后更新于2020年6月16日)
反扫码长度 | 发码方ID | 其他条件 | 正则表达式 | 发码方 |
17 | 28 | N/A | 28[0-9]{15} | PSP 1 |
18 | 28 | N/A | 28[0-9]{16} | PSP 2 |
19 | 280 ~ 288 | N/A | 28[0-8]{17} | PSP 3 |
19 | 289 | 第 14 个字节不等于 “6” | 289[0-9]{10}[0-57-9][0-9]{5} | PSP 4 |
19 | 289 | 第 14 个字节等于 “6” | 289[0-9]{10}6[0-9]{5} | PSP 5 |
24 | 28100100 ~ 28100199 | N/A | 281001[0-9]{18} | PSP 6 |
24 | 28100300 ~ 28100399 | N/A | 281003[0-9]{18} | PSP 7 |
24 | 28100400 ~ 28100499 | N/A | 281004[0-9]{18} | PSP 8 |
24 | 28100500 ~ 28100599 | N/A | 281005[0-9]{18} | PSP 9 |
24 | 28100600 ~ 28100699 | N/A | 281006[0-9]{18} | PSP 10 |
24 | 28100700 ~ 28100799 | N/A | 281007[0-9]{18} | PSP 11 |
24 | 28100900 ~ 28100999 | N/A | 281009[0-9]{18} | PSP 12 |
24 | 28101000 ~ 28101099 | N/A | 281010[0-9]{18} | PSP 13 |
24 | 28101100 ~ 28101199 | N/A | 281011[0-9]{18} | PSP 14 |
24 | 28101200 ~ 28101299 | N/A | 281012[0-9]{18} | PSP 15 |
24 | 28101300 ~ 28101399 | N/A | 281013[0-9]{18} | PSP 16 |
24 | 28101400 ~ 28101499 | N/A | 281014[0-9]{18} | PSP 17 |
24 | 28101800 ~ 28101899 | N/A | 281018[0-9]{18} | PSP 18 |
24 | 28101900 ~ 28101999 | N/A | 281019[0-9]{18} | PSP 19 |
24 | 28102000 ~ 28102099 | N/A | 281020[0-9]{18} | PSP 20 |
24 | 28102100 ~ 28102199 | N/A | 281021[0-9]{18} | PSP 21 |
24 | 28102200 ~ 28102299 | N/A | 281022[0-9]{18} | PSP 22 |
24 | 28102300 ~ 28102399 | N/A | 281023[0-9]{18} | PSP 23 |
24 | 28102400 ~ 28102499 | N/A | 281024[0-9]{18} | PSP 24 |
24 | 28102500 ~ 28102599 | N/A | 281025[0-9]{18} | PSP 25 |
24 | 28102600 ~ 28102699 | N/A | 281026[0-9]{18} | PSP 26 |
24 | 28166600 ~ 28166699 | N/A | 281666[0-9]{18} | PSP 27 |
24 | 28180100 ~ 28180199 | N/A | 281801[0-9]{18} | PSP 28 |
24 | 30103100 ~ 30103199 | N/A | 301031[0-9]{18} | PSP 29 |
24 | 30103200 ~ 30103299 | N/A | 301032[0-9]{18} | PSP 30 |
24 | 30103900 ~ 30103999 | N/A | 301039[0-9]{18} | PSP 31 |
获取发码方表
联系我们,以获取发码方表格的最新版本,或者申请将PSP已有的发码规则加入到发码方表格中。
使用方法
收单机构或ISV在收到用户展示码的值之后,可以确定用户展示码的发码方。请遵循表中的参数顺序(用户展示码的长度、发码方ID和其他条件),逐一判断。用户展示码片段示例如下所示:
import java.util.List;
public class RoutingDemo {
/**
* Given a Routing Table, determine the Code Issuer for a specific Consumer-Presented Code.
* The caller of this method must dertermine a transaction route according to the code issuer returned by this method.
*
* @param code
* @param routingTableItems
* @return
*/
public String getCodeIssuer(String code, List<String[]> routingTableItems) {
for (String[] routingTableItem : routingTableItems) {
//Return the first matching item if any.
if (match(routingTableItem, code)) {
String codeIssuer = routingTableItem[4];
return codeIssuer;
}
}
throw new IllegalArgumentException("No route matches against " + userCode);
}
/**
*
* Whether a routing table item matches the given Consumer-Presented Code.
*
* @param routingTableItem
* @param code
* @return
*/
private boolean match(String[] routingTableItem, String code) {
String regex = routingTableItem[3];
return code.matches(regex);
}
}
注:
发码方的确定过程建议进行参数化处理,以适配发码方表后续的更新。
确定发码方后,您可以选择一条路由转发交易给下一转发目标,最终交由发码方做后续处理。详情请参见用户展示码交易处理。
申请发码方ID
如果您计划通过用户展示码发码以开展线下支付业务,请联系我们申请发码方ID。我们会把您登记到发码方表格,以便处理交易的机构能够根据发码方表格来识别码。
如果您已经发码并且与发码方表中的所有发码规则不冲突,也可以联系我们将现有的发码规则注册到路由表。我们将告知您申请所需的信息,并回复申请结果。