起因
大家都知道我有个 Python Flask构建微信小程序订餐系统 课程。这个课程主要是讲解 小程序在线商城的。但是有很多学生小程序的账号是没有支付权限的,那么如何完成整个闭环课程的学习咧?接下来我来给大家讲解整个过程。
实现过程
原理其实很简单,就是模拟支付完成跳过支付过程。这里我用两种方案给大家实现。
如下图,由于没有支付权限 就会导致 支付回调 没有。那么我们就得做一件事情:模拟支付回调
等于就是自己做一个入口 可以调用支付回调的业务逻辑就行了 也就是C
方案一:web模拟回调
废话不说,直接上代码
'''
模拟回调方法
其实所有回调基本都是校验合法性 然后找到订单id,所以我们模拟就是直接传递 订单id
访问url(可以使用浏览器直接访问) : api/order/callback2?id=xxxx
xxx 就是你想把某个订单设置为成功的订单id值
'''
@route_api.route( "/order/callback2" )
def orderCallback2():
req = request.values
id = int(req['id']) if 'id' in req else 0
if not id:
return "fail"
target_pay = PayService()
target_pay.orderSuccess(pay_order_id= id , params={ "pay_sn": "" } )
return "success"
方案二:Job 模拟回调
废话不说,直接上代码
# -*- coding: utf-8 -*-
from common.libs.pay.PayService import PayService
from application import app
'''
job模拟回调方法 ,新建jobs/tasks/pay/callback.py
其实所有回调基本都是校验合法性 然后找到订单id,所以我们模拟就是直接传递 订单id
python manager.py runjob -m pay/callback -p 1
'''
class JobTask():
def __init__(self):
pass
def run(self,params):
id = params['param'][0] if params['param'] and len(params['param']) else 0
if not id:
app.logger.info(" fail ")
return
target_pay = PayService()
target_pay.orderSuccess(pay_order_id=id, params={"pay_sn": ""})
app.logger.info("it's over~~")
源代码提供
课程官方已经上传对应的源码补丁包 : Job源码传送门、web源码传送门
不错
回复 @ apanly: 非常不错