文档章节

python 调用接口

o
 osc_n6euf5h6
发布于 2019/03/19 21:10
字数 573
阅读 22
收藏 0

精选30+云产品,助力企业轻松上云!>>>

这个比较乱,抽口再修改一下。

 

工作需要调有赞API的接口数据,  返回数据. 进行数据处理

现在两部分比较重要:1 自动获取数据  ,  2处理excel的过程.

  1. 明白接口的过程.传入参数

    https://open.youzan.com/v3/apicenter/doc-api-main/1/2/salesman/youzan.salesman.trades.get 

       这个地址里面,都有 各个很细的API 过程. 例如

 

    导入 外部API  。例如获得分销用户的方法的API . 

  

 

 

  用户的api 文档

from app.external.yz.api_util import YzApiUtil


class YzUserApi(YzApiUtil):
    """
    有赞会员Api
    """

    def get_follower(self, fans_id=None, weixin_openid=None):
        """
        根据微信粉丝用户的 weixin_openid 或 fans_id 获取用户信息
        :param fans_id:
        :param weixin_openid:
        :return:
        """

        params = {}

        if fans_id:
            params['fans_id'] = fans_id
        elif weixin_openid:
            params['weixin_openid'] = weixin_openid
        else:
            return None

        data = self._invoke('youzan.users.weixin.follower.get', '3.0.0', 'GET', params=params)

        if 'response' in data:
            return data['response']['user']
        else:
            return None

    def get_customer(self, fans_id=None, mobile=None, youzan_account=None):
        """
        获取客户详情
        :param fans_id:
        :param mobile:
        :param youzan_account:
        :return:
        """

        params = {}

        if fans_id:
            params['account'] = '{"account_type":"FansID","account_id":"' + str(fans_id) + '"}'
        elif mobile:
            params['account'] = '{"account_type":"Mobile","account_id":"' + str(mobile) + '"}'
        elif youzan_account:
            params['account'] = '{"account_type":"YouZanAccount","account_id":"' + str(youzan_account) + '"}'
        else:
            return None

        data = self._invoke('youzan.scrm.customer.get', '3.1.0', 'GET', params=params)

        if 'response' in data:
            return data['response']
        else:
            return None

    def get_openid(self, mobile):
        """
        使用手机号获取用户openId(获取的商家自有粉丝的openId。fans_type =1时)
        :param mobile: 会员手机号
        :return:
        {
          "open_id": "oTtVis-xiMQjlBME5Xi4Bc_twuqA",
          "union_id": "oqY0-wpXFmBsPI2IrTUYx3DigfjY"
        }
        """

        params = {
            'mobile': mobile,
        }

        data = self._invoke('youzan.user.weixin.openid.get', '3.0.0', 'GET', params=params)

        if 'response' in data:
            return data['response']
        else:
            return None

    def import_user(self):
        """
        导入三方帐号信息,用于App开店帐号一键授权
        :doc: https://open.youzan.com/v3/apicenter/doc-api-main/1/2/account_import/youzan.user.platform.import
        """

        params = {
            'country_code': '+86',
            'mobile': '17392940060',
            'open_user_id': '17392940060',
        }

        data = self._invoke('youzan.user.platform.import', '1.0.0', 'GET', params=params)

        if 'response' in data:
            return data['response']
        else:
            return None

 

 

  2  项目中接口服务

  测试接口通的数据代码:

from app.external.yz.user_api import YzUserApi
from app.model.yz_user import YzUser
from app.utils.x_logger import logger


class YzUserTestService:
    """
    有赞用户Test Service
    """


# 这是测试看是否通
def __init__(self): self.yz_api_user = YzUserApi() def get_user(self, mobile): user = self.yz_api_user.get_customer(mobile=mobile) logger.info(user) return user


#主程序执行,理论上下面的这些不要写在里面。 执行数据保存
if __name__ == '__main__': result_user = YzUserTestService().get_user("18874189337")
  # 用户传入参数 yz_user
= YzUser() yz_user.name = result_user['name'] yz_user.telephone = result_user['mobile'] yz_user.save() a = 1

 

  

 3  保存mysql 数据库表里

 

 

 

 

在mabao51数据库里建好同样数据结构的表

 

from app import db


class YzUser(db.Model):
    # 自定义表名:
    __tablename__ = 'yz_user'
    id = db.Column(db.BigInteger, primary_key=True)
    name = db.Column(db.String(50), nullable=False, default='')
    telephone = db.Column(db.String(20), default='')

    def save(self):
        db.session.add(self)
        db.session.commit()


if __name__ == '__main__':
    db.create_all()
    # test = YzUser.query.get(1)

    a = 1

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Python实现阿里云短信推送

本篇文章是使用Python的Web框架Django提供发送短信接口供前端调用,Python版本2.7 阿里云入驻、申请短信服务、创建应用和模板等步骤请参考:阿里云短信服务入门 1、下载sdk 阿里云短信服务P...

osc_9l5vqi8m
2018/03/04
14
0
Python一键转Jar包,Java调用Python新姿势!

粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文。言归正传,咱们开始吧! 本文结构: 需求背景 进击的 Python 随着人工智...

osc_ikbuen62
04/16
10
0
Python一键转Jar包,Java调用Python新姿势!

粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我_),今天这篇文章换换口味,正经的来写写技术文。言归正传,咱们开始吧! 本文结构: 需求背景 进击的 Python 随着人工智能...

轩辕之风
03/10
0
0
Python一键转Jar包,Java调用Python新姿势!

本文分享自微信公众号 - 编程技术宇宙(xuanyuancoding)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

轩辕之风
03/09
0
0
微服务跨语言 gRPC 之 Java & Python

本文旨在说明 spring-boot-starter-grpc 框架与 Python 之间跨语言 RPC 调用的友好实现。阅读本文前,请详细阅读 wiki文档,以便了解 的工作原理。 Java Server & Client 模块说明: sample...

Anoyi
2018/09/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

为什么从HBase的0.96版本开始,舍弃了-ROOT-文件?

HBase结构的读写流程 (1). HBase0.96版本之前: (2). HBase0.96开始: a. 当客户端获取到.meta文件的位置之后,会缓存.meta.文件的位置 b. 客户端还会缓存HRegion的位置 -ROOT-存在的意义: ...

其乐m
27分钟前
18
0
volatile关键字对 - What is the volatile keyword useful for

问题: At work today, I came across the volatile keyword in Java. 今天的工作中,我遇到了Java中的volatile关键字。 Not being very familiar with it, I found this explanation: 不太熟......

技术盛宴
32分钟前
25
0
golang 封装 mysql 和 redis 连接

Mysql封装 package dbimport ("fmt"_ "github.com/go-sql-driver/mysql""github.com/jmoiron/sqlx")var DB *sqlx.DBfunc init(){database, err := sqlx.Op......

开源中国最牛的人
33分钟前
16
0
pdfbox 读取文件报错 java.io.IOException: Page tree root must be a dictionary

pdfbox java.io.IOException: Page tree root must be a dictionary 示例代码 public static void main(String[] args) { try (InputStream sampleInputs = new ClassPathResource("s......

lemos
41分钟前
28
0
整理 Linux下列出目录内容的命令

在 Linux 中,有非常多的命令可以让我们用来执行各种各样的任务。当我们想要像使用文件浏览器一样列出一个目录下的内容时,大家第一时间想到的是 ls 命令。但只有 ls 命令能实现这个目的吗?...

良许Linux
42分钟前
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部