前言
最近给自己开发的市肥宅中心二次元社区 添加了自助充值肥宅币 功能,也就是充值积分的功能。由于网站是个人无备案,所以对接微信支付比较麻烦,于是就找了第三方免签支付平台来开发该功能。
之前一直觉得给网站开发自助充值功能是非常牛的事情,现在终于是实现了,全程无扣钱,直接到账自己的微信账户。你需要做的只要注册一个第三方平台账户,然后下载监控端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)
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"
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()
运行程序,看看效果
点击支付按钮,可以看到程序跳转到了gogo平台的支付页面。
用自己的微信扫描之后,发现跳转到了支付成功页面,可以看到充值成功了!
然后看自己模拟器的微信,也可以看到余额增加了10有木有!
结语
本文章献给那些想要开发自己网站的支付功能的个人站长,或者有类似需求的人。祝大家早日发财,走向人生巅峰!
声明
版权声明:本文为原创文章,版权归 DepressedBoy 所有,转载请联系博主获得授权。 本文地址:https://blog.4nmb.com//archives/175.html 如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。
|