专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

Win10基于Vue。jsDjangoPython3微信扫码

  之前的一篇文章:mpvue1。0python3。7Django2。0。4实现微信小程序的支付功能,主要介绍了微信小程序内部支付的流程,然而实际上微信小程序有一定的局限性,也就是用户范围仅限于小程序内部生态圈,在生活中真正具有广泛性、高效性、使用方便性的支付方式还得是扫码支付,扫码的优点在于推广成本低,上至钓鱼台国宾馆,下至发廊地摊都能用,打印出来就完事了,而相比其他支付方式,现金的找零及假钞问题,信用卡的办理门槛、pos机的沉没成本,就算微信可集成的h5支付和小程序支付,奈何很多老年人根本不会用小程序和手机浏览器,更别说再进行支付操作了,所以基于二维码的扫码支付的确是非常符合国情的。
  本次我们使用前后端分离项目Vue。jsDjango来集成微信的扫码支付功能,体验一下21世纪泛用性最高的支付方式,首先注册微信公众平台:https:mp。weixin。qq。com
  获得开发者id和秘钥(appidappsecret)
  同时确保获取微信支付接口的权限:
  随后注册微信支付商户平台:https:pay。weixin。qq。com
  获取微信支付的商户号(在账户信息页面):
  获取微信支付接口的秘钥(账户中心api安全):
  同时在产品中心开发配置页面,将支付域名配置好:
  这里不像微信小程序,小程序只能允许https协议接口,而扫码支付域名既支持https也支持http,非常方便,同时注意域名必须是一个备案域名。
  至此,微信支付的前置操作就搞定了,下面我们来编写后台接口wxpay。py,首先导入依赖的库和一些工具方法:importrequestsfromdjango。httpimportHttpResponse,HttpResponseRedirectimportrandomimporttimeimporthashlibimportqrcodefrombs4importBeautifulSoupdeftransxmltodict(dataxml):soupBeautifulSoup(dataxml,featuresxml)xmlsoup。find(xml)解析XMLifnotxml:return{}datadictdict(〔(item。name,item。text)foriteminxml。findall()〕)returndatadictdeftransdicttoxml(datadict):定义字典转XML的函数dataxml〔〕forkinsorted(datadict。keys()):遍历字典排序后的keyvdatadict。get(k)取出字典中key对应的valueifkdetailandnotv。startswith(!〔CDATA〔):添加XML标记v!〔CDATA〔{}〕〕。format(v)dataxml。append({key}{value}{key}。format(keyk,valuev))returnxml{}xml。format(。join(dataxml))返回XMLdefgetsign(datadict,key):签名函数,参数为签名的数据和密钥paramslistsorted(datadict。items(),keylambdae:e〔0〕,reverseFalse)参数字典倒排序为列表paramsstr。join(u{}{}。format(k,v)fork,vinparamslist)keykey组织参数字符串并在末尾添加商户交易密钥md5hashlib。md5()使用MD5加密模式md5。update(paramsstr。encode())将参数字符串传入signmd5。hexdigest()。upper()完成加密并转为大写returnsign
  qrcode模块用来生成二维码,bs4模块用来将微信接口返回的xml解析成json,在21世纪的第二十个年头,微信接口居然还在使用原始的xml,这种反人类行为实在不能理解。
  接下来我们来编写支付逻辑,参考微信官方文档:https:pay。weixin。qq。comwikidocapinative。php?chapter65index3
  业务流程说明:
  (1)商户后台系统根据用户选购的商品生成订单。
  (2)用户确认支付后调用微信支付【统一下单API】生成预支付交易;
  (3)微信支付系统收到请求后生成预支付交易单,并返回交易会话的二维码链接codeurl。
  (4)商户后台系统根据返回的codeurl生成二维码。
  (5)用户打开微信扫一扫扫描二维码,微信客户端将扫码内容发送到微信支付系统。
  (6)微信支付系统收到客户端请求,验证链接有效性后发起用户支付,要求用户授权。
  (7)用户在微信客户端输入密码,确认支付后,微信客户端提交授权。
  (8)微信支付系统根据用户授权完成支付交易。
  (9)微信支付系统完成支付交易后给微信客户端返回交易结果,并将交易结果通过短信、微信消息提示用户。微信客户端展示支付交易结果页面。
  (10)微信支付系统通过发送异步消息通知商户后台系统支付结果。商户后台系统需回复接收情况,通知微信后台系统不再发送该单的支付通知。
  (11)未收到支付通知的情况,商户后台系统调用【查询订单API】。
  (12)商户确认订单已支付后给用户发货。
  一望而知,我们需要调用微信的统一下单接口,文档:https:pay。weixin。qq。comwikidocapinative。php?chapter91
  编写逻辑:defwxpay(request):urlhttps:api。mch。weixin。qq。compayunifiedorder微信扫码支付接口key945beca8fbf7d7商户api秘钥totalfee1支付金额,单位分body123123商品描述outtradenoordersrandom。randrange(100000,999999)订单编号params{appid:wx09f,APPIDmchid:1608,商户号notifyurl:http:wxpay。v3u。cnwxback,支付域名回调地址productid:goodssrandom。randrange(100000,999999),商品编号tradetype:NATIVE,支付类型(扫码支付)spbillcreateip:114。254。176。137,发送请求服务器的IP地址totalfee:totalfee,订单总金额outtradeno:outtradeno,订单编号body:body,商品描述noncestr:ibuaiVcKdpRxkhJA字符串}signgetsign(params,key)获取签名params。setdefault(sign,sign)添加签名到参数字典xmltransdicttoxml(params)转换字典为XMLresponserequests。request(post,url,dataxml)以POST方式向微信公众平台服务器发起请求datadicttransxmltodict(response。content)将请求返回的数据转为字典print(datadict)qrcodenameouttradeno。png支付二维码图片保存路径ifdatadict。get(returncode)SUCCESS:如果请求成功imgqrcode。make(datadict。get(codeurl))创建支付二维码片img。save(。qrcodename)保存支付二维码returnHttpResponse(qrcodename)
  随后配置路由:frommyapp。wxpayimportwxpayfromdjango。contrib。staticfiles。urlsimportstaticfilesurlpatterns。。。therestofyourURLconfgoeshere。。。urlpatterns〔定义超链接路由repath(staticupload(?Ppath。)39;,serve,{documentroot:staticupload}),path(wxpay,wxpay),〕
  启动django服务:pythonmanage。pyrunserver
  访问http:localhost:8000wxpay
  没有问题,查看后台日志:{returncode:SUCCESS,returnmsg:OK,appid:wx092344a76b9979ff,mchid:1602932608,noncestr:bnJwGlXZ3eDSNgjs,sign:2D81402DABEDF75E9A58F200FE7B6775,resultcode:SUCCESS,prepayid:wx1816114416896958d6f84177bd71da0000,tradetype:NATIVE,codeurl:weixin:wxpaybizpayurl?prJgBYgTS00}
  可以看到已经下单成功,不过订单状态处于预支付状态,同时检查二维码图片是否生成:
  至此,后台逻辑基本搞定,下面就是如何在前端进行调用,同时让用户进行扫描操作,编写wxpay。vue组件:templatecenterh1扫码支付h1centeraformitem生成二维码abuttonaformitemimg:imgq01。71396。comcbal4283ab8cfbac54df。jpgimgq01。71396。comcbal4283ab8cfbac54df。jpgaformitemtemplate
  当用户点击按钮之后,旋即请求后端支付接口,将接口生成的二维码返回给前端,效果是这样的:
  随后使用微信扫一扫功能进行扫码支付,需要注意的是,该二维码有效期只有五分钟,所以最好加上刷新功能。
  支付成功之后,我们还需要对交易进行确认,所以根据微信官方文档,调用统一查询接口:
  https:pay。weixin。qq。comwikidocapinative。php?chapter92,根据接口文档编写逻辑:defwxcheck(request):统一订单查询接口urlhttps:api。mch。weixin。qq。compayorderqueryouttradenoorder537236支付后的商户订单号key945bd7商户api密钥params{appid:wx0ff,APPIDmchid:1608,商户号outtradeno:outtradeno,订单编号noncestr:ibuaiVcKdpRxkhJA随机字符串}signgetsign(params,key)获取签名params。setdefault(sign,sign)添加签名到参数字典xmltransdicttoxml(params)转换字典为XMLresponserequests。request(post,url,dataxml)以POST方式向微信公众平台服务器发起请求datadicttransxmltodict(response。content)将请求返回的数据转为字典print(datadict)returnHttpResponse(ok)
  这里需要注意的是,查询的订单编号可以使商户自己的订单编号,也可以是微信订单号,二者必取其一:
  访问接口http:localhost:8000wxcheck
  返回结果:{returncode:SUCCESS,returnmsg:OK,appid:wx092344a76b9979ff,mchid:1602932608,noncestr:BVoaDmxxADkpSFEl,sign:23A86EB406B743E0C2C61C7E78DC9373,resultcode:SUCCESS,openid:oy9q36f9Dpeokj9FWyN3j0znpIqE,issubscribe:N,tradetype:NATIVE,banktype:OTHERS,totalfee:1,feetype:CNY,transactionid:4200000806202012174121934231,outtradeno:order537236,attach:,timeend:20201217231553,tradestate:SUCCESS,cashfee:1,tradestatedesc:支付成功,cashfeetype:CNY}
  可以看到没有问题,但是由于涉及金钱业务,为了养成良好的测试习惯,最好登录商户后台再次确认:
  结语:至此,整个微信扫码支付流程全部跑通,流程上比微信小程序支付逻辑要简单一些,同时由于不需要在线用户的openid,所以像微信小程序获取不到openid这样的大坑并不存在,后续会分享一些关于微信扫码订单退款的逻辑,搞笑的是,统一下单和查询接口没有并发限制,而申请退款居然有qps上的限制,所以退款流程应该会需要消息队列的介入。

美国当年轰炸我大使馆是误炸吗?不是的,他们自己披露是故意为之1999年5月8日,美军出动B2隐形轰炸机炸毁了我国驻南联盟大使馆,一时间群情激愤,许多人走上街头,用墨水瓶和臭鸡蛋回敬美国驻华使领馆。有人说,美国之所以敢这么做,是因为我们藏了F卖地产,加新能源文喜胖不胖(转载请注明出处)一市场温度9月15日,市场温度35。05,比上一个交易日降温约1。4。今天以光伏为首的赛道股集体重挫,引领了全市场4000多只股票下跌,上涨个股不到70下周这三个板块或将迎来报复性上涨一大消费概念板块。这个周五,大消费概念板块表现不错,板块逆势走强。随着传统佳节中秋节和国庆节双节日益临近,大消费概念板块或将再次升温。大消费概念板块是前年涨得最好的一个板块,也是最深度丨氢涌南上海21世纪经济报道见习记者王雪记者曹恩惠上海报道回忆起半年前的一场签约仪式,上海化学工业区管委会经发处处长陈震依然激动,活动效果出人意料,上海市氢能上中下游产业链知名企业几乎都来了,7月份大多地区新建屋销量大跌近9成多伦多消息,建筑业和土地开发协会(BuildingIndustryandLandDevelopmentAssociation,简称BILD),昨日(8月24日)公布的大多地区7月份水泥价格大跌,一哥海螺水泥也扛不住了!上半年营收净利均下滑超30本报记者黄群需求大幅下滑,导致水泥售价出现深度调整,上半年水泥企业有点惨。尽管以优秀的成本控制力著称,可一哥海螺水泥在大势面前也无法独善其身。公司8月25日晚间披露半年报,期内营收财政部拟发行750亿元10年期国债,手续费为承销面值的0。08大河财立方消息8月25日,财政部发布通知,为筹集财政资金,支持国民经济和社会事业发展,财政部决定发行2022年记账式附息(十九期)国债(10年期)。据悉,该期国债为10年期固定利率肯德基申请疯狂星期四商标?疯狂星期四这个梗源自于肯德基星期四推出的一项活动,活动名就叫作肯德基疯狂星期四。在这个活动期间因商品活动力度特大而出名。肯德基的固定活动疯狂星期四经常成为周四的热门话题,网友们将各1947年,蒋介石秘访延安,坐矮凳睡毛主席的窑洞,那晚他彻夜未眠头条中国史蒋介石自恃自己手中雄兵百万,所以从来没有把共产党放在眼里。但是在与共产党交手过程中,却总是以溃败告终。他纳闷到了极点,共产党毛主席到底握有什么制胜法宝,要武器没武器,要装第3次装修新房,吸收教训做了15个家居决定,入住才知道有多明智装修是一件很有趣的事情,痛并快乐着。装修过程很辛苦,需要和各种装修坑斗智斗勇。然而看到完工后的效果,会有发自内心的喜悦。第一次装修是萌新,啥都不懂,容易踩装修坑,多走不少弯路。第二湘雅刘医生的行为会涉嫌哪些犯罪?各位朋友大家好,近期网上热议的湘雅二医院刘医生事件出现了最新进展。由于该事件尚未查明,我不敢乱写,妄加猜测。因此,我仅根据最近其他文章报道的事实为依据做刑事责任的分析,不涉及到案件
俄16艘舰合围日本,诠释瘦死骆驼比马大,购买054或是出路在苏联解体之后,俄罗斯也继承了苏联的绝大部分衣钵,可以看出目前俄罗斯海军所使用的绝大部分主力战舰几乎全部都是苏联时代的武器,尽管继承了苏联时代的衣钵,但是如今的俄罗斯海军也只是瘦死德媒中国若统一,会将台积电据为己有,全球经济将毁于一旦近日,德国媒体德国编辑部网络发表了一篇题为失去台湾,世界经济将毁于一旦的文章,妄图用一些危言耸听的言论来干涉台海局势。文章的核心观点认为,中国若成功统一,会独吞台积电,届时全球经济主持人任鲁豫因病缺席重大晚会,近况曝光引热议,暂离央视1个月近日,网上传出香港回归25周年文艺晚会嘉宾名单,已定下8位主持人,分别是汪明荃曾志伟邓梓峰陈贝儿龙洋尼克买提马凡舒张凯丽等,而我们平时所熟悉的任鲁豫,却消失在名单之中,不少粉丝为之福建号下水,美兰德公司承认美舰过中国台海经济专属区属无害通过文刘澜昌中国第三艘航空母舰福建号下水,美国虽然猜测要到2025年才能形成战斗力,但是也承认,中国海军新航母下水是向整个地区表明中国军方将具备向太平洋更远处投送军力的能力。尤其可从第谈旅游之于美好生活的意义旅游业作为典型的幸福产业和大健康产业,是美好生活的必然组成部分。只要是基于生活导向与人性需求的,其业态创新永无止境。从人类发展稳中向好的长时态看,旅游已然成为现代人们的生活方式学习从乞丐变强盗,乌克兰是否还值得同情?面对勒索,欧洲内部有分歧作为一名国家领导人,并不是每一次出国访问,都是那么令人愉快。而德国总理奥拉夫肖尔茨(OlafScholz)近日与法国总统埃马纽埃尔马克龙(EmmanuelMacron)意大利总理马普京对台湾问题正式表态,将加强中俄合作,美国对中国发出警告作者常有礼阅读指南普京在中俄元首电话中表态,支持中国在台湾问题上的立场,美国挑拨中俄关系失败,竟然气急败坏的威胁中国不要站在历史错误的一边。据央视新闻报道,6月15日中俄两国元首再32022WTT常规挑战赛萨格勒布站,国乒小将向鹏31击败张本智和晋级8强,整场比赛,向鹏发挥的非常出色。客观地讲,其个人实力已经可以比肩世界顶尖高手。世界排名方面,张本智和世界第7共和国第三艘航母福建舰大家好,周末愉快,周末的意思是今天不用讨论那么正经的财报。这个周最振奋人心的消息,莫过于福建舰在6月17日正式下水。说个冷知识,福建是共和国为数不多的迄今为止尚未全境完全统一的省份砸手里了!仅剩12天,亚洲杯举办权仍无人问津,亚足联尴尬了2023年亚洲杯,本来是在我国举办的。为此,北京天津上海重庆成都西安大连青岛厦门和苏州10座城市,按照亚足联的要求新建或翻新了大型体育场。目前,眼看一座座花费巨资建起的体育场拔地而今夏目前最贵转会前十琼阿梅尼8千万欧第1,努涅斯第2哈兰德第3直播吧6月18日讯英超和法甲的转会窗口刚刚开启,西甲德甲和意甲则仍需等待到7月1日,不过许多欧洲豪强已经官宣了多笔重磅引援。德国天空体育盘点了这个夏窗到目前为止最贵的十笔转会,数据
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网