热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python微信开发入门篇JSSDK含微信支付(二)

本节完成微信jssdk微信支付调用,项目基础部分请参照入门篇第一章:https:www.cnblogs.comwangcongxingp11546780.html1.微信服务号设置

本节完成微信js sdk + 微信支付调用,项目基础部分请参照入门篇第一章:https://www.cnblogs.com/wangcongxing/p/11546780.html


  1.微信服务号设置

     登录服务号后台设置如下:

   1.登录地址:https://mp.weixin.qq.com/

   2.设置-->公众号设置-->功能设置

 

    


  2.微信商户后台设置

   登录微信支付平台设置如下:

   1.登录地址(因为需要安装exe插件, 设置浏览为兼容模式  建议使用QQ浏览器):https://pay.weixin.qq.com  

    

   2.账户中心-->账户设置-->API安全

    

    

   3.产品中心-->开发配置  设置支付授权目录

    

    

    3.产品中心-->APPID授权管理 

    


 

 

支付效果:


  4.案例源码

   案例目录结构如下

    

    源码部分

路由源码 urls.py

from django.contrib import admin
from django.urls import path
from app import viewsurlpatterns = [path('admin/', admin.site.urls),# 微信认证文件建议使用nginx配置path('MP_verify_b1reLtO1xRzEjqxJ.txt', views.wechatauth),# 微信登录页面userinfopath('userinfo', views.userinfo),# 微信JS SDK 接口调用path('wxjssdk/', views.wxjssdk),path('get_signature', views.jsapi_signature),path('log', views.log),
]

视图源码  views.py

from wechatpy.oauth import WeChatOAuth
from django.shortcuts import render, redirect
from django.http import JsonResponse, HttpResponse, HttpResponseRedirect
import timefrom django.conf import settings
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from django.shortcuts import render
import uuid
from wechatpy import WeChatClient
import os
import json
from wechatpy import WeChatPay
from wechatpy.pay import dict_to_xml# Create your views here.# 公众号id
AppID = "AppID "
# 公众号AppSecret
AppSecret = "AppSecret"# 商户id
MCH_ID = '商户号'
# 商户API秘钥
API_KEY = 'API KET'
# 接收微信支付异步通知回调地址
notify_url = "http://i157422s94.iok.la/wxjssdk/"# 微信认证文件,建议通过nginx配置
def wechatauth(request):return HttpResponse("b1reLtO1xRzEjqxJ")# 定义授权装饰器def getWeChatOAuth(redirect_url):return WeChatOAuth(AppID, AppSecret, redirect_url, 'snsapi_userinfo')def oauth(method):def warpper(request):if request.session.get('user_info', None) is None:code = request.GET.get('code', None)wechat_oauth = getWeChatOAuth(request.get_raw_uri())url = wechat_oauth.authorize_urlprint(url)if code:try:wechat_oauth.fetch_access_token(code)user_info = wechat_oauth.get_user_info()print(user_info)except Exception as e:print(str(e))# 这里需要处理请求里包含的 code 无效的情况# abort(403)else:# 建议存储在用户表request.session['user_info'] = user_infoelse:return redirect(url)return method(request)return warpper# 获取用户信息UserInfo@oauth
def userinfo(request):user_info = request.session.get('user_info')return render(request, 'userinfo.html', {"user_info": user_info})# 微信JS SDK调用
@oauth
def wxjssdk(request):user_info = request.session.get('user_info')trade_type = "JSAPI"body = "商品描述"total_fee = "100"notify_url = "http://i157422s94.iok.la/notify_url/"user_id = user_info["openid"]wechatPay = WeChatPay(appid=AppID,api_key=API_KEY,mch_id=MCH_ID,)order = wechatPay.order.create(trade_type, body, total_fee, notify_url, user_id=user_id)wxpay_params = wechatPay.jsapi.get_jsapi_params(order['prepay_id'])print(wxpay_params)return render(request, 'index.html', {"wxpay_params": wxpay_params})@csrf_exempt
def jsapi_signature(request):nOncestr= uuid.uuid4()timestamp = int(time.time())url = request.POST['url']client = WeChatClient(AppID, AppSecret)ticket_respOnse= client.jsapi.get_ticket()signature = client.jsapi.get_jsapi_signature(noncestr,ticket_response['ticket'],timestamp,url)ret_dict = {'noncestr': noncestr,'timestamp': timestamp,'url': url,'signature': signature,}return JsonResponse(ret_dict)def log(request):print('Hello World!')return JsonResponse({'status': 'ok',})

templates-->index.html 源码

 






  • 基础接口
  • 分享接口
  • 图像接口
  • 音频接口
  • 智能接口
  • 设备信息接口
  • 地理位置接口
  • 界面操作接口
  • 微信扫一扫接口
  • 微信小店接口
  • 微信卡券接口
  • 微信支付接口
判断当前客户端是否支持指定JS接口获取“分享到朋友圈”按钮点击状态及自定义分享内容接口获取“分享给朋友”按钮点击状态及自定义分享内容接口获取“分享到QQ”按钮点击状态及自定义分享内容接口获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口获取“分享到QZone”按钮点击状态及自定义分享内容接口拍照或从手机相册中选图接口预览图片接口上传图片接口下载图片接口开始录音接口停止录音接口播放语音接口暂停播放接口停止播放接口上传语音接口下载语音接口识别音频并返回识别结果接口获取网络状态接口使用微信内置地图查看位置接口获取地理位置接口隐藏右上角菜单接口显示右上角菜单接口关闭当前网页窗口接口批量隐藏功能按钮接口批量显示功能按钮接口隐藏所有非基础按钮接口显示所有功能按钮接口调起微信扫一扫接口跳转微信商品页接口批量添加卡券接口调起适用于门店的卡券列表并获取用户选择列表查看微信卡包中的卡券接口发起一个微信支付请求



推荐阅读
  • 玩转直播系列之消息模块演进(3)
    一、背景即时消息(IM)系统是直播系统重要的组成部分,一个稳定的,有容错的,灵活的,支持高并发的消息模块是影响直播系统用户体验的重要因素。IM长连接服务在直播系统有发挥着举足轻重的 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了NetCore WebAPI开发的探索过程,包括新建项目、运行接口获取数据、跨平台部署等。同时还提供了客户端访问代码示例,包括Post函数、服务器post地址、api参数等。详细讲解了部署模式选择、框架依赖和独立部署的区别,以及在Windows和Linux平台上的部署方法。 ... [详细]
  • 常用工具(一)
    1.时间戳在线转换工具(1)链接https:tool.lutimestamp(2)说明可以通过此工具:将时间戳转为具体时间点,也可以将具体时间点转为时间戳(3)效果2.JSON在线 ... [详细]
  • 使用这个技巧要达到的目标:一般来说,模型和控制器你都不会有相同的类名字。让我先创建一个取名为post的model。classPostextendsModel{}现在 ... [详细]
  • 网络安全是一个非常重要的课题,基本上你运行的服务后台越多,你就可能打开更多的安全漏洞.如果配置的恰当的话,Linux本身是非常安全可靠的,假使在Linux系统中有某个安全缺陷,由于Linu ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 图像因存在错误而无法显示 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
  • PHP操作MySql数据库_PHP教程:链接数据库$conn@mysql_connect(localhost,root,88888888)ordie(链接错误);解决中文乱码mys ... [详细]
author-avatar
mobiledu2502912527
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有