[支付宝接口]支付成功后,写入数据库操作在哪里好?

wzwen 2010-07-07 09:07:33
会员充值,支付成功后,应该将充值的金额写入到会员的账户余额中去

下载了支付宝接口程序,文档上说是要写在notify_url.php文件中,是这样吗?

写入数据库操作是放在下面的这段{}中吗?
	else if($_POST['trade_status'] == 'TRADE_FINISHED') {    //交易状态:交易成功结束
//放入订单交易完成后的数据库更新程序代码,请务必保证echo出来的信息只有success
echo "success";

//log_result("verify_success");
}

或者大家是怎么做的呢?有例子发个最好了
...全文
327 点赞 收藏 13
写回复
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南昆虫 2010-07-08
就是这里
回复
Dleno 2010-07-08
最好按照文档的流程来,那都是验证过很多次才使用这样的流程的。
给定单加个状态,入库时先检查状态是否是处理过的,是处理的就停止程序并提示或什么的。
大多数的充值接口都会有延迟,即使有掉单的情况,系统都会自动不单,这个无须担心。
好象是易宝还是快钱在充值成功后就可以直接以浏览器的方式返回,只要用户不关闭浏览器就可以时时反馈结果给用户。多半是易宝,记不太清楚了。
回复
CunningBoy 2010-07-08
减少延迟只能在数据库操作优化上考虑。

另外,如果防止用户在未入库前刷新的话,可以在写入操作前给这个用户加锁,未解锁前,用户刷新就给出提示。
回复
wzwen 2010-07-08
[Quote=引用 9 楼 dingsongtao 的回复:]
你应该在里面再加上你自己的验证,那样才更安全。

会有延迟的情况。
[/Quote]

嗯,验证是必须的,

尽量减少延迟,或者不延迟。

其实最主要的是,入库时只要不重复入库就行了,不然用户充值100,结果充进去200或者300,那我亏大了
回复
wzwen 2010-07-08
[Quote=引用 8 楼 foolbirdflyfirst 的回复:]
引用 7 楼 wzwen 的回复:

那我还不如直接把写入数据库操作直接放在返回给用户看的那个php页面里呢

这样用户返回好,即时看到余额增加了。

不过这样做的缺点是如果用户充值过程中,突然关掉浏览器,就导致没有写入数据库。就会有掉单的情况发生。

我感觉这样的缺点发生的概率应该很小吧,一般谁充值时会突然关掉浏览器呢?

再说,他关了浏览,钱实际上到我的支付宝账号里,但却没……
[/Quote]

这个是有的,因为我看到别的站的确是这样做的。

优点是充值返回即时看到金额成功了,缺点是万一掉单,其实影响不大,客户联系我,我会在支付宝后台查询,和网站后台对比下,确实没有的话,人工添加上。

影响不大吧。而且概率很小。

主要是考虑到怎样让用户体验更佳。

因为我发现有个站充值后有延迟的情况,结果导致很多用户不满,延迟几分钟觉得受不了了。


有搞过支付宝接口的都出来聊聊呀。
回复
Dleno 2010-07-08
你应该在里面再加上你自己的验证,那样才更安全。

会有延迟的情况。
回复
foolbirdflyfirst 2010-07-08
[Quote=引用 7 楼 wzwen 的回复:]

那我还不如直接把写入数据库操作直接放在返回给用户看的那个php页面里呢

这样用户返回好,即时看到余额增加了。

不过这样做的缺点是如果用户充值过程中,突然关掉浏览器,就导致没有写入数据库。就会有掉单的情况发生。

我感觉这样的缺点发生的概率应该很小吧,一般谁充值时会突然关掉浏览器呢?

再说,他关了浏览,钱实际上到我的支付宝账号里,但却没有入库,会主动联系我的,对吧?
[/Quote]
还是得在你的notify_url.php入库,虽然有可能有延迟,但是安全性高,你就通知用户,有可能会出现延迟,几分钟后再check下好了。你如果在支付界面按了ok按钮post返回时入库,如果用户真的支付成功后关了浏览器(停电,系统突然崩溃,不要说没可能。。),那可是涉及到钱啊,这个后果只有你这边来承担了,人家支付接口写得明明白白的。
回复
wzwen 2010-07-08
那我还不如直接把写入数据库操作直接放在返回给用户看的那个php页面里呢

这样用户返回好,即时看到余额增加了。

不过这样做的缺点是如果用户充值过程中,突然关掉浏览器,就导致没有写入数据库。就会有掉单的情况发生。

我感觉这样的缺点发生的概率应该很小吧,一般谁充值时会突然关掉浏览器呢?

再说,他关了浏览,钱实际上到我的支付宝账号里,但却没有入库,会主动联系我的,对吧?
回复
CunningBoy 2010-07-08
有可能延时,但是应该不影响一般使用吧。
提醒用户过一会儿再刷新。
回复
foolbirdflyfirst 2010-07-08
是会有延迟的情况发生的,支付平台支付成功后会从它的服务器模拟一个POST请求到你站点的notify_url.php,这个http发送过程当然是会有延迟的情况发生的。
回复
wzwen 2010-07-08
写入数据库操作的代码放在这里,会延时吗?

比如会员充值成功后,立即返回到会员中心,结果发现余额并没有增加
回复
CunningBoy 2010-07-07
应该就是在这里加
回复
thinkinginAOCP 2010-07-07
确认支付成功的时候~
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告