首页 新闻 会员 周边

python实现微信支付后,如何实现页面跳转

0
悬赏园豆:50 [已解决问题] 解决于 2018-11-28 16:17

用 python+django 实现微信支付,用户扫码支付成功后,微信会给后台发送一个xml数据,通知我们支付结果,然后我们需要给微信返回一个收到消息的应答。在收到微信发来的数据和给微信进行回应中间,应该怎样实现页面跳转呢,用websocket吗?

huozf的主页 huozf | 初学一级 | 园豆:154
提问于:2018-11-26 15:03
< >
分享
最佳答案
0

使用websocket问题解决了。只需要在问题图片里的红色框位置调用send()方法,把订单号和要发送的消息传递进去,前端js一旦收到消息,便可以做跳转了。

创建一个空字典,用于保存所有接入的用户地址

clients = {}

@accept_websocket
def websocketLink(request, out_trade_no):
'连接websocket'
# 获取连接
if request.is_websocket:
lock = threading.RLock() # rlock线程锁
try:
lock.acquire() # 抢占资源

        clients[out_trade_no] = request.websocket

        # 监听接收客户端发送的消息 或者 客户端断开连接
        for message in request.websocket:
            if not message:
                break
            else:
                request.websocket.send(message)
    finally:
        # 释放锁
        lock.release()

服务端发送消息

def send(out_trade_no, msg):
try:
if clients[out_trade_no]:
clients[out_trade_no].send(msg.encode('utf-8'))
# 支付结果发送给前端页面后,该连接使命就完成了
del clients[out_trade_no]
except BaseException:
print('发送消息出错了...')

huozf | 初学一级 |园豆:154 | 2018-11-28 16:12

请问websocketLin()和send()怎样建立起联系

鹿鹿鹿 | 园豆:200 (初学一级) | 2019-07-22 16:28
其他回答(1)
0

最笨的方法,前端轮训后台接口,查数据库,看是否支付成功

收获园豆:50
chester·chen | 园豆:507 (小虾三级) | 2018-11-26 16:03

之前Java用的websocket,对python不是很熟,不知道websocket怎么用

支持(0) 反对(0) huozf | 园豆:154 (初学一级) | 2018-11-26 22:51

@huozf: 你好,层主.请问你这边java用websocket是如何实现的,能参考一下你的代码吗?

支持(0) 反对(0) 一只有梦想的码农 | 园豆:200 (初学一级) | 2019-06-08 14:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册