Alipay, China's leading third-party online payment solutionAlipay, China's leading third-party online payment solutionDOCS

      发码方表

      发码方表列出了不同长度用户展示码的发码方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和其他条件)逐一判断用户展示码片段示例如下所示:

      copy
      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);
      
          }
      
      }
      

      注:

      发码方的确定过程建议进行参数化处理,以适配发码方表后续的更新

      确定码方后,您可以选择一条路由转发交易给下一转发目标,最终交由发码方做后续处理。详情请参见用户展示码交易处理

      #Apply for a code issuer ID

      如果您计划通过用户展示码发码以开展线下支付业务,请联系我们申请发码方ID。我们会把您登记到发码方表格,以便处理交易的机构能够根据发码方表格来识别码

      如果已经发码并且与发码方表中的所有发码规则不冲突,也可以联系我们现有的发码规则注册到路由表。我们将告知您申请所需的信息,并回复申请结果。

      #更多信息

      用户展示码标准

      用户展示码格式

      用户展示码交易处理

      用户展示码示例

      术语表

      联系我们