使用团购功能时的问题

2016-07-07 15:26 来源:www.chinab4c.com 作者:ecshop专家



我在使用Ecshop2.7.1的团购功能时,遇到如下问题

购买团购产品,使用支付宝支付保证金时,完全没有问题。

当在后台结束团购活动后,再支付团购活动的尾款,却提示“支付失败”

详细分析如下:

团购活动支付宝支付分析:
1、支付保证金时

在ecs_order_info中新增了订单信息,该表中order_statusshipping_statuspay_status 字段值均为0

同时在ecs_pay_log中增加了一条支付记录,其内容如下:
log_id:自增ID
order_id:刚刚增加的ecs_order_info表中的订单ID
order_amount:本次应支付的费用
order_type:支付类型,0订单支付,1会员预付款支付
is_paid:是否已付



本例中ecs_pay_log具体记录如下:
log_idorder_idorder_amountorder_typeis_paid
4744 0.0100

而此时构造的支付宝的按钮代码如下:
<input type="button" onclick="window.open('https://www.alipay.com/cooperate/gateway.do?_input_charset=gbk&agent=支付宝ID&logistics_fee=0&logistics_payment=BUYER_PAY_AFTER_RECEIVE&logistics_type=EXPRESS&notify_url=http%3A%2F%2F我的网址%2Frespond.php%3Fcode%3Dalipay&out_trade_no=201006033841748&partner=2088101691645139&payment_type=1&price=0.01&quantity=1&return_url=http%3A%2F%2F我的网址%2Frespond.php%3Fcode%3Dalipay&seller_email=maixiduo%40yahoo.cn&service=trade_create_by_buyer&subject=2010060338417&sign=f12d4dea518f00419148d20cc5d6d5fc&sign_type=MD5')" value="立即使用支付宝支付" />

注意上述按钮中的out_trade_no=201006033841748参数和subject=2010060338417
out_trade_no比subject多两位数字,而这两位数字刚好是ecs_pay_log中刚增加的记录的ID


2、我们支付一下,支付成功。我们再看支付宝返回网站的链接地址中的参数:
http://我的网址/respond.php?code=alipay&buyer_email=wjq%40vip.inhe.net&buyer_id=2088002009874594&exterface=trade_create_by_buyer&is_success=T&notify_id=RqPnCoPT3K9%252Fvwbh3I%252BLUI58AtoYTZuFxjJ1ZBfpR4IPrDS%252F2rcoJnWX5Xf%252Fsu3ZAKsZ&notify_time=2010-06-03+09%3A50%3A45&notify_type=trade_status_sync&out_trade_no=201006033841748&payment_type=1&seller_email=maixiduo%40yahoo.cn&seller_id=2088101691645139&subject=2010060338417&total_fee=0.01&trade_no=2010060331784497&trade_status=TRADE_FINISHED&sign=f0fc569540dc2fe5a54d64826e3f3fe4&sign_type=MD5

同样注意上述链接中的out_trade_no=201006033841748参数和subject=2010060338417

与步骤1是一致的。

3、我们再看ecs_pay_log的和那条记录:

log_idorder_idorder_amountorder_typeis_paid
4744 0.010 1

is_paid 字段更新为1了,表明已支付。

而ecs_order_info中的order_statusshipping_statuspay_status 字段值更新为1,0,2

此时会员中心显示订单状态:“已确认,已付款,未发货”

4、当管理员在后台结束团购活动时

ecs_order_info中的order_statusshipping_statuspay_status 字段值更新为1,0,0

此时会员中心显示订单状态:“已确认,未付款,未发货”

5、在用户中心查看订单详情,显示“立即使用支付宝支付”按钮。而此时查看该按钮的代码为:

<input type="button" onclick="window.open('https://www.alipay.com/cooperate/gateway.do?_input_charset=gbk&agent=支付宝ID&logistics_fee=0&logistics_payment=BUYER_PAY_AFTER_RECEIVE&logistics_type=EXPRESS&notify_url=http%3A%2F%2F我的网址%2Frespond.php%3Fcode%3Dalipay&out_trade_no=2010060338417&partner=2088101691645139&payment_type=1&price=0.02&quantity=1&return_url=http%3A%2F%2F我的网址%2Frespond.php%3Fcode%3Dalipay&seller_email=maixiduo%40yahoo.cn&service=trade_create_by_buyer&subject=2010060338417&sign=a44a94d89850c469d42a7261fe2f7a77&sign_type=MD5')" value="立即使用支付宝支付" />

注意上述按钮中的out_trade_no=2010060338417参数和subject=2010060338417

out_trade_no与subject是一样的,没有多出两位数字。

这样就造成了团购活动第二次的支付失败。

请问哪位高手能解释一下原因,或者这是不是ecshop的bug

回答:
有没有人知道啊?哪位高人帮一下,或者ecshop官方是否能解释一下。

这个需要有测试地址和ftp,这样会好排查。
因为是分2次付款。其中需要看传的参数和返回的参数