支付宝&微信个人收款支付系统解决方案

2023-10-27

原文链接
对于个人收款支付系统,由于没有营业执照,微信、支付宝官方提供的接口无法使用,个人二维码收款又无法完成支付系统后续工作,这个问题一直以来都没有找到一个适合的解决方案。经过不断尝试,最终找到了一个非常好用的第三方工具来解决这个问题——GOGO支付,提供API接口,支付成功可回调接口。

GOGO支付简介

GOGO支付是一款个人收款服务平台,使用前需要注册使用,会给APP_ID和APP_SECRET,默认是体验版,免费使用。后续不需要提供任何个人信息,无需担心任何个人信息泄露问题。缺点就是免费体验版需要自主配置监控端挂机,就是在手机上安装一个APP,这与它的工作原理有关。

工作原理

首先,需要在手机上安装GOGO提供的APP,然后APP会监测支付宝和微信的收款消息,这步需要用户在手机上提供权限。

用户在GOGO后台配置服务端信息,如下图,异步回调会在用户支付成功后由GOGO后端发送POST请求到配置的接口上,需要写代码验证,验证成功返回success即可。同步回调会在用户支付成功的同时直接跳转页面到配置的指定链接。

当用户通过扫码支付正确金额后,会通过监控端APP检测支付宝或微信是否收到相应款数,当确认到收款金额无误GOGO后端会触发回调,回调会发送到用户配置的回调接口上,此时一次支付过程结束。

配置收款码

除了基本的一些系统配置可以自定义调整外,在商户后台必须要配置好收款二维码。至少添加任意金额的微信收款码和支付宝收款码各一张,才能正常使用微信支付和支付宝支付。

  • 支持使用固定金额的收款二维码,无需客户输入金额。
  • 支持多个收款码自动切换轮询,避免收款码失效。

API接入

这里就介绍两个比较重要的API,其余API请查看API文档

创建订单

  • 请求地址:https://www.gogozhifu.com/createOrder
  • 请求方式:POST/GET
  • 参数说明:
参数 参数类型 参数说明
payId 字符串 【必传】商户订单号,可以是时间戳,不可重复
type 整数 【必传】微信支付传入1 支付宝支付传入2
price 字符串 【必传】订单金额,保留两位小数的字符串,例如“1.00”
sign 字符串 【必传】签名,计算方式为将各个参数按顺序拼接后用md5加密, md5(APPID+payId+param+type+price+APPSECRET)
param 字符串 【可选】传输参数,将会原样返回到异步和同步通知接口
isHtml 整数 【可选】传入1则自动跳转到支付页面,否则返回创建结果的json数据
notifyUrl 字符串 【可选】传入则设置该订单的异步通知接口为该参数,不传或传空则使用后台设置的接口
returnUrl 字符串 【可选】传入则设置该订单的同步跳转接口为该参数,不传或传空则使用后台设置的接口
title 字符串 【可选】订单主题、类型,之后可根据该值统计分析数据,最多10个字符
content 字符串 【可选】描述订单具体内容、备注等说明文字
returnParam 整数 【可选】默认是0,传1即可让官方支付页跳转returnUrl带上回调通知的参数
  • 返回数据(示例): {“code”:1,“msg”:“成功”,“data”:{“payId”:“1547129707139”,“orderId”:“201901102220147500”,“payType”:2,“price”:0.1,“reallyPrice”:0.1,“payUrl”:“HTTPS://QR.ALIPAY.COM/FKX03500Z2ZYWA0ELYU123”,“isAuto”:1,“state”:0,“timeOut”:5,“date”:1547130014}}
  • 返回数据说明:
参数 参数类型 参数说明
code 整数 返回代码(1:成功,0:调用失败)
msg 字符串 api调用结果说明
data 数组 api调用结果(如果code为0,则data为null)
  • data数据说明
返回参数 参数类型 参数说明
payId 字符串 商户订单号
orderId 字符串 云端订单号,可用于查询订单是否支付成功
payType 整数 微信支付为1 支付宝支付为2
price 字符串 订单金额,保留两位小数的字符串,例如1.00
reallyPrice 字符串 实际需付金额,保留两位小数的字符串,例如1.00
payUrl 字符串 支付二维码内容
isAuto 整数 1需要手动输入金额 0扫码后自动输入金额
state 整数 订单状态:-1 订单过期 0 等待支付 1 完成 2 支付完成但通知失败
timeOut 整数 订单有效时间(分钟)
date 长整数 订单创建时间时间戳(10位)

Python请求示例:

def getOrderInfo(pay_id, p_type, price, content, notifyUrl=None, returnUrl=None):
	param = 'Quanfita'
	print(str(APP_ID+pay_id+p_type+price+APP_SECRET))
	data = {
		"payId": pay_id,
		"type": p_type,
		"price": price,
		"param": param,
		'isHtml' : 1,
		'sign': hashlib.md5(str(APP_ID+pay_id+param+p_type+price+APP_SECRET).encode(encoding='UTF-8')).hexdigest(),
		'content': content
	}
	if notifyUrl is not None:
		data['notifyUrl'] = notifyUrl
	if returnUrl is not None:
		data['returnUrl'] = returnUrl
	headers = {
		"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36 Edg/95.0.1020.44",
		"content-type": "application/json",
		"charset": "utf-8",
		"App-Id": APP_ID,
		"App-Secret": APP_SECRET
	}
	response = requests.post(BASE_URL,json=data,headers=headers)
	res = response.text
	print(data)
	print(res)
	# 存储数据
	return res

回调通知

  • 传输参数(示例):payId=1547130349673&param=gump994&type=2&price=0.10&reallyPrice=0.10&sign=28943820b95019b6a63598a13c46f93f
  • 参数获取:同时支持GET和POST方式获取回调的参数
  • 传输参数说明:
返回参数 参数类型 参数说明
payId 字符串 商户订单号
param 字符串 创建订单的时候传入的参数
type 整数 支付方式 :微信支付为1 支付宝支付为2
price 字符串 订单金额,保留两位小数的字符串,例如1.00
reallyPrice 字符串 实际支付金额,保留两位小数的字符串,例如1.00
sign 字符串 校验签名,计算方式为对各个参数按顺序拼接后的字符串用md5加密, md5(APPID + payId + param + type + price + reallyPrice + APPSECRET)

Python回调示例:

def checkCallback(pay_id, param, p_type, price, reallyPrice, sign):
	if hashlib.md5(str(APP_ID+pay_id+param+p_type+price+reallyPrice+APP_SECRET).encode(encoding='UTF-8')).hexdigest() == sign:
		return True
	else:
		return False

def CallbackView(request):
	if request.method == 'POST':
		pay_id = request.GET.get('payId')
		param = request.GET.get('param')
		p_type = request.GET.get('type')
		price = request.GET.get('price')
		reallyPrice = request.GET.get('reallyPrice')
		sign = request.GET.get('sign')
		if checkCallback(pay_id, param, p_type, price, reallyPrice, sign):
			return HttpResponse("success")
		else:
			HttpResponse("Failed", 403)
	return HttpResponse("Failed", 403)

总结

目前,大多数个人收款解决方案都是使用这类监听端+服务端的方式来运行的,局限性也很大,期待将来能够找到更好的方案。

原文链接:https://quanfita.cn/article/gogo_pay/
个人博客:https://quanfita.cn

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

支付宝&微信个人收款支付系统解决方案 的相关文章

  • numba.prange 性能不佳

    我试图整理一个简单的例子来说明使用的好处numba prange对于我自己和一些同事来说 但我无法获得像样的加速 我编写了一个简单的一维扩散求解器 它本质上是在一个长数组上循环 组合元素i 1 i and i 1 并将结果写入element
  • 我是否必须覆盖子类中的所有数学运算符?

    我想在 Python 3 7 程序中创建一个简单的 Point2d 类 仅实现一些功能 我在一个 SO 答案中看到 我现在找不到 创建 Point 类的一种方法是重写complex所以我写了这个 import math class Poin
  • 使用输入按钮处理网站上的分页

    试图使用硒抓取这个网站 我的代码可以工作 但目前它只抓取第一页 该页面使用输入按钮作为浏览页面的一种方式 因此我想逐个单击每个按钮 但它不起作用 有没有人有任何其他方法来处理此类分页的导航 import requests from sele
  • 特定代码行的类似装饰器的语法

    链接主题 但不重复 装饰器对代码的特定行而不是整个方法进行计时 https stackoverflow com questions 30433910 decorator to time specific lines of the code
  • XGBoost 产生预测结果和概率

    我可能正在文档中查看它 但我想知道 XGBoost 是否有办法生成结果的预测和概率 就我而言 我正在尝试预测多类分类器 如果我能返回Medium 88 那就太好了 分类器 中 预测概率 88 参数 params max depth 3 ob
  • UnicodeDecodeError:“charmap”编解码器|安装 pip python-stdnum==1.8 时出错

    我对编程还很陌生 所以请耐心等待 当我为正在使用的模块安装一些必需的软件包时 我无法安装python stdnum 1 8 我收到以下错误消息 File C Users 59996 AppData Local Programs Python
  • Python daysBetweenDate

    我想我可能有一个无限循环 因为每当我运行代码时 我都会收到一条错误消息 它说 程序因使用 13 CPU 秒而关闭 整个代码 应该以日期作为输入并输出第二天 此代码假设所有月份都是 30 天 除了daysBetweenDates功能正常 其他
  • 在 Linux 上创建线程与进程的开销

    我试图回答在 python 中创建线程与进程有多少开销的问题 我修改了类似问题的代码 该问题基本上运行一个带有两个线程的函数 然后运行带有两个进程的相同函数并报告时间 import time sys NUM RANGE 100000000
  • 如何将字符串列表转换为正确的 Python 类型?

    给定一个 python 字符串列表 如何自动将它们转换为正确的类型 意思是 如果我有 hello 3 3 64 1 我希望将其转换为列表 hello 3 3 64 1 其中第一个元素是字符串 第二个元素是 int 第三个元素是 float
  • python-click:添加修改其他参数行为的选项

    这个问题是关于click http click pocoo org 5 包裹 Click 是一个用于创建漂亮命令行的 Python 包 使用尽可能少的代码以可组合的方式进行接口 它是 命令行界面创建工具包 它具有高度可配置性 但带有开箱即用
  • NoneType 类型的对象没有 len

    def medianeven L while len L gt 2 L L 1 len L 1 return average L def medianodd L while len L gt 1 L L 1 len L 1 return L
  • f.read 为空

    我在解释器中完成这一切 loc1 council council1 file1 open loc1 r 此时我可以执行 file1 read 并将文件的内容作为字符串打印到标准输出 但如果我添加这个 string1 file1 read 字
  • 如何根据python中的文件名检索每个文件的datemodtime?

    我当前的流程涉及循环遍历源目录并将每个文件的名称添加到 python 中的数据帧中 我也想获取每个文件的修改日期 import datetime import os import pandas as pd set src directory
  • 使用 pywin32com 进行 opc 的内存泄漏

    我很难弄清楚如何解决内存泄漏问题 我认为这可能是 pywin32 的问题 但我不完全确定 我用于读取 写入单个项目的代码似乎工作得很好 但是当使用组函数时 它会慢慢泄漏内存 我怀疑这是来自必须在 server handles 中传递的基于
  • 使用 ABCMeta 和 EnumMeta 的抽象枚举类[重复]

    这个问题在这里已经有答案了 简单的例子 目标是通过从两者派生的元类创建一个抽象枚举类abc ABCMeta and enum EnumMeta 例如 import abc import enum class ABCEnumMeta abc
  • 在此异步设置中,我在哪里捕获 KeyboardInterrupt 异常

    我正在开发一个使用ccxt异步库 它要求通过显式调用该类的资源来释放某个类使用的所有资源 close 协程 我想退出程序ctrl c并等待异常中的关闭协程 然而 它永远不会被等待 该应用程序由模块组成harvesters strategie
  • 使 ArrayField 的 base_field 对于 Django 中的表来说是唯一的

    Goal 下面应该提出一个ValidationError gt gt gt m1 MyModel names name1 gt gt gt m2 MyModel names name1 name2 gt gt gt m1 save gt g
  • 为什么 `Pool.map()` 多处理中的内存消耗急剧增加?

    我正在对 pandas 数据帧进行多重处理 方法是将其拆分为多个数据帧 这些数据帧存储为列表 并且 使用Pool map 我将数据帧传递给定义的函数 我的输入文件约为 300 mb 因此小数据帧大约为 75 mb 但是 当多处理运行时 内存
  • 在 django 视图中执行阻塞请求

    在我的 django 应用程序的一个视图中 我需要执行相对较长的网络 IO 操作 问题是其他请求必须等待该请求完成 即使它们与该请求无关 我做了一些研究并偶然发现了 Celery 但据我了解 它用于执行独立于请求的后台任务 所以我不能使用任
  • 选择 matplotlib xticks 频率

    我正在用字符串作为 x 标签绘制数据 我想控制标签频率 以免文本使轴过载 在下面的示例中 我只想每 3 个刻度看到一个标签 a d g j 我可以做到这一点的一种方法是每 n 个元素用 2 个空字符串替换 my xticks 元素 但我确信

随机推荐

  • C++ 检测内存泄露工具 -- Windows平台

    平台 Windows7 64bit 编译器G mingw 工具 Dr Memory 项目主页 https code google com p drmemory 可能要FQ 可能会很慢 所以 可以直接按照下面官方主页给出的链接下载 我也放了一
  • 人工智能应用实例:图片降噪

    人工智能应用实例 图片降噪 场景设置 对白色背景 黑色前景的黑白图片进行降噪处理 可以假定背景部分多于前景 图1 从左往右 原图 噪声图 降噪图 降噪模型 我们可以对图片建立这样一个两层的二维模型 底层表示原图 顶层表示任意的噪声图 xi为
  • Power BI 数据模型设计及搭建——星型模型&雪花模型

    前言 之前的笔记提到了 Power BI 数据模型的核心概念 本文继续深入讨论数据模型的设计架构 同时介绍两种常用的数据模型 星型模型和雪花模型 BI 的数据模型和数仓模型有什么不同 数据仓库和Power BI中使用的数据架构模型有一些相似
  • 创建SpringBoot项目时修改Server URL(下载路径)

    使用spring initializr创建Springboot项目时 IDEA默认的Server URL为 https start spring io 使用该下载路径缺点 1 从中央仓库进行下载 下载速度慢 2 当网络不稳定时 或网络访问限
  • 《动手学深度学习 Pytorch版》 4.6 暂退法

    import torch from torch import nn from d2l import torch as d2l 4 6 1 重新审视过拟合 整节理论 详见书本 4 6 2 扰动的稳健性 整节理论 详见书本 4 6 3 实践中的
  • js去掉小数点后面多余的0

    用parseFloat 如 var a 23 8000 alert parseFloat a 结果 23 8 当然这个也有可能有想不到的结果 document write parseFloat 12dream3456 789 documen
  • 4、编写程序,根据用户输入的数字转换成相应的中文的大写数字。例如,1.23转换为“壹点贰叁”。

    Python 4 编写程序 根据用户输入的数字转换成相应的中文的大写数字 例如 1 23转换为 壹点贰叁 问题遇到的现象和发生背景 输入含有0就不会输出 问题相关代码 import jieba ChineseNum 零 壹 贰 叁 肆 伍
  • 读书:滑铁卢

    又到4月23日国际读书日 又是一年轮回 有些老朋友可能知道 TC研修实验室有一条不成文的老传统 每逢此时 都会按书年度进行读书总结 至今 已是第4个年头 只不过 是遭遇 读书滑铁卢 的一年 当我到豆瓣查看这一年的读书记录时 我震惊了 纳尼
  • 模拟CMOS集成电路设计中的电流基准源及用Cadence Virtuoso IC617设计并仿真有关电路

    前言 本文为我自己的学习笔记 属于Cadence Virtuoso系列的进阶部分 采用的软件版本是Cadence Virtuoso IC617 其他文章请点击上方 看我制作的Cadence Virtuoso专栏内容 在前面的文章中 记录了电
  • sql_model

    关于sql mode sql mode是MySQL数据库中的一个环境变量 定义了mySQL应该支持的SQL语法 数据校验等可以通过select sql mode 查看当前数据库使用的sql mode 查看当前数据库的sql mode sel
  • 汉字统计

    题目 统计给定文本文件中汉字的个数 输入格式 输入文件首先包含一个整数n 表示测试实例的个数 然后是n段文本 输出格式 对于每一段文本 输出其中的汉字的个数 每个测试实例的输出占一行 Hint 从汉字机内码的特点考虑 数据范围 无 样例输入
  • Js 逆向:微博登录

    1 先分析参数 su sp是必要的 其中su是加密后的账号 很简单就是个bs64 不再说了 2 直接搜参数 这个时候要搜代表性的 特殊的 例如pwencode 很好只有一个 两种加密 一个是RSA 一个是sha 这里判断用的是RSA 3 直
  • VUE的认识及基础语法

    VUE的认识及基础语法 我们先来了解一下什么是VUE 什么是渐进式 库 插件和框架的区别 vue从而出现了一种开发模式那就是mv 插值表达式的使用 指令 关于属性 循环 v model 自定义指令 过滤器 修饰符 v on 指令常用修饰符
  • 光线追踪(ray tracing)介绍与细节推导

    背景 最近因为找到关于光线追踪相关不错的教程 所以边学习边做记录并希望将相关资料进行分享 光线追踪作为计算机图形学中一种可以获得良好的效果的渲染算法 有着非常广泛的应用 历史背景相关的介绍可参考百度百科或者维基百科 本文中的参考资料来自于P
  • 【爬虫】JS逆向解决反爬问题系列5—sign破解

    欢迎来到我的博客 作者 秋无之地 简介 CSDN爬虫 后端 大数据领域创作者 目前从事python爬虫 后端和大数据等相关工作 主要擅长领域有 爬虫 后端 大数据开发 数据分析等 欢迎小伙伴们点赞 收藏 留言 本次博客内容将讲解关于sign
  • COM基础

    曾经看过潘老师的 lt
  • GPT2-Chinese:中文的GPT2训练代码

    推荐一个中文的GPT2项目 Chinese version of GPT2 training code using BERT tokenizer 作者提供了一份中文的GPT2训练代码 使用BERT的Tokenizer 可以写诗 新闻 小说
  • 液位系统c语言程序,超声波自动测量物体液位系统的设计

    超声波自动测量物体液位系统的设计 任务书 毕业论文15000字 摘要 本系统以STC89C52单片机为核心 通过硬件电路连接和软件程序的编写实现通用型超声波自动测量物体液位系统的设计 其主要原理是由单片机控制超声波发射电路发射超声波 超声波
  • win10手动添加程序到右键菜单/右键以pycharm project方式打开文件夹

    这次主要原因是在安装pycharm时 没选择将pycharm加入右键菜单 以至于无法选定文件夹作为pycharm项目打开 每次都需要打开pycharm 加载一个自己不需要的项目 再从pycharm里打开自己想要的 就去查了一下在win10里
  • 支付宝&微信个人收款支付系统解决方案

    原文链接 对于个人收款支付系统 由于没有营业执照 微信 支付宝官方提供的接口无法使用 个人二维码收款又无法完成支付系统后续工作 这个问题一直以来都没有找到一个适合的解决方案 经过不断尝试 最终找到了一个非常好用的第三方工具来解决这个问题 G