你好,开发过程中发现登录用户支付订单成功后发送邮件启用的配置是【订单-游客】的配置

问题咨询 · qwerttyui · 于 5年前 发布 · 1568 次阅读

根据邮件文档重写了邮件服务的配置如下: 下面是我的一些理解顺序 1、订单确认邮件分为游客模式和用户模式, 2、支付成功后通过Yii::$service->payment->alipay->paymentSuccess()对订单进行一系列的处理,包括发邮。 3、通过调用Yii::$service->email->order->sendCreateEmail()发送邮件

登陆身份下单购买,反复测试都是收到的游客模板配置,没有启用重写的登陆用户模板配置,也就是在sendCreateEmail()方法里siGust判断我是游客身份。。。。 我重写check/onepage/submitorder提交订单方法,在这里就开始调用发送邮件的服务,发现是邮件服务启用的是我重写的登陆用户的邮件配置。 排查了很久也没有找到这个跳回fecshop再发送邮件判断是游客的问题的根源所在,还望大佬指点(⊙…⊙)

共收到 6 条回复
Fecmall#25年前 0 个赞

创建订单,发送邮件的代码:https://github.com/fecshop/yii2_fecshop/blob/master/services/Order.php#L681

也就是这个方法:https://github.com/fecshop/yii2_fecshop/blob/master/services/email/Order.php#L34

log打印一下,看看是哪里出现的问题。

3楼 已删除.
qwerttyui#45年前 0 个赞

@Fecshop #2楼 一路打印Yii::$app->user->isGust。在支付过程中,发现在如下方法调用的发送邮件服务(更改订单状态),均是游客身份。

然后支付成功后返回fecshop网站,这里又显示是登陆身份了,但是这里再次调用Yii::$service->payment->alipay->paymentSuccess()方法时,由于之前已经改过订单状态就不发送邮件了。。这个为什么在接收支付宝信息处理的时候,用户身份会变成游客

Fecmall#55年前 0 个赞

你用的fecshop是那个入口? appfront还是appserver?

如果是appserver入口,是官方的vue?还是你们自己开发的前端?

发帖的时候,信息尽量的多写

qwerttyui#65年前 0 个赞

@Fecshop #5楼 appserver入口,使用的官方的vue 登陆身份的订单邮件模板我写在common里

Fecmall#75年前 0 个赞

1.appserver入口,是否登陆的验证,是 request header里面的access-token进行验证的

当用户登陆成功后,appserver api的reponse header会返回access-token,vue端接收到后会存储到local storage,然后每次请求 request header都加入access-token,api接收到通过这个识别登陆身份

因此,我猜测你的reponse header没有加入access-token,导致没有登陆身份

2.代码追踪:

https://github.com/fecshop/yii2_fecshop/blob/master/app/appserver/modules/AppserverTokenController.php#L49

https://github.com/fecshop/yii2_fecshop/blob/master/yii/filters/auth/QueryParamAuth.php#L27

https://github.com/fecshop/yii2_fecshop/blob/master/services/Customer.php#L676

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics