Package: djdg_python_common_verify_SDK
===========================djdg PYTHON COMMON AUTH SDK===========================.. toctree:::maxdepth: 2How To Install:---------------command ::pip install djdg_python_common_verify_SDKdatabase model description:---------------------------1. VerifiedUser_model_2. BankInfo_model_3. BankVerify_model_.. _VerifiedUser_model:VerifiedUser model^^^^^^^^^^^^^^^^^^.. code-block:: pythonclass VerifiedUser(models.Model):TYPE_REAL_NAME_VALIDATE = 0TYPE_UPLOAD_VALIDATE = 1CHOICE_TYPE = ((TYPE_REAL_NAME_VALIDATE, '实名认证'),(TYPE_UPLOAD_VALIDATE, '上传认证'))STATUS_AUDIT_PASS = 0STATUS_AUDIT = 1STATUS_NOT_USE = 2STATUS_RE_AUDIT = 4CHOICE_STATUS = ((STATUS_AUDIT_PASS, '认证成功'),(STATUS_AUDIT, '待审核'),(STATUS_NOT_USE, '未使用'),(STATUS_RE_AUDIT, '认证失败'))user = models.OneToOneField(User, related_name="common_verified_user")id_name = models.CharField(u"身份证姓名", max_length=64, null=True)id_card_no = models.CharField(u"身份证号码", max_length=32, null=True)type = models.SmallIntegerField(u"认证类型", default=0, choices=CHOICE_TYPE)id_card_img1 = models.CharField(u"身份证正面", max_length=128, null=True)id_card_img2 = models.CharField(u"身份证反而", max_length=128, null=True)status = models.SmallIntegerField(u"认证状态", default=0, choices=CHOICE_STATUS)stime = models.DateTimeField(u"状态时间", auto_now=True)ctime = models.DateTimeField(u"创建时间", auto_now_add=True)pay_password = models.CharField(u"支付密码", max_length=128, null=True, blank=True).. _BankInfo_model:BankInfo model^^^^^^^^^^^^^^.. code-block:: pythonclass BankInfo(models.Model):name = models.CharField(u"银行名称", max_length=32)logo = models.CharField(u"银行LOGO URL", max_length=255)color = models.CharField(u"银行卡底色", max_length=8, default='FFFFFF').. _BankVerify_model:BankVerify model^^^^^^^^^^^^^^^^.. code-block:: pythonclass BankVerify(models.Model):TYPE_BANK_BOOK = 0TYPE_DEBIT_CARD = 1TYPE_CREDIT_CARD = 2CHOICE_TYPE = ((TYPE_BANK_BOOK, '存折'),(TYPE_DEBIT_CARD, '借记卡'),(TYPE_CREDIT_CARD, '信用卡'))STATUS_AUDIT_PASS = 0STATUS_AUDIT = 1STATUS_NOT_USE = 2STATUS_RE_AUDIT = 4CHOICE_STATUS = ((STATUS_AUDIT_PASS, '绑定成功'),(STATUS_AUDIT, '绑定中'),(STATUS_NOT_USE, "未使用"),(STATUS_RE_AUDIT, '绑定失败'))user = models.ForeignKey(User)bank_info = models.ForeignKey(BankInfo, related_name="dealer_bank_card", null=True, default=None,on_delete=models.SET_NULL)card_branch = models.TextField("开户支行", max_length=64, null=True)province = models.CharField("省份", max_length=32, default='')city = models.CharField("城市", max_length=16, default='')card_no = models.CharField("卡号", max_length=64)card_tel = models.CharField("预留手机", max_length=16)type = models.SmallIntegerField("卡类型", default=1, choices=CHOICE_TYPE)status = models.SmallIntegerField("卡状态", default=0, choices=CHOICE_STATUS)stime = models.DateTimeField("状态时间", auto_now=True)ctime = models.DateTimeField("创建时间", auto_now_add=True)Setting Config:- INSTALLED_APPS_.- JAVA_COMMON_SYSTEM_.- RESPONSE_CONFIG_.- REDIS_.- LOGGING_.- DATABASE_... _INSTALLED_APPS:INSTALLED_APPS.. code-block:: pythonINSTALLED_APPS = ["**","djdg_common_verify"]# INSTALLED_APPS 增加如上app# 然后运行python manage.py migrate djdg_common_verify# 生成数据库的表，以及插入bankinfo的信息.. _JAVA_COMMON_SYSTEM:JAVA_COMMON_SYSTEM.. code-block:: pythonJAVA_COMMON_SYSTEM = {'host': 'localhost', 'protocol': 'http','base_url': '/ja/common/v1/','appid': 'abc', 'secret': '123'}# 需要在settings.py增加java common模块的配置，具体的配置信息如上.. _RESPONSE_CONFIG:RESPONSE_CONFIG.. code-block:: pythonRESPONSE_CONFIG = {'STATUS_PARAM': 'statusCode','MSG_PARAM': 'msg','DATA_PARAM': 'data','OK_STATUS': 0,'OK_MSG': 'success'}# 配置RESPONSE_CONFIG， 主要用于系统间的http请求.. _REDIS:REDIS.. code-block:: pythonREDIS = {'HOST': 'localhost','PORT': 6379,'DB': 0,'PASSWORD': '123',}# 配置redis.. _LOGGING:LOGGING.. code-block:: pythonLOGGING = {'version': 1,'disable_existing_loggers': False,'formatters': {'verbose': {'format': '%(asctime)s [%(levelname)s] [%(process)d:%(thread)d] [%(name)s] [%(module)s.%(funcName)s:%(lineno)d] - %(message)s'},'middle': {'format': '%(asctime)s [%(levelname)s] [%(module)s.%(funcName)s:%(lineno)d] - %(message)s'},'simple': {'format': '%(levelname)s %(message)s'},},'filters': {'require_debug_false': {'()': 'django.utils.log.RequireDebugFalse'}},'handlers': {'null': {'level': 'DEBUG','class': 'logging.NullHandler',},'console': {'level': 'DEBUG','class': 'logging.StreamHandler','formatter': 'middle'},'testlog': {'level': 'DEBUG','class': 'logging.handlers.RotatingFileHandler','formatter': 'verbose','filename': os.path.join(BASE_DIR, 'test.log'),'maxBytes': '1024 * 1024 * 10','backupCount': '5'},},'loggers': {'django': {'handlers': ['testlog'],'propagate': True,'level': 'INFO',},'djdg_common_verify': {'handlers': ['testlog'],'propagate': False,'level': 'DEBUG',},}}# 如果需要将认证的信息保存到log里面，需要在loggers里面设置djdg_common_verify，具体配置可参考上述代码.. _DATABASE:DATABASE migrate.. code-block:: pythonpython manage.py migrate djdg_common_verifyRun Test:Test Command.. code-block:: python# first config setting file.# 在DATABASE里面加入类似的如下代码# 由于有中文，必须设置编码DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'verifycommon','USER': 'root','PASSWORD': '123456','HOST': '127.0.0.1','PORT': '3306','TEST': {'NAME': 'mytestdatabase','CHARSET': 'utf8','COLLATION': 'utf8_general_ci',},},}# 然后运行下面的代码，执行测试用例,# 不要频繁去跑测试用例，由于java的接口直接对接第三方的付费服务， 只要保证功能正常即可python manage.py test djdg_common_verifyFunction list:- idcardauth_example_.- bankcardauth_example_.- paypasswordauth_example_... _idcardauth_example:IdCardUserAuther Example:1. 用户获取实名认证信息导入工具类 ::from djdg_common_verify.idcard_auth import IdCardUserAuther创建实例对象 ::Auther = IdCardUserAuther(user_id=1)2. 获取序列化之后的信息 ::Auther.serializer()2.1 返回信息为dict2.1.1 未通过认证::{"statusCode": 5000, "msg": "用户暂未通过认证", "data":{}}2.1.2 通过认证::{"statusCode": 0, "msg": "成功", "data":{"name":"张三", "identity":1234}}3. 传参进行认证 ::Auther = IdCardUserAuther(user_id=1, auth_data={"name":"张三", "identity":"123456789"})3.1 调用认证方法 ::Auther.auth()3.2 获取序列化之后的信息 ::Auther.serializer()3.3 返回信息为dict3.3.1 未通过认证 ::{"statusCode": 5000, "msg": "用户暂未通过认证", "data":{}}3.3.2 通过认证 ::{"statusCode": 0, "msg": "成功", "data":{"name":"张三", "identity":1234}}.. _bankcardauth_example:bankcardauth Example:导入工具类 ::from djdg_common_verify.bankcard_auth import BankCardUserAuther用户获取银行卡绑定信息 ::Auther = BankCardUserAuther(user_id=1)获取序列化之后的信息  ::Auther.serializer()返回信息为dict ::# 未通过认证{"statusCode": 5000, "msg": "银行卡暂未通过认证", "data": {}}# 通过认证{"statusCode": 0, "msg": "成功","data": {"bankcard": "", "bank_branch_name": "","type": "",  "province": "","city": "", "tel": "","bank_name": "", "bank_logo": "","color": "", "name": "", "identity": ""}}传参进行认证 ::Auther = BankCardUserAuther(user_id=1, auth_data={"bankcard": "", "bank_branch_name": "","type": "", "province": "", "city": "","tel": "", "bank_name": "", "bank_logo": "","color": "", "name": "", "identity": ""}绑定或修改银行卡 ::auth_data={"name": "张三", "bankcard": "1234567890", "tel":"13112345678"}# "name":姓名， "bankcard":银行卡号， "tel":电话号码 三个字段不能为空修改银行卡支行信息 ::auth_data={"province": "广东", "city":"深圳", "bank_branch_name": "科技园支行"}# "province":省份， "city":城市， "bank_branch_name":支行名称 三个字段不能为空调用认证方法 ::Auther.auth()获取序列化之后的信息 ::Auther.serializer()返回信息为dict ::# 未通过认证{"statusCode": 5000, "msg": "用户暂未通过认证", "data":{}}# 通过认证{"statusCode": 0, "msg": "成功","data": {"bankcard": "", "bank_branch_name": "","type": "", "province": "", "city": "","tel": "", "bank_name": "", "bank_logo": "","color": "", "name": "", "identity": ""}}.. _paypasswordauth_example:paypasswordauth Example:导入工具类 ::from djdg_common_verify.bankcard_auth import BankCardUserAuther用户获取银行卡绑定信息 ::Auther = UserPasswordAuther(user_id=1)获取序列化之后的信息 ::Auther.serializer()返回信息为dict ::{"statusCode": 0, "msg": "成功", "data": {"password": "设置的密码"}}# 已经设置密码{"statusCode": 5000, "msg": "用户暂未设置交易密码", "data": {}}# 未设置密码传参进行认证设置交易密码 (之前尚未设置交易密码) ::Auther = UserPasswordAuther(user_id=1)# 调用认证方法Auther.auth()# 获取序列化之后的信息Auther.serializer()# 返回信息为dict{"statusCode": 5006, "msg": "密码无效或者为空", "data": {}}  # 未通过认证{"statusCode": 0, "msg": "成功", "data": {"password": "设置的密码"}} # 通过认证修改交易密码 (之前已经设置交易密码) ::# 第一步获取settingtokenAuther = UserPasswordAuther(user_id=1, auth_data={"identity":"身份证号码"})# 调用获取settingtoken方法Auther.get_settingtoken()# 返回信息为dict{"statusCode": 5003, "msg": "用户身份证信息未通过校验", "data": {}}{"statusCode": 5000, "msg": "用户暂未设置交易密码", "data": {}}{"statusCode": 0,"msg": "验证身份信息成功","data": {"settingToken": settingtoken.token}}  # 获取成功返回信息# 第一步获取settingtokenAuther = UserPasswordAuther(user_id=1, \auth_data={"password":"设置的交易密码", "setttingtoken":"通过第一步获取的settingtoken"})# 调用认证方法Auther.auth()# 获取序列化之后的信息Auther.serializer()# 返回信息为dict{"statusCode": 5001, "msg": "setting token未通过校验", "data": {}} # 未通过认证{"statusCode": 5005, "msg": "settingtoken失效", "data": {}} # 未通过认证{"statusCode": 0, "msg": "成功", "data": {"password": "设置的密码"}} # 通过认证Version Log ::# version 0.0.5修正验证银行卡的流程