微信支付notify.php中的返回值,微擎开发之微信支付payResult获取通知notify和return说明...

在使用微擎作为开发框架进行微信相关的功能开发时,微信支付是经常用到的开发场景。在微信支付成功后会通过site.php的payResult方法获取支付返回信息。

以下是返回信息的内容:

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

Array(

[weid]=>1

[uniacid]=>1

[result]=>success

[type]=>wechat

[from]=>return

[tid]=>120190307100444169206

[uniontid]=>2019030710044600001464806621

[user]=>opMGP1hN3nQzmnwYkGNtAiSrWDCI

[fee]=>0.01

[tag]=>Array(

[acid]=>1

[uid]=>1

[transaction_id]=>4200000280201903076920367458

)

[is_usecard]=>0

[card_type]=>0

[card_fee]=>0.01

[card_id]=>0

)

文档里面给出了范例文档:

PHP

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

//该代码片断在/framework/builtin/recharge/site.php中

publicfunctionpayResult($params){

//一些业务代码

//根据参数params中的result来判断支付是否成功

if($params['result']=='success'&&$params['from']=='notify'){

//此处会处理一些支付成功的业务代码

}

//因为支付完成通知有两种方式 notify,return,notify为后台通知,return为前台通知,需要给用户展示提示信息

//return做为通知是不稳定的,用户很可能直接关闭页面,所以状态变更以notify为准

//如果消息是用户直接返回(非通知),则提示一个付款成功

//如果是JS版的支付此处的跳转则没有意义

if($params['from']=='return'){

if($params['result']=='success'){

message('支付成功!','../../app/'.url('mc/home'),'success');

}else{

message('支付失败!','../../app/'.url('mc/home'),'error');

}

}

}

但是对于其中$params[‘from’]信息通知的来源类型没有说的很详细,我们单就通知print_r($params),获取到的信息,实际看到的都是return。其实,在我看到到return之前系统已经进行过一次后台通知,也是通过payResult方法获取。

下面通过一个方法来验证,我们写了个方法来截取$params[‘from’]。

PHP

1

pdo_insert('aiunv_log',array('info'=>$params['from']));

当我们支付完成的,系统便在后端进行了notify通知。

1367450d92eda7310a05261201b6ac80.png

766f56944144fe36c19d7b22bdbf7678.png

停留在上面的页面,我们去数据库中看记录到了notify的值:

298df37d8a8f40fd06703e64aae7befa.png

当我们点击完成,返回到场景界面时,系统又会推送一个前端通知。这时记录到的便是return了。

f1de121c7ab02eae80c7f1dcb5507ae8.png

这也就是为什么我们如果完成返回看到的都是return的原因,notify为后台通知,return为前台通知,需要给用户展示提示信息,return做为通知是不稳定的,用户很可能直接关闭页面,所以状态变更以notify为准,如果消息是用户直接返回(非通知),则提示一个付款成功,这样的好处就是不用担心用户意外关闭界面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值