连连开放平台文档
  • 指引&规范
    • 接入规范说明
    • 接入流程指引
  • 收单服务
  • 账户服务
  • 信用分期
  • 商户管理
  • 公共服务
  • 跨境服务
  • 易企汇
logoPowered by Apifox
  1. 指引&规范

接入流程指引

测试环境资料

示例Demo(持续完善...)

点击下载

测试商户号

该商户号仅供使用于测试环境(调用测试环境接口地址),测试环境接口调试,不会涉及真实的资金。此商户号为公共测试商户号,若需要单独申请测试商户号,可以联系技术支持申请。测试商户号为动态配置,仅供参考。生产商户号默认无免密免验额度,额度为方便快速测试所设,且二级户开户需要开户意愿。若无特配申请,请按生产商户号配置联调。
商户号(mch_id):2020042200284052

PHP语言使用pkcs1格式,Java语言、C#语言使用pkcs8格式

该商户号私钥(pkcs1格式):

-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDw/pmpStlt1CV31+azu/YEVGy3vpMArJMO1cxE1wOEH/+VVpT8Tm9ekpX5ZBOM8iJ4RsHoY1E71z73mzbWSSaSkvkP+6FsOoTENXCAvfQ1plejq47c+tU5ouQP+EJ2KlJthkUnH658iC0MPf6opJL8o6NKT7CDE9q4Zrt9S0skjQIDAQABAoGBAKJGrm3iqtpbugci6IQqkxSDTNnFh/MyQawBpxTLu+BiM5X5wUTMBA4oorhV/Rwxh6h57ORwzCiBXjMY3yoYA9Hsad0tOsaUm5pCG71izPsQZe9P/kixu8M7WeCrXSruz0dusSYbeszPyg66L7kcxWDQemW8jtzMvQiV2mUuhlP5AkEA/v8LH9DOwcqfrD88t0hJ/JGrRaKVTs/KBEgQbkjTV5da4Mln4FVwVCkQwLrPKGvzYcds1jaqbnIax3qz6eTHBwJBAPHxconVuJzJC98eFC0Jm7GQarDRF6Cr93ww7x1kZY19ABJXpfl2lbsa7aWIg8cKhUjNLPdpwgY9mV7eDvndnssCQEuZhczK9WGTFz/UB8Y3EmhlL6gXibix9izKyMRJpw7i+riGPdvOuNzax/K778sGJkQpAeWIk4LnJXVatZh0kWUCQGJ8vPlq7Km2FYUPw3rJ7H0NosCzfQDEwAvoB45ZbhV4iuzsjP3NzgnKXm8B8VK276bBDsrwXDEaJjK+Bi6kjp0CQHAyqF6ZGBRmpHo5+i0I+exAbTIH1TWrU4qQZ0MT2hzBhjvVfUs3nW5IDYNDQUs7DbGripxTsvshcBan+qBh5tA=
-----END RSA PRIVATE KEY-----

该商户号公钥(pkcs1格式):

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDw/pmpStlt1CV31+azu/YEVGy3vpMArJMO1cxE1wOEH/+VVpT8Tm9ekpX5ZBOM8iJ4RsHoY1E71z73mzbWSSaSkvkP+6FsOoTENXCAvfQ1plejq47c+tU5ouQP+EJ2KlJthkUnH658iC0MPf6opJL8o6NKT7CDE9q4Zrt9S0skjQIDAQAB
-----END PUBLIC KEY-----

该商户号私钥(pkcs8格式):

MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAPD+malK2W3UJXfX5rO79gRUbLe+kwCskw7VzETXA4Qf/5VWlPxOb16SlflkE4zyInhGwehjUTvXPvebNtZJJpKS+Q/7oWw6hMQ1cIC99DWmV6Orjtz61Tmi5A/4QnYqUm2GRScfrnyILQw9/qikkvyjo0pPsIMT2rhmu31LSySNAgMBAAECgYEAokaubeKq2lu6ByLohCqTFINM2cWH8zJBrAGnFMu74GIzlfnBRMwEDiiiuFX9HDGHqHns5HDMKIFeMxjfKhgD0exp3S06xpSbmkIbvWLM+xBl70/+SLG7wztZ4KtdKu7PR26xJht6zM/KDrovuRzFYNB6ZbyO3My9CJXaZS6GU/kCQQD+/wsf0M7Byp+sPzy3SEn8katFopVOz8oESBBuSNNXl1rgyWfgVXBUKRDAus8oa/Nhx2zWNqpuchrHerPp5McHAkEA8fFyidW4nMkL3x4ULQmbsZBqsNEXoKv3fDDvHWRljX0AElel+XaVuxrtpYiDxwqFSM0s92nCBj2ZXt4O+d2eywJAS5mFzMr1YZMXP9QHxjcSaGUvqBeJuLH2LMrIxEmnDuL6uIY928643NrH8rvvywYmRCkB5YiTgucldVq1mHSRZQJAYny8+WrsqbYVhQ/DesnsfQ2iwLN9AMTAC+gHjlluFXiK7OyM/c3OCcpebwHxUrbvpsEOyvBcMRomMr4GLqSOnQJAcDKoXpkYFGakejn6LQj57EBtMgfVNatTipBnQxPaHMGGO9V9SzedbkgNg0NBSzsNsauKnFOy+yFwFqf6oGHm0A==

该商户号公钥(pkcs8格式):

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDw/pmpStlt1CV31+azu/YEVGy3vpMArJMO1cxE1wOEH/+VVpT8Tm9ekpX5ZBOM8iJ4RsHoY1E71z73mzbWSSaSkvkP+6FsOoTENXCAvfQ1plejq47c+tU5ouQP+EJ2KlJthkUnH658iC0MPf6opJL8o6NKT7CDE9q4Zrt9S0skjQIDAQAB

联调工具

测试环境联调工具列表

请求IP报备

:::tip[]
当请求连连开放接口时,连连侧会做来源IP的安全校验,判断该IP是否报备过,如果没有报备过,接口同步返回报错:IP未报备,所以需要您提前报备请求连连接口的服务器公网IP(可以报备多个)
PS:如果初始报备IP后,后续有IP新增或移除也是相同流程
:::

登录 [聚数商户站后台](https://join.lianlianpay.com/sso/?redirect=https%3A%2F%2Fjoin.lianlianpay.com%2Fsp%2F), 进入**商家中心**选择**参数配置**,在此处提交需要报备的IP(多个IP报备用**英文逗号**隔开) 如图所示:

image.png


发邮件给我们报备来源IP,邮件模板如下
:::highlight blue 📧[申请邮件模板]
邮件主题:新增IP白名单申请-商户名称XXX
发送邮箱:tech_support@lianlianpay.com

邮件内容(示例):
新增IP白名单申请
商户号:2020042200284052
商户名称:测试商户有限公司
IP白名单:111.112.113.114,222.223.224.225
:::

以下是连连接口域名入口IP,如有需要,可以惠存

115.238.30.69,115.238.30.76,183.136.171.33
101.71.136.23,101.71.136.29
112.17.38.119,112.17.38.126
101.37.133.67,203.107.32.166

公私钥生成及配置

:::tip[]
当您的应用和连连做数据交互时,我们使用RSA公私钥加解密的方式作为身份合法性校验的一种方式。 您需要为您的应用生成属于您的公私钥对,其中私钥用于接口请求时加签使用,公钥上传到连连用于验证您系统发起的接口请求的身份合法性。
:::




生成公私钥对时,推荐使用OpenSSL完成。
- OpenSSL官方下载地址:https://www.openssl.org/source
- Openssl-0.9.8k_WIN32RSA密钥生成工具包:https://oss-mpay-static.lianlianpay.com/tps/5292a714-5013-4125-b82e-bd3a9d09057d.rar


执行如下命令,执行成功后,会在目录下生成rsa_private_key.pem文件,该文件为pkcs1格式的私钥(PHP语言使用)
bash openssl genrsa -out rsa_private_key.pem 4096
开发语言是Java或者C#的还需要将私钥格式转为pkcs8
bash openssl pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -out rsa_private_key.txt -nocrypt


执行如下命令,执行成功后,会在目录下生成rsa_public_key.pem文件
bash openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem




登录 聚数商户站后台,进入商家中心选择参数配置,把上述步骤中生成的公钥rsa_public_key.pem文件,去除文件中的头部、尾部及换行在此处提交。

image.png


连连公钥用于异步通知验签和接口响应验签
text -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSS/DiwdCf/aZsxxcacDnooGph3d2JOj5GXWi+q3gznZauZjkNP8SKl3J2liP0O6rU/Y/29+IUe+GTMhMOFJuZm1htAtKiu5ekW0GlBMWxf4FPkYlQkPE0FtaoMP3gYfh+OwI+fIRrpW3ySn3mScnc6Z700nU/VYrRkfcSCbSnRwIDAQAB -----END PUBLIC KEY-----
PS:Java或C#开发语言,需对该公钥进行去除头部、尾部及换行的处理后使用;PHP开发语言,可以直接使用

域名报备(可选)

:::tip[]
当您需要使用连连提供的收银台页面时,连连会去校验访问收银台的来源域名

要求:

  • 来源域名必须有(没有带上来源域名,页面会报错:未检测到请求来源域名)
  • 该来源域名必须是在连连报备过的(没有报备,页面会报错:来源域名未报备)
    :::
    PS:没有使用连连的收银台页面,可以不需要进行域名报备

需联系连连商务同事走内部流程发起域名报备申请(只能报备二级域名)

线下加款通知地址配置(可选)

有线下加款场景的时候,需要提供线下加款通知地址给技术支持配置在商户号上,邮件模板如下。
加款成功后,会有异步通知到这个地址。
通知信息详情请看 线下加款成功通知
:::highlight blue 📧[申请邮件模板]
邮件主题:商户线下加款异步通知地址配置申请-商户名称XXX
发送邮箱:tech_support@lianlianpay.com

邮件内容(示例):
xxxx商户线下加款异步通知地址配置申请
商户号:2020042200284052
商户名称:测试商户有限公司
线下加款异步通知地址:https://abc.xxxxx.com/
:::

签名机制

为保证您与连连之间消息来往的安全性,防止支付或者通知的数据被伪造,篡改,连连要求对所有来往的信息加入签名机制。
连连目前采用的是 RSA 加密方式中的md5withRSA算法实现的签名机制。


签名内容产生规则:
1. 获取请求完整JSON报文,使用MD5计算出报文摘要值(全小写)
2. 将该MD5计算出的摘要值按照md5withRSA的签名算法,使用您的私钥进行加签
3. 将签名值使用Base64转码得到签名串signature
4. 将签名方式和签名值设置在http header中,并自定义如下对应属性(Signature-Data):

| 自定义Header key | 是否必须 | 描述 |
| --- | --- | --- |
| Signature-Type | 是 | 签名方式:RSA |
| Signature-Data | 是 | 签名值RSA签名,见安全签名机制<br>Signature-Data = Base64(RSA(MD5(完整JSON报文))) |
| mch_id | 可选 | 商户在连连系统中的唯一标识,mch_id和sp_no需传其一即可 |
| sp_no | 可选 | 服务商编号,mch_id和sp_no需传其一即可 |
| timestamp | 是 | 时间戳,格式:yyyyMMddHHmmss,例如20250106145022 |

### **签名生成流程(体验)**
  以下签名生成流程使用**测试环境测试商户号**调用 [卡bin查询](https://open.lianlianpay.com/docs/multipayment/bin-query-pure.html) 接口为例,进行演示。
  请求json报文:
    ```json
    {"card_no":"9558834301000461394","mch_id":"2020042200284052"}
    ```
    <Steps>
      <Step title="生成请求Json报文的MD5摘要值">
        使用 [MD5在线生成工具](http://tool.haooyou.com/code?group=hash&type=md5&charset=UTF-8) 生成请求Json报文的MD5摘要值(32位小写)
        MD5摘要值为:
        ```text
        51a592df873c64dd2c2c88ce8c365ec7
        ```

image.png


使用 RSA私钥加签在线工具 对步骤1生成的MD5摘要值进行RSA私钥加签(测试商户号私钥)
签名值为:
text q2G8ulbvKZEOkBCeyK8s++rATQfMjvn0JhQGELe7wn8Qih0qmuM3pgjJ9BVDza3qcGcLbKXfUCusBW17fAjyyWz33ucgxyS9VVUrgFsO0acVlrQK7xJpIy0X6Z2jjNvSZhpPxLxktDZyRHA7WGQZFo1SL5HsUMlBIxj69OjAG2c=
image.png


请求头headers配置信息:
image.png
发起请求:
image.png




签名内容产生规则:
1. 连连向您发送的信息,您需要进行验签,确保信息没有被篡改
2. 从请求体中获取连连向您发送的信息完整JSON报文,使用MD5计算出报文摘要值(全小写)
3. 从请求头中获取连连向您发送信息的签名值
4. 使用RSA公钥验签方法对MD5摘要值和签名值进行校验

### **验签流程(体验)**
  使用如下内容进行验签过程演示
  连连发送的信息完整JSON报文:
    ```json

{"accountInfo":{"accountLevel":"V3","accountNeedLevel":"V3","accountNeedType":"PERSONAL_PAYMENT_ACCOUNT","accountType":"PERSONAL_PAYMENT_ACCOUNT"},"accp_txno":"20230829000012374866","oid_partner":"2020042200284052","oid_userno":"2023082813762354","txn_seqno":"1696339459111317504","user_id":"741852963","user_status":"NORMAL"}
连连发送信息的签名值: text
Gkb/kkuByKHzsPPmAn89hjvxsyJZN02dUCaa5m0nf9fxdaWDCvo5mZdhYz6XBrDY7dg0kgM/yMyEpalCA+24mIW80OjL+yLTUkJMcGcCaEBDjMyT30KwU2jkbbGUmLMSfTdBUoPFTqeEQRNXibP1c0uszWwuiQToOkiSg0UpvXM=
```

    <Steps>
      <Step title="生成请求Json报文的MD5摘要值">
        使用 [MD5在线生成工具](http://tool.haooyou.com/code?group=hash&type=md5&charset=UTF-8) 生成请求Json报文的MD5摘要值(32位小写)
        MD5摘要值为:
        ```text
        dc21d276613d34970c10356adb9a8176
        ```

image.png


使用 RSA私钥加签在线工具 对步骤1生成的MD5摘要值和请求头的签名值进行RSA公钥验签(连连公钥)
image.png
点击验签按钮后,签名结果方框中会显示本次验签的结果
image.png


### 连连验签公钥
连连公钥用于异步通知验签和接口响应验签
text -----BEGIN PUBLIC KEY----- MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCSS/DiwdCf/aZsxxcacDnooGph3d2JOj5GXWi+q3gznZauZjkNP8SKl3J2liP0O6rU/Y/29+IUe+GTMhMOFJuZm1htAtKiu5ekW0GlBMWxf4FPkYlQkPE0FtaoMP3gYfh+OwI+fIRrpW3ySn3mScnc6Z700nU/VYrRkfcSCbSnRwIDAQAB -----END PUBLIC KEY-----
PS:Java或C#开发语言,需对该公钥进行去除头部、尾部及换行的处理后使用;PHP开发语言,可以直接使用

公钥加密方法

RSA公钥加密

部分字段需要用RSA公钥加密后传输,加密公钥为连连的公钥,加密方法和密钥如下所示:

```java /** * 公钥加密的方法 * @param source * @param public_key * @return * @throws Exception */ public String encrypt(String source, String public_key) throws Exception {
byte[] keyByte = org.apache.commons.codec.binary.Base64.decodeBase64(public_key);
X509EncodedKeySpec x509ek = new X509EncodedKeySpec(keyByte);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(x509ek);

Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] sbt = source.getBytes(StandardCharsets.UTF_8); // //本地测试可以使用这个
byte[] epByte = cipher.doFinal(sbt);
String epStr = org.apache.commons.codec.binary.Base64.encodeBase64String(epByte);
return epStr;

}
</Tab> <Tab title="PHP示例"> php
//RSA公钥加密
public function publicEncrypt($data)
{
$encrypted = '';
$pu_key = openssl_pkey_get_public($this->PubKey);
$plainData = str_split($data, 100);
foreach ($plainData as $chunk) {
$partialEncrypted = '';
$encryptionOk = openssl_public_encrypt($chunk, $partialEncrypted, $pu_key);//公钥加密
if ($encryptionOk === false) {
return false;
}
$encrypted .= $partialEncrypted;
}
$encrypted = base64_encode($encrypted);
return $encrypted;
}
```

异步通知

概述和特征

交易请求和开户请求完成后,连连会把相关结果和信息异步发送给您,您的系统需要接收该通知,并按照约定内容响应。

  • 异步通知是HTTP POST请求

    连连下发的异步通知是一个HTTP POST请求,以数据流的形式发送,您的系统需要使用读取字节流的方式进行获取,不同语言的获取形式举例:
    file_get_contents("php://input"); // php
    
    request.getInputStream(); // Java
    
    Request.inputStream; // asp
    
  • 异步通知的Content-type为text/json;charset=utf-8

  • 接收异步通知地址要求

    • 通知地址公网可访问
    • 端口:https协议支持端口443,http协议支持端口80,建议使用https协议
    • 对于https地址,您证书必须为认证机构颁发的证书,不可使用非授信组织颁发的测试证书,如不可使用自行颁发的证书
  • 异步通知重发机制

    当连连下发异步通知后,贵司系统没有按照约定内容响应,连连异步通知是有重发机制,会进行重复通知,频率为2分钟,共30次,在30次内,按照约定内容响应,就会停止重复通知。
  • 连连异步通知下发的服务器IP

    以下是连连异步通知下发的服务器IP,建议您加入到服务器的白名单中
    115.238.30.68,101.71.136.20,112.17.38.116,183.136.171.62,47.97.113.169,47.97.186.139,101.37.146.140,47.97.201.103,47.97.120.214,47.97.175.245
    

异步通知处理流程

以下是当您的系统成功获取到异步通知后,我们建议的处理步骤


您的系统对于交易结果通知的内容必须要先做签名验证,验签详情请参考 签名机制-验签,并校验返回的交易金额是否与您系统的订单金额一致,防止数据泄漏导致出现假通知,造成资金损失。


当验签通过后,如果您需要使用连连发送的异步通知内容触发后续的业务逻辑处理,我们这边建议您的系统进行异步处理业务逻辑,因为如果您的业务逻辑处理过程耗时高,会存在等待响应超时的情况。

超时判断规则:
- 超过5秒TCP握手没有成功,连连系统认为超时
- TCP握手成功后,超过5秒没有响应,连连系统认为超时
当验签完成,并且触发了业务逻辑的异步处理后,您的系统需要**返回`Success`字符串**,则视为成功,连连系统停止通知,否则会按照通知策略发起重试,直到通知机制完成 另外,由于互联网中存在拥塞、丢包、重发等现象,连连支付异步通知可能在极端情况下以**未定义的顺序**到达您的服务端;又或可能存在由于网络延时、丢包等原因,导致您的系统接收到交易成功通知后,**接收到相同交易的重复通知**。此时需要**您的系统对支付成功通知做且仅做一次成功业务的处理**,您的系统**必须具备接收重复通知处理的能力。**
当您的系统首次收到异步通知时,对其做出响应,处理您的业务逻辑并置已处理的标志;之后再次收到的异步通知,均进行响应但不做业务处理。
:::danger[您的系统必须具备处理重复异步通知的能力,若未对其进行处理,由重复通知导致的重复入账等资金风险由您自行承担] :::