python 商户进件 SDK 使用文档¶
简介¶
此 SDK 包含商户开户、商户开户查询、商户入驻、商户入驻查询功能。渠道商可通过此 SDK 快速进件。
SDK 版本记录¶
版本 |
日期 |
说明 |
v1.1.3 |
2020-08-31 |
增加 MQTT 断开重连机制 |
v1.1.1 |
2020-07-21 |
增加新增应用接口 |
v1.0.3 |
2020-03-11 |
增加商户附件上传接口 |
v1.0.1 |
2019-12-10 |
优化代码 |
v1.0.0 |
2019-11-12 |
商户开户/入驻等功能 |
版本要求¶
目前只支持 python3,请在 python3 环境下使用
接入方法¶
安装
执行 pip install adapay-merchant 安装 SDK
获取 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 可通过 「控制台」 ->「商户信息管理」->「证书管理」进行下载。
添加依赖
在当前环境确保已经安装以下版本的依赖库:
fishbase==1.1.15
chardet==3.0.4
paho-mqtt==1.4.0
pycryptodome==3.8.2
requests==2.22.0
系统初始化¶
在使用 adapay-merchant 前,请先完成系统初始化设置
初始化参数¶
# 建议在服务启动时初始化
# 为初始化的配置地址赋值,路径为配置文件所在文件夹路径
# 比如配置文件路径为 XXX/adapay/config_path.json,这里赋值 XXX/adapay/ 即可
merchant.config_path = 'config_folder_path'
# 执行初始化方法,merchant_id 应当与对应配置文件名相同(不带后缀),第二个参数为环境标识,True 表示 prod,False 表示 test 环境
merchant.init_config("merchant_id", True)
# log 设置,如果相同项目中已经设置了 adapay 的 log 参数,此处可忽略,否则日志会打印两遍
# 设置 log 等级
merchant.log_level = logging.INFO
#初始化 log 设置,首个参数标识是否在 console 中显示 log,第二个参数表示将日志信息保存到文件的路径,不传或为空表示不保存
merchant.init_log(True)
异步消息监听¶
Adapay 在支付成功、支付失败、关单成功、关单失败、退款成功、退款失败时,都会推送终态结果给到您,请务必监听异步结果并做好并发处理。 建议在服务启动时就订阅接收交易结果
调用示例
from adapay.message_manager import get_message_manager
# 初始化 adapay sdk 才可以正确订阅消息
adapay.init_config("config_path", True)
# 获取到messager_manager 实例
message_manager = get_message_manager()
# 获取到消息回调
def on_message_receiced(message):
print(message['type'])
print('on_message_receive:' + str(message))
# 开启订阅消息任务
message_manager.subscribe(on_message_receiced)
返回数据示例
不同事件异步消息返回数据,详见 异步消息数据示例 。
商户开户进件¶
商户可通过此接口方法进行商户进件
调用示例
response = merchant.MerchantUser.create(
request_id='request_id',
usr_phone='usr_phone',
cont_name='cont_name',
cont_phone='cont_phone',
customer_email='customer_email',
mer_name='mer_name',
mer_short_name='mer_short_name',
license_code='license_code',
reg_addr='reg_addr',
cust_addr='cust_addr',
cust_tel='cust_tel',
mer_start_valid_date='mer_start_valid_date',
mer_valid_date='mer_valid_date',
legal_name='legal_name',
legal_type='0',
legal_idno='legal_idno',
legal_mp='legal_mp',
legal_start_cert_id_expires='20190101',
legal_id_expires='20210101',
card_id_mask='card_id_mask',
bank_code='001',
card_name='中国建设银行',
bank_acct_type='2',
prov_code='1100',
area_code='0011',
rsa_public_key='rsa_public_key')
if response.get('status') == 'succeeded':
print('success result')
参数说明
参数说明详见 开户进件
商户开户查询¶
查询商户开户结果
调用示例
response = merchant.MerchantUser.query(request_id='request_id')
if response.get('status') == 'succeeded':
print('success result')
参数说明
参数说明详见 开户查询
商户入驻¶
渠道商对旗下用户进行商户入驻以及支付渠道批量配置
调用示例
response = merchant.MerchantPayConf.create(
request_id='request_id',
sub_api_key='sub_api_key',
bank_channel_no='01',
fee_type='02',
app_id='app_id',
wx_category='',
alipay_category='alipay_category',
cls_id='cls_id',
model_type='1',
mer_type='1',
province_code='310000',
city_code='310100',
district_code='310115',
add_value_list={
'wx_lite': {'appid': 'appid'}
})
if response.get('status') == 'succeeded':
print('success result')
参数说明
参数说明详见 商户入驻
商户入驻修改¶
渠道商对旗下用户进行商户入驻信息修改或升级M3,目前仅支持支付宝渠道的操作,修改结果异步报文通知
调用示例
response = merchant.MerchantPayConf.modify(
request_id='request_id',
# 推荐商户的api_key
sub_api_key='sub_api_key',
alipay_request_params={
'mer_short_name': "mer_short_name",
'mer_phone': "mer_phone",
'fee_type': "02",
'card_no': "card_no",
'card_name': "card_name",
'category': "category",
'cls_id': "cls_id",
'mer_name': "mer_name",
'mer_addr': "mer_addr",
'contact_name': "contact_name",
'contact_phone': "contact_phone",
'contact_mobile': "contact_mobile",
'contact_email': "contact_email@qq.com",
'legal_id_no': "legal_id_no",
'mer_license': "mer_license",
'province_code': "310000",
'city_code': "310100",
'district_code': "310115"})
if response.get('status') == 'succeeded':
print('success result')
参数说明
参数说明详见 商户入驻修改
商户入驻查询¶
通过 request_id 查询商户入驻结果
调用示例
response = merchant.MerchantPayConf.query(request_id='request_id')
if response.get('status') == 'succeeded':
print('success result')
参数说明
参数说明详见 商户入驻查询
上送商户证照¶
上传商户附件信息
调用示例
response = adapay_merchant.MerchantProfile.mer_profile_picture(
subApiKey='sub_api_key',
file='file_path_str',
fileType='01')
参数说明
参数说明详见 上送商户证照
提交商户证照信息¶
商户证件信息提交接口,调用后提交后商户证件信息审核状态切换为“等待后台审核“
调用示例
response = adapay_merchant.MerchantProfile.mer_profile_for_audit(
subApiKey='sub_api_key',
socialCreditCodeId='socialCreditCodeId',
legalCertIdFrontId='legalCertIdFrontId',
legalCertIdBackId='legalCertIdBackId',
businessAdd='businessAdd',
storeId='storeId1|storeId2',
accountOpeningPermitId='accountOpeningPermitId',
shareholderInfoList=[])
参数说明
参数说明详见 提交商户证照信息
查询商户审核状态¶
商户可以查看提交的商户基础信息审核状态
调用示例
response = adapay_merchant.MerchantProfile.query_mer_profile_status(subApiKey='subApiKey')
参数说明
参数说明详见 商户审核状态查询
创建应用¶
代理商帮商户创建应用
调用示例
response = adapay_merchant.Application.create(sub_api_key='sub_api_key',
app_name='app_name')
print('respose is :' + str(response))
参数说明
参数说明详见 创建应用
查询应用¶
代理商查询商户应用列表
调用示例
response = adapay_merchant.Application.query(sub_api_key='sub_api_key')
print('respose is :' + str(response))
参数说明
参数说明详见 查询应用