一小只支付接口的自动化

2023-11-08 10:50
文章标签 接口 自动化 支付 一小

本文主要是介绍一小只支付接口的自动化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  原先呢我没想着要搞这个,我自己感觉点点点还是比较舒服的。但是极地冰川消融导致海平面上升,让我突然觉得这是有必要的。

  扯皮的话不多说,我们需要先把思路理理清楚,这个时候倒立起来总会有其他意想不到的效果。

  发了一个正常的请求,看到我购买成功后返回结果是:"state"=1。知道这个结果以后,根据自己的业务经验可以总结出,需要以下几个步骤来完成。

 

所有的逻辑都是在正常登陆的情况下产生的,so,登陆的方法不能少:

  return的是登陆后产生的一个auth值,之后的操作会用到这个值。

  这个是直接用缓存页面获取的,也可以正常登陆获取,

  获取的方法可以用正则,也可以直接转换取值,效果都是一样的。

 1 # coding:utf-8
 2 import requests
 3 import re
 4 def Login(s):
 5     '''
 6     保持uid    314948的登陆状态
 7     :return:提取auth的值
 8     '''
 9     url = 'http://crmtest.bdwork.com/member.php?mod=logging&action=login&referer='
10     h = {
11         'Host': 'crmtest.bdwork.com',
12         'Connection': 'keep-alive',
13         'Upgrade-Insecure-Requests': '1',
14         'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4092.1 Safari/537.36',
15         'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
16         'Referer': 'http://crmtest.bdwork.com/home.php?mod=spacecp&ac=look',
17         'Accept-Encoding': 'gzip, deflate',
18         'Accept-Language': 'zh-CN,zh;q=0.8'
19         }
20     cookie = {
21         'brandclick':'brandclick',
22         'KY1F_c7af_saltkey':'c32x3x6a',
23         'KY1F_c7af_lastvisit':'1533198615',
24         'KY1F_c7af_sendmail':'1',
25         'KY1F_c7af_noticeTitle':'1',
26         'UM_distinctid':'164f9f95c5830e-0679413bf11568-4c531929-100200-164f9f95c59474',
27         'KY1F_c7af__refer':'%252Fhome.php%253Fmod%253Dspacecp%2526ac%253Dlook',
28         'CNZZDATA1259972829':'1337227657-1530510545-%7C1533198970',
29         'Hm_lvt_aabf378828361ace85e070bda547e0c2':'1532587790,1532703535,1532934413,1533188504',
30         'Hm_lpvt_aabf378828361ace85e070bda547e0c2':'1533202228',
31         'Hm_lvt_855f1a9b2df256430c5190b4c155e0be':'1532587790,1532703535,1532934413,1533188504',
32         'Hm_lpvt_855f1a9b2df256430c5190b4c155e0be':'1533202229',
33         'KY1F_c7af_lastact':'1533202227%09member.php%09logging',
34         'encodemobile':'cP22pue9GTQnWMxgrOUowqIFOw',
35         'name':'17621212121',
36         'KY1F_c7af_ulastactivity':'e4df0yITlF8mbtqQE5dAg%2FzDeXDv%2B3mOev0miMuxK8fR%2FG2WwF%2Fc',
37         'KY1F_c7af_sid':'m3ApNB',
38         'KY1F_c7af_auth':'b61asNdM0xvEJX17xo6x8LhP3d7utK0DAWkXCm23DiIx262XHLcqgzsh4Qdm7jOjCwsiIOGy0LJFiYiTlfwI%2BcQqpng',
39         'KY1F_c7af_lastcheckfeed':'314948%7C1533202227',
40         'KY1F_c7af_checkfollow':'1',
41         'KY1F_c7af_lip':'116.226.114.196%2C1533201831',
42         'KY1F_c7af_security_cookiereport':'921azQNj36RYks%2BTjCXtqUSWvv9kMJQOPGbKe4zawKNQngh3mPI8'
43         }
44     d = s.get(url,headers=h,cookies=cookie)
45     r = d.text
46     # if '吕振华' in r:
47     #     print('登陆成功,提取auth:',)
48     # else:
49     #     print('登录失败')
50     auth0 = re.findall(r"auth = \"(.+?)\";",r)
51     auth = ''.join(auth0)
52     return auth
53 if __name__ in '__main__':
54     s = requests.session()
55     # print('\'',''.join(Login(s)),'\'')
56     print(Login(s))

 

登陆之后要做什么呢,当然是操作购买道具,会员等等需要支付的动作:

  例如,道具刷新卡

 1 # coding:utf-8
 2 import requests
 3  4 s = requests.session()
 5 def test_g_1(auth):
 6     '''
 7     刷新卡购买
 8     :return:state=1正确
 9     '''
10     url = 'http://crmtest.bdwork.com/appapi.php?mod=pay_transeMoney'
11     h = {
12         'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
13         'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
14         'Referer': 'http://crmtest.bdwork.com/member.php?mod=txl&act=zhifu&zhifu_type=4&authorid=1&bump_id=1&id=33&idtype=tid&tid=&url=',
15         'Accept-Encoding': 'gzip, deflate',
16         'Accept-Language': 'zh-CN,zh;q=0.9',
17         'Cookie': 'name=17621212121',
18         'Host': 'crmtest.bdwork.com',
19         'Content-Length': '88'
20         }
21 
22     body = {
23         'uid':'314948',
24         'auth':auth,
25         'tuid':'1',
26         'amount':'1',
27         'transtype':'-22',
28         'applyid':'1'
29         }
30     r = s.post(url,data=body,headers=h)
31     return r.text
32 # if __name__ in '__main__':
33 #     try:
34 #         auth = login.Login(s)
35 #         print(test_g_1(auth))
36 #     except:
37 #         pass

 

购买完成之后,系统里就没有什么操作了,接下来只需要在unittest中写好用例就ok了。

开始之前需要打开session,接着添加备注提示,然后调用login方法提取操作必须的auth值,之后调用购买道具方法并打印出提示信息,最后添加断言就完工啦。

 1 import unittest
 2 import requests
 3 class TestCase(unittest.TestCase):
 4     #开始前打开session
 5     @classmethod
 6     def setUpClass(cls):
 7         cls.s = requests.session()
 8 
 9     def test_Shauxinka(self):
10         '''
11         刷新卡购买
12         :return: 当state=1时通过
13         '''
14         #调用登陆方法,提取auth值
15         auth = login.Login(self.s)
16         q = shuaxinka.test_g_1(auth)
17         print('刷新卡购买返回状态为:%s'%q)
18         #添加断言
19         self.assertTrue(q == '{"state":1}')

  单个道具写完就可以花时间把所有相关的动作总结一下,ctrl+c,ctrl+v

  需要生成报告的可以自行百度一下,我贴个效果图出来:

 

 

到这里就算整体完成了,总结一下,

首先梳理思路,然后做出相应的操作,最后添加unittest用例

言辞略显简陋,如有雷同,不胜荣幸。

 

转载于:https://www.cnblogs.com/lvzhenhua/p/9706546.html

这篇关于一小只支付接口的自动化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/369342

相关文章

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

使用Python实现Word文档的自动化对比方案

《使用Python实现Word文档的自动化对比方案》我们经常需要比较两个Word文档的版本差异,无论是合同修订、论文修改还是代码文档更新,人工比对不仅效率低下,还容易遗漏关键改动,下面通过一个实际案例... 目录引言一、使用python-docx库解析文档结构二、使用difflib进行差异比对三、高级对比方

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

Python使用python-pptx自动化操作和生成PPT

《Python使用python-pptx自动化操作和生成PPT》这篇文章主要为大家详细介绍了如何使用python-pptx库实现PPT自动化,并提供实用的代码示例和应用场景,感兴趣的小伙伴可以跟随小编... 目录使用python-pptx操作PPT文档安装python-pptx基础概念创建新的PPT文档查看

基于Python编写自动化邮件发送程序(进阶版)

《基于Python编写自动化邮件发送程序(进阶版)》在数字化时代,自动化邮件发送功能已成为企业和个人提升工作效率的重要工具,本文将使用Python编写一个简单的自动化邮件发送程序,希望对大家有所帮助... 目录理解SMTP协议基础配置开发环境构建邮件发送函数核心逻辑实现完整发送流程添加附件支持功能实现htm

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.