三方平台应用
三方平台应用
一、验证码
1、图片验证码
- 
概述 
 图片验证码是验证码的一种,图片验证码常见的形式有输入图片中字母、数字等
- 
作用 
 图片验证码是嵌入在企业网站、APP等应用中使用的一种验证方式,用户需要识别图片并按要求执行操作,在验证成功后才能使用某项功能。比如客户在某应用中发布文章或评论时,必须先完成图片验证,才可以进行发布操作 。一般用于最多为注册功能
- 
模块安装 
 pip install pillow
- 
实现 
 def verifycode(request):
 # 引入绘图模块
 from PIL import Image, ImageDraw, ImageFont
 # 引入随机函数模块
 import random
 # 定义变量,用于画面的背景色、宽、高
 bgcolor = (random.randrange(20, 100), random.randrange(
 20, 100), random.randrange(20, 100))
 width = 100
 height = 50
 # 创建画面对象
 im = Image.new('RGB', (width, height), bgcolor)
 # 创建画笔对象
 draw = ImageDraw.Draw(im)
 # 调用画笔的point()函数绘制噪点
 for i in range(0, 100):
 xy = (random.randrange(0, width), random.randrange(0, height))
 fill = (random.randrange(0, 255), 255, random.randrange(0, 255))
 draw.point(xy, fill=fill)
 # 定义验证码的备选值
 str = '1234567890QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm'
 # 随机选取4个值作为验证码
 rand_str = ''
 for i in range(0, 4):
 rand_str += str[random.randrange(0, len(str))]
 # 构造字体对象
 font = ImageFont.truetype(r'/home/xlg/PycharmProjects/fonts/ADOBEARABIC-BOLDITALIC.OTF', 40)
 # 构造字体颜色
 fontcolor1 = (255, random.randrange(0, 255), random.randrange(0, 255))
 fontcolor2 = (255, random.randrange(0, 255), random.randrange(0, 255))
 fontcolor3 = (255, random.randrange(0, 255), random.randrange(0, 255))
 fontcolor4 = (255, random.randrange(0, 255), random.randrange(0, 255))
 # 绘制4个字
 draw.text((5, 2), rand_str[0], font=font, fill=fontcolor1)
 draw.text((25, 2), rand_str[1], font=font, fill=fontcolor2)
 draw.text((50, 2), rand_str[2], font=font, fill=fontcolor3)
 draw.text((75, 2), rand_str[3], font=font, fill=fontcolor4)
 # 释放画笔
 del draw
 # 存入session,用于做进一步验证
 request.session['verify'] = rand_str
 # 内存文件操作
 import io
 buf = io.BytesIO()
 # 将图片保存在内存中,文件类型为png
 im.save(buf, 'png')
 # 将内存中的图片数据返回给客户端,MIME类型为图片png
 return HttpResponse(buf.getvalue(), 'image/png')
 验证码使用
 path(r'^getcode/$',main.verifycode,name='verifycode'),<img src="/getcode/" onclick="this.src='/getcode/?id='+Math.random()">
2、邮箱验证码
- 
配置settings 
 settings.py
 EMAIL_HOST = os.environ.get('MAIL_SERVER','smtp.163.com')
 EMAIL_HOST_USER = os.environ.get('MAIL_USER','15611833906@163.com')
 EMAIL_HOST_PASSWORD = os.environ.get('MAIL_PASSWORD',123456)
- 
单人邮件 
 from django.core.mail import send_mailsend_mail( 'Subject here', 'Here is the message.', 'from@example.com', ['to@example.com'], fail_silently=False, )
二、阿里云海量云存储
1、配置步骤
- 
登录阿里云 
 https://www.aliyun.com/search?spm=5176.19720258.J_8058803260.17.c9a82c4aEaGQ5I&scene=all&k=OSS
- 
输入oss 选择对象存储oss 
 https://oss.console.aliyun.com/overview
- 
选择管理控制台 
- 
选择左侧导航Bucket列表 
- 
选择创建Bucket->输入名称->选择你所在的区域->点击确定 读写权限如果为默认私有 则url会有过期时间 如果想url永久有效可选择“公共读” “公共读写” 
- 
创建完成 
- 
回到概述->选择新手入门 
- 
文档 
 https://help.aliyun.com/learn/learningpath/oss.html?spm=5176.8465980.guide.1.4e7014506UkzoA
 文件上传
 https://help.aliyun.com/document_detail/31886.htm?spm=a2c4g.11186623.0.0.5d352a22Wz8fWx#task-zx1-4p4-tdb
 https://help.aliyun.com/document_detail/88426.htm?spm=a2c4g.11186623.0.0.2d562cb7UCrYzI#concept-88426-zh
2、使用
- 
安装 
 通过pip安装
 执行命令如下:
 pip install oss2
- 
验证 
 验证SDK版本- 在命令行输入python并回车,进入Python环境。
- 执行以下命令检查SDK版本
import oss2 
 oss2.version
 
- 
yourAccessKeyId与yourAccessKeySecret获取 
 常用入口->选择AccessKey选择开始使用子用户AccessKey 进入创建用户页面 输入Bucket名称(你在Bucket创建时候的名称) 点击确定 输入验证码 点击左侧导航用户->添加权限 输入oss->进行添加->确定->完成 点击创建新的AccessKey 
- 
查看Bucket名称 
 https://oss.console.aliyun.com/bucket
- 
查看Bucket所在地域对应的Endpoint 
- 
上传本地文件 
 SDK位置:新手入门->SDK参考->选择Python->简单上传->上传本地文件https://help.aliyun.com/document_detail/88426.htm?spm=a2c4g.11186623.0.0.2d562cb7UCrYzI#concept-88426-zh
 import oss2
 import os
 # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
 auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')
 # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
 # 填写Bucket名称。
 bucket = oss2.Bucket(auth, 'yourEndpoint', 'examplebucket')# 必须以二进制的方式打开文件。 # 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。 with open('D:\\localpath\\examplefile.txt', 'rb') as fileobj: # Seek方法用于指定从第1000个字节位置开始读写。上传时会从您指定的第1000个字节位置开始上传,直到文件结束。 fileobj.seek(1000, os.SEEK_SET) # Tell方法用于返回当前位置。 current = fileobj.tell() # 填写Object完整路径。Object完整路径中不能包含Bucket名称。 bucket.put_object('exampleobject.txt', fileobj)这种上传方式需要将本地文件上传到服务器,然后再将文件上传到云存储(不建议使用这种方式) 
- 
实例 
 upload.html
 
 
 
 
 Title 
 
 
 
 
 
 views.py
 from django.shortcuts import render,HttpResponse
 import os# 完成了简单的上传 def upload(req): import random if req.method == 'POST': f = req.FILES.get('file') import oss2 import os # 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。 auth = oss2.Auth('LTAI5tKvzubUZFUf5E9XvHQP', '1wqHRFJETCQ0w374Hi5Q8w8p0pqVUz') # yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。 # 填写Bucket名称。 bucket = oss2.Bucket(auth, 'oss-cn-beijing.aliyuncs.com', 'luckyxlg') # 必须以二进制的方式打开文件。 # 填写本地文件的完整路径。如果未指定本地路径,则默认从示例程序所属项目对应本地路径中上传文件。 # with open('D:\\localpath\\examplefile.txt', 'rb') as fileobj: # Seek方法用于指定从第1000个字节位置开始读写。上传时会从您指定的第1000个字节位置开始上传,直到文件结束。 # fileobj.seek(1000, os.SEEK_SET) # Tell方法用于返回当前位置。 # current = fileobj.tell() # 填写Object完整路径。Object完整路径中不能包含Bucket名称。 key = f.name print(bucket.put_object(key, f)) # 设置签名url url = bucket.sign_url('GET', key, 10 * 60) print(url) return HttpResponse("上传文件处理完成!") return render(req,'upload.html')获取文件上传公有的url 
 https://help.aliyun.com/document_detail/39607.htm?spm=a2c4g.11186623.0.0.564d1e772DpkBP
 如果bucket设置为私有 如需访问 则必须设置签名url
- 
下载 
 def download(req):
 import oss2# 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录RAM控制台创建RAM账号。 auth = oss2.Auth('LTAI5tKvzubUZFUf5E9XvHQP', '1wqHRFJETCQ0w374Hi5Q8w8p0pqVUz') # Endpoint以杭州为例,其它Region请按实际情况填写。 bucket = oss2.Bucket(auth, 'oss-cn-beijing.aliyuncs.com', 'luckyxlg') # 下载OSS文件到本地文件。如果指定的本地文件存在会覆盖,不存在则新建。 # <yourLocalFile>由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。 # <yourObjectName>表示下载的OSS文件的完整名称,即包含文件后缀在内的完整路径,例如abc/efg/123.jpg。 bucket.get_object_to_file('屏幕快照 2019-08-12 下午8.33.08.png', '/home/xlg/桌面/a.png') return HttpResponse('下载')
三、支付
1、配置步骤
- 
打开百度->输入支付宝开放平台->选择 
- 
点击登录->扫码登录 
- 
进入管理中心 
- 
选择开发者中心 
- 
选择创建应用->网页&移动应用->支付接入 
- 
输入应用名称->图标->选择网页应用->确认创建 
- 
选择添加能力 
- 
新增能力->支付 
- 
能力列表进行勾选 
- 
开发信息->接口加密方式->设置 
- 
点击底部蓝色字->下载支付宝秘钥生成器->下载成功并安装 
- 
安装完成打开->按图配置->点击生成秘钥->复制公钥 
- 
回到浏览器进行粘贴->保存设置->点击x关闭 
- 
开发信息->授权回调地址->设置(设置一个支付成功的回调地址) 
- 
回到顶部->提交审核 
- 
等待审核->预计在1天内完成审核 
2、沙箱操作
说明:因为个人没有资质使用支付功能 所以可以在沙箱环境进行测试使用
- 
回到首页->开发服务->研发服务 
- 
沙箱应用->RSA2(SHA256)密钥(推荐)->输入支付宝秘钥生成器生成的应用公钥->保存设置 
- 
下载钱包(仅限Android) 
- 
沙箱账号(所提供的账号为测试使用账号) 
3、SDK
- 
访问github.com->搜索Alipay 
- 
选择fzlee/alipay 
- 
点击选择中文文档 
4、使用
- 
安装 
 pip install python-alipay-sdk --upgrade
- 
初始化 
 from alipay import AliPay
 def pay(req):
 alipay = AliPay(
 appid="",
 app_notify_url=None, # 默认回调url
 app_private_key_string=app_private_key_string,
 # 支付宝的公钥,验证支付宝回传消息使用,不是你自己的公钥,
 alipay_public_key_string=alipay_public_key_string,
 sign_type="RSA2" # RSA 或者 RSA2
 debug=False # 默认False
 )# 如果你是 Python 3的用户,使用默认的字符串即可 subject = "测试订单" # 电脑网站支付,需要跳转到https://openapi.alipay.com/gateway.do? + order_string order_string = alipay.api_alipay_trade_page_pay( out_trade_no="20161112", # 订单ID total_amount=0.01, # 金额 subject=subject, return_url="https://example.com", # 回调URL notify_url="https://example.com/notify" # 可选, 不填则使用默认notify url ) return redirect('https://openapi.alipaydev.com/gateway.do?' + order_string)注意: 
 重定向的地址
 沙箱环境:https://openapi.alipaydev.com/gateway.do?
 正式环境:https://openapi.alipay.com/gateway.do?
 在工具生成公钥私钥的时候 需要注意添加如下内容
 公钥
 -----BEGIN PUBLIC KEY-----
 。。。
 -----END PUBLIC KEY-----
 私钥
 -----BEGIN RSA PRIVATE KEY-----
 。。。
 -----END RSA PRIVATE KEY-----
 RSA改为RSA2
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/articles/15948959.html

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号