IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 社区折腾日志:基于python搭建个人微信/支付宝免签支付功能 -> 正文阅读

[Python知识库]社区折腾日志:基于python搭建个人微信/支付宝免签支付功能

前言

最近给自己开发的市肥宅中心二次元社区添加了自助充值肥宅币功能,也就是充值积分的功能。由于网站是个人无备案,所以对接微信支付比较麻烦,于是就找了第三方免签支付平台来开发该功能。

之前一直觉得给网站开发自助充值功能是非常牛的事情,现在终于是实现了,全程无扣钱,直接到账自己的微信账户。你需要做的只要注册一个第三方平台账户,然后下载监控端app,到你的安装模拟器上保持运行就行。

下面来讲讲如何开发吧~

前期准备

  • 注册gogo支付平台的账号(官网
  • 下载安卓模拟器(这里我用的是雷神模拟器)

前期准备的相关文章可以看这里,官网已经发布了搭建教程了:教程地址

这里我要说的是用python来搭建这套支付系统,因为我的社区使用python开发的。

开发

这里默认你已经将监控端正常运行在了带有微信的安卓模拟器上,并且添加了收款码。那么就开始吧!

打开pycharm建立一个flask工程。

起始的代码是这样的。

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

封装基本的支付api操作,由于该api会返回支付页面,所以无需编写支付页面,只需要处理一些简单的业务逻辑即可。

import hashlib
import time

import requests
from flask import Flask, request

app = Flask(__name__)

MY_TEST_POINT = 0


def get_app_id():
    return "你的app_id"


def get_app_secret():
    return "你的app_secret"


def str2bytes(data: str):
    try:
        return data.encode("UTF-8")
    except:
        return None


def md5(data):
    bdata = str2bytes(data) if isinstance(data, str) else data
    m = hashlib.md5()
    m.update(bdata)
    return m.hexdigest()


@app.route("/")
def pay():
    return f"当前余额:{MY_TEST_POINT},<a href='/pay_api'>点击支付</a>"


@app.route("/pay_return")
def pay_return():
    global MY_TEST_POINT
    try:
        payId = request.args.get("id", None)

        # 拿到该id可以在数据库中进行相关操作
        # 比如添加积分什么的
        MY_TEST_POINT += 10
        return "支付成功,请返回页面。<a href=\"/pay\">返回页面</a>。"

    except Exception as err:
        print(err)

    return "支付好像出了一点问题,请返回页面。<a href=\"/pay\">返回页面</a>。"


@app.route("/pay_notify")
def pay_notify():
    try:
        app_id = get_app_id()
        app_secret = get_app_secret()

        payId = request.args.get("payId", None)
        param = request.args.get("param", None)
        type = request.args.get("type", None)
        price = request.args.get("price", None)
        reallyPrice = request.args.get("reallyPrice", None)
        sign = request.args.get("sign", None)

        _sign = md5(f"{app_id}{payId}{param}{type}{price}{reallyPrice}{app_secret}")
        if sign != _sign:
            return "error_sign"

        return "success"
    except Exception as e:
        print(e)

    return "error"


@app.route("/pay_api", methods=["POST"])
def pay_api():
    try:
        type = "1"  # 1表示微信支付
        price = 0.18  # 价格

        payId = "test-" + str(int(time.time()))

        app_id = get_app_id()
        app_secret = get_app_secret()

        param = "GOTEST"
        apiUrl = "https://www.gogozhifu.com/shop/api/createOrder"
        notifyUrl = "http://127.0.0.1:5000/pay_notify"
        returnUrl = "http://127.0.0.1:5000/pay_return?id=" + payId

        sign = md5(f"{app_id}{payId}{param}{type}{price}{app_secret}")

        req = requests.post(apiUrl, headers={
            "App-Id": app_id,
            "App-Secret": app_secret
        }, json={
            'payId': payId,
            'param': param,
            'type': type,
            'price': price,
            'sign': sign,
            'notifyUrl': notifyUrl,
            'returnUrl': returnUrl,
            'isHtml': 1,
        })

        return req.text
    except Exception as err:
        print(err)

    return "支付好像出了一点问题,请返回页面。<a href=\"/pay\">返回页面</a>。"


if __name__ == '__main__':
    app.run()

运行程序,看看效果

Dingtalk_20210901152855.jpg

点击支付按钮,可以看到程序跳转到了gogo平台的支付页面。

b2a385d1598b1f777143fa5ee729448c.png

用自己的微信扫描之后,发现跳转到了支付成功页面,可以看到充值成功了!

Dingtalk_20210901153108.jpg

然后看自己模拟器的微信,也可以看到余额增加了10有木有!

结语

本文章献给那些想要开发自己网站的支付功能的个人站长,或者有类似需求的人。祝大家早日发财,走向人生巅峰!

声明

版权声明:本文为原创文章,版权归 DepressedBoy 所有,转载请联系博主获得授权。
本文地址:https://blog.4nmb.com//archives/175.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-02 11:19:16  更:2021-09-02 11:19:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:32:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码