PHP 商户进件 SDK 使用文档

简介

此 SDK 包含商户开户、商户开户查询、商户入驻、商户入驻查询功能。渠道商可通过此 SDK 快速进件。

下载地址

SDK下载

SDK 版本记录

版本

日期

说明

v1.1.1

2020-07-21

增加新增应用接口

v1.1.0

2020-06-05

增加商户审核状态查询接口

v1.0.3

2020-03-11

增加商户附件上传接口

v1.0.2

2019-12-11

优化代码

v1.0.1

2019-11-29

优化异步通知

v1.0.0

2019-09-18

Adapay 初版

版本要求

PHP 版本 5.6 及以上

接入方法

  • 下载 SDK

下载文件里包含 SDK 和 Demo 两个目录。SDK 目录下为待添加到项目中的文件,Demo 目录下为示例项目,供接入时参考使用。

  • 获取 API Key

API Key 是您在 Adapay 系统中的身份标识,凭此可使用 Adapay 提供的 SDK 以及 API 服务

API Key 获取路径:「控制台」 ->「商户信息管理」->「证书管理」

  • privateKey(RSA 私钥)

privateKey 为您本地生成的 RSA 私钥 (阿里云开放平台RSA工具) 生成选择PKCS8格式, SDK 在与 Adapay 服务端进行接口请求时,会使用此私钥进行加密。

对应的公钥请上传至「控制台」 ->「商户信息管理」->「证书管理」

  • publicKey(RSA 公钥)

publicKey 是 Adapay 为您生成的 RSA 公钥,SDK 在与 Adapay 服务端进行接口请求时 SDK 需要 publicKey 进行解签

publicKey 可通过 「控制台」 ->「商户信息管理」->「证书管理」进行下载。

系统初始化

在使用 Adapay 前,请先完成系统初始化设置

  • 调用示例

// 加载基础 adapay 基础类
// SDK 初始化文件加载
include_once  dirname(__FILE__). "/../AdapayMerchantSdk/init.php";
// 在文件中设置 DEBUG 为 true 时, 则可以打印日志到指定的日志目录下 LOG_DIR
include_once  dirname(__FILE__). "/config.php";

商户开户进件

商户可通过此接口方法进行商户进件

  • 调用示例

$merchant = new \AdapayMerchantSdk\MerchantUser();

$merchant_params = [
    "request_id"=> 'req_mer_'.date("YmdHis").rand(100000, 999999),
    # 商户注册手机号
    "usr_phone"=> "1300001".rand(1000,9999),
    # 联系人姓名
    "cont_name"=> "风清扬",
    # 联系人手机号
    "cont_phone"=> "13100001234",
    # 客户邮箱
    "customer_email"=> "cuif".rand(1000, 9999).'@163.com',
    # 商户企业全称
    "mer_name"=> "河南通达电缆股份有限公司a",
    # 商户企业简称
    "mer_short_name"=> "通达电缆",
    # 营业执照号 三证合一
    "license_code"=> "91410300X148288455",
    # 注册地址
    "reg_addr"=> "测试地址zaac",
    # 经营地址
    "cust_addr"=> "测试地址zaac",
    # 商户电话
    "cust_tel"=> "13333783701",
    # 商户有效期
    "mer_valid_date"=> "20201010",
    # 法人姓名
    "legal_name"=> "史万福",
    # 法人证件类型
    "legal_type"=> "0",
    # 法人证件号码
    "legal_idno"=> "321121198606115128",
    # 法人手机号
    "legal_mp"=> "13333333300",
    # 法人身份证有效期
    "legal_id_expires"=> "20300101",
    # 结算银行卡号
    "card_id_mask"=> "6222021703001692228",
    # 银行code
    "bank_code"=> "01020000",
    # 银行开户姓名
    "card_name"=> "农行银行",
    # 结算银行类型
    "bank_acct_type"=> "1",
    # 结算银行卡省份code
    "prov_code"=> "1100",
    # 结算银行卡地区code
    "area_code"=> "0011",
    #身份证有效期开始时间
    "legal_start_cert_id_expires"=> "20300101",
    #营业执照有效期开始时间
    "mer_start_valid_date"=> "20300101",
    # 商户公钥
    "rsa_public_key"=> "016515646131sdasd1as32d13as2d13asd13",
];

# 发起进件
$merchant->create(merchant_params);

# 对进件结果进行处理
if ($merchant->isError()){
    //失败处理
    var_dump($merchant->result);
} else {
    //成功处理
    var_dump($merchant->result);
}
  • 参数说明

参数说明详见 开户进件

商户开户查询

查询商户开户结果

  • 调用示例

$merchant = new \AdapayMerchantSdk\MerchantUser();
# 进件成功后的request_id
$merchant_params = ["request_id"=> "req_mer_20190912013859492871"];
# 发起进件
$merchant->query($merchant_params);

# 对进件结果进行处理
if ($merchant->isError()){
    //失败处理
    var_dump($merchant->result);
} else {
    //成功处理
    var_dump($merchant->result);
}
  • 参数说明

参数说明详见 开户查询

商户入驻

渠道商对旗下用户进行商户入驻以及支付渠道批量配置

  • 调用示例

$merConfig = new \AdapayMerchantSdk\MerchantConf();

$mer_config_params = [
    "request_id"=> "req_cfg_".date("YmdHis").rand(100000, 999999),
    # 推荐商户的api_key
    "sub_api_key"=> "",
    # 银行渠道号
    "bank_channel_no"=> "",
    # 费率
    "fee_type"=> "01",
    # 商户app_id
    "app_id"=> "app_0c2acc98-7437-4de6-ad4c-7c38a0c782e4",
    # 微信经营类目
    "wx_category"=> "550",
    # 支付宝经营类目
    "alipay_category"=> "2015050700000000",
    "cls_id"=> "5812",
    # 服务商模式
    "model_type"=> "1",
    # 商户种类
    "mer_type"=> "3",
    # 省份code
    "province_code"=> "310000",
    # 城市code
    "city_code"=> "310100",
    # 县区code
    "district_code"=> "310104",
    # 配置信息值
    "add_value_list"=> json_encode(['wx_lite'=> ['appid'=> '13213123123123']])
];


# 发起支付配置
$merConfig->create($mer_config_params);

# 对进件结果进行处理
if ($merConfig->isError()){
    //失败处理
    var_dump($merConfig->result);
} else {
    //成功处理
    var_dump($merConfig->result);
}
  • 参数说明

参数说明详见 商户入驻

商户入驻修改

渠道商对旗下用户进行商户入驻信息修改或升级M3,目前仅支持支付宝渠道的操作,修改结果异步报文通知

  • 调用示例

$merConfig = new \AdaPayMerchant\MerchantConf();

$mer_config_params = [
    "request_id"=> "req_cfg_".date("YmdHis").rand(100000, 999999),
    # 推荐商户的api_key
    "sub_api_key"=> "api_live_826e0027-68b4-4468-ada8-aa35babdc86e",
    "alipay_request_params"=> json_encode([
        "mer_short_name"=> "尚云科技",
        "mer_phone"=> "18919876721",
        "fee_type"=> "02",
        "card_no"=> "6227000734730752177",
        "card_name"=> "浦发银行",
        "category"=> "2015050700000000",
        "cls_id"=> "5812",
        "mer_name"=> "上海尚云科技服务有限公司",
        "mer_addr"=> "上海市静安区",
        "contact_name"=> "朱先生",
        "contact_phone"=> "15866689123",
        "contact_mobile"=> "15866689123",
        "contact_email"=> "817888900@qq.com",
        "legal_id_no"=> "310555196710215555",
        "mer_license"=> "110108001111111",
        "province_code"=> "310000",
        "city_code"=> "310100",
        "district_code"=> "310115",
    ], JSON_UNESCAPED_UNICODE)
];

# 发起商户进件修改
$merConfig->modify($mer_config_params);

# 对进件结果进行处理
if ($merConfig->isError()){
    //失败处理
    var_dump($merConfig->result);
} else {
    //成功处理
    var_dump($merConfig->result);
}
  • 参数说明

参数说明详见 商户入驻修改

商户入驻查询

通过 request_id 查询商户入驻结果

  • 调用示例

$merConfig = new \AdaPayMerchant\MerchantConf();

$mer_config_params = ["request_id"=> "req_20190912013859492871"]; // 请求参数
# 发起支付配置查询
$merConfig->query($mer_config_params);

# 对进件结果进行处理
if ($merConfig->isError()){
    //失败处理
    var_dump($merConfig->result);
} else {
    //成功处理
    var_dump($merConfig->result);
}
  • 参数说明

参数说明详见 商户入驻查询

上送商户证照

上传商户附件信息

  • 调用示例

# 初始化商户配置类
$merProfile = new \AdaPayMerchant\MerchantProfile();

$file_real_path = realpath('cbcd.png');
$fileInfo = pathinfo($file_real_path);
$mer_params = [
    'subApiKey'=> 'api_live_fdcbcc99-4fef-4f23-a8f3-e21d7c7e4f7b',
    'file'=> new \CURLFile($file_real_path,'', $fileInfo['basename']),
    'fileType'=> '04'
];
var_dump($fileInfo['basename']);

# 发起代理商商户证件提交
$merProfile->merProfilePicture($mer_params);

# 对代理商商户证件结果进行处理
if ($merProfile->isError()){
    //失败处理
    var_dump($merProfile->result);
} else {
    //成功处理
    var_dump($merProfile->result);
}
  • 参数说明

参数说明详见 上送商户证照

提交商户证照信息

商户证件信息提交接口,调用后提交后商户证件信息审核状态切换为“等待后台审核“

  • 调用示例

$merProfile = new \AdaPayMerchant\MerchantProfile();
$mer_params = [
    'subApiKey'=> 'api_live_fdcbcc99-4fef-4f23-a8f3-e21d7c7e4f7b',
    'socialCreditCodeId'=> '0067363309554112',
    'legalCertIdFrontId'=> '0067363504549376',
    'legalCertIdBackId'=> '0067363574467008',
    'businessAdd'=> 'http://www.baidu.com',
    'storeId'=> '0067361944316352|0067363749735936',
    'accountOpeningPermitId'=> '0067364019530176',
    'shareholderInfoList'=> '',
];
# 发起代理商商户证件提交
$merProfile->merProfileForAudit($mer_params);

# 对代理商商户证件结果进行处理
if ($merProfile->isError()){
    //失败处理
    var_dump($merProfile->result);
} else {
    //成功处理
    var_dump($merProfile->result);
}
  • 参数说明

参数说明详见 提交商户证照信息

查询商户审核状态

商户可以查看提交的商户基础信息审核状态

  • 调用示例

$audit_status_params = [
    'subApiKey'=> 'api_live_fdcbcc99-4fef-4f23-a8f3-e21d7c7e4f7b'
];

# 发起支付配置
$merchantProfile->merProfileAuditStatus($audit_status_params);
echoExecuteResult($merchantProfile, "代理商基础信息审核状态查询");
  • 参数说明

参数说明详见 商户审核状态查询

创建应用

代理商帮商户创建应用

  • 调用示例

$merchant_app = new \AdaPayMerchant\MerchantApp();
$merchant_params = [
    "sub_api_key"=> "api_live_fdcbcc99-4fef-4f23-a8f3-e21d7c7e4f7b",
    "app_name"=> "默认应用A"
];

# 发起应用创建
$merchant_app->create($merchant_params);

# 对应用创建结果进行处理
if ($merchant_app->isError()){
    //失败处理
    var_export($merchant_app->result);
} else {
    //成功处理
    var_export($merchant_app->result);
}
  • 参数说明

参数说明详见 创建应用

查询应用

代理商查询商户应用列表

  • 调用示例

# 初始化进件类
$merchant_app = new \AdaPayMerchant\MerchantApp();
# 发起应用查询
$merchant_app->query(["sub_api_key"=> "api_live_fdcbcc99-4fef-4f23-a8f3-e21d7c7e4f7b"]);

# 对应用查询结果进行处理
if ($merchant_app->isError()){
    //失败处理
    var_dump($merchant_app->result);
} else {
    //成功处理
    var_dump($merchant_app->result);
}
  • 参数说明

参数说明详见 查询应用

异步消息通知

  1. 以脚本方式启动,具体参考 Demo 目录下的 subscribe.php

  • 调用示例

include_once  dirname(__FILE__). "/../AdaPayMerchant/init.php"; //加载 Adapay 目录下的 init.php
include_once  dirname(__FILE__). "/config.php"; //加载配置文件 包含 API_KEY (接入时系统分配的)和 RSA 私钥
  1. 处理消息的回调函数

# 消息回调函数
$callback = function ($message){
    //商户需要对消息结果处理
    //$message 格式:{"appId": "商户 appId" ,"created": "创建时间年月日时分秒", "data": "{\"amount"\:\"0.01\"}", //"type":"payment.succeeded"}
};
# 实例化消息订阅类
$worker = new \AdaPay\AdaSubscribe();
# 启动消息监听服务进程
$worker->workerStart($worker, function ($content) use ($callback){
     call_user_func($callback, $content); //设置接收消息回调处理
});
  1. 然后在服务器上执行 PHP 可执行文件所在的目录 + (linux: php subscribe.php start) (windows: php subscribe.php)启动消息监听

附件