python 商户进件 SDK 使用文档

简介

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

下载地址

SDK下载

(下载包内容为demo代码,SDK 可通过 pip 直接安装)

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))
  • 参数说明

参数说明详见 查询应用

附件