Rails 使用财付通接口后,交易存在较大风险......

zhangsm · 2014年08月07日 · 最后由 zhangsm 回复于 2014年08月12日 · 7312 次阅读

使用 @jasl 的 gem jasl_tenpay

在本地测试的时候是正常的,能够支付并且成功!但是上线之后就这样了。。。

尝试咨询客服,客服回答说是技术问题,提供一个 QQ 号,当我咨询该 QQ 号的时候就没有什么反应。

有朋友遇过这样的问题吗? 或者,类似的应用从本地测试环境到上线的过程中需要注意什么问题吗?


解决方案: 当初申请的时候是 www.aa.com 的,上线测试了 www.aa.net 。在商户的管理后台那里,添加 www.aa.net 即可。

线上域名是否在白名单里?

#1 楼 @Teddy 这个还有白名单的吗?

#2 楼 @zhangsm 财付通的商户后台,账户设置里有的

#3 楼 @Teddy 具体情况是这样的: 当我在页面中单击下一步按钮,会跳到以下 action 处理

def pay
    session[:return_to] = 'http://pay.aaa.net/'
    if session[:user_id]
      redirect_to params[:pay] == 'alipay' ? alipay : tenpay
    else
      redirect_to 'http://account.aaa.net/login.jhtml'
    end
  end

这时候页面跳转后就变成

于是我查看后台,后台生成记录

I, [2014-08-07T17:26:48.222805 #30858]  INFO -- : Started POST "/pay" for 218.65.134.34 at 2014-08-07 17:26:48 +0800
I, [2014-08-07T17:26:48.225966 #30858]  INFO -- : Processing by Pay::PayController#pay as HTML
I, [2014-08-07T17:26:48.226129 #30858]  INFO -- :   Parameters: {"utf8"=>"✓", "authenticity_token"=>"oiuUYA49DNSYpXFuoXg3cv5Acryc4u70Ik0Ivvmabto=", "price"=>{"price"=>"699"}, "vip"=>{"vip"=>"全年VIP"}, "pay"=>"tenpay", "commit"=>"下一步", "subdomain"=>"pay"}
I, [2014-08-07T17:26:48.247716 #30858]  INFO -- : Redirected to https://gw.tenpay.com/gateway/pay.htm?input_charset=UTF-8&partner=1212350101&fee_type=1&out_trade_no=11963651&subject=%E5%85%A8%E5%B9%B4VIP&body=%E5%85%A8%E5%B9%B4VIP&total_fee=69900&spbill_create_ip=218.65.134.34&return_url=http%3A%2F%2Fpay.aaa.net%2Fdone%3Fuid%3D1&notify_url=http%3A%2F%2Fpay.aaa.net%2Ftennotify&sign=7753F61E2DA618E6920197CE7A2ECE7A
I, [2014-08-07T17:26:48.248009 #30858]  INFO -- : Completed 302 Found in 22ms (ActiveRecord: 5.7ms)

我直接点击生成的 URL 就可以进入正常的支付流程。

这种情况是白名单所致吗?

#4 楼 @zhangsm 有可能,跳转请求还带着 referer 信息。

#4 楼 @zhangsm

我这边是这样写的,照着 gem 的例子生成的 url,直接 redirect 是可以的

url = generate_tenpay_url :order_id => @donation_order.id,
                           :subject => "捐款",
                           :body => "我要捐款",
                           :total_fee => fee.to_i,
                           :out_trade_no => @donation_order.trade_no
 return redirect_to url

#5 楼 @Rei 那怎么解决呢?我用status:301 也不行!

#6 楼 @Teddy 我基本也是这样写! 也直接用 redirect_to

https://github.com/jasl/tenpay_demo 这里有例子,我这样用的话是没有问题的,线上系统检验一年了

如果有问题的话,可能是财付通的设置方面

#9 楼 @jasl 谢谢你!在开发阶段大量参考你的 demo 了!很棒~

碰到过,出现较大风险可能是因为你申请的交易是在 www 下申请的,但是你的交易订单是在二级域名或者其他域名里,就会提示较大风险。。。很坑吧,哇哈哈

#6 楼 @Teddy 感谢帮忙,问题已解决!解决方案在帖子中更新了。

#11 楼 @badboy 感谢帮忙,问题已解决!解决方案在帖子中更新了。

#9 楼 @jasl 感谢帮忙,问题已解决!解决方案在帖子中更新了。

#5 楼 @Rei 感谢帮忙,问题已解决!解决方案在帖子中更新了。

#12 楼 @zhangsm 这不就是我一开始说的后台设置添加一下域名吗...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号