起因

大家都知道我有个 Python Flask构建微信小程序订餐系统  课程。这个课程主要是讲解 小程序在线商城的。但是有很多学生小程序的账号是没有支付权限的,那么如何完成整个闭环课程的学习咧?接下来我来给大家讲解整个过程。


实现过程

原理其实很简单,就是模拟支付完成跳过支付过程。这里我用两种方案给大家实现。


如下图,由于没有支付权限 就会导致 支付回调 没有。那么我们就得做一件事情:模拟支付回调


等于就是自己做一个入口 可以调用支付回调的业务逻辑就行了 也就是C


pay.png

方案一: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源码传送门