财富通为了支付安全考虑对支付接口 进行升级,下面是财付通的 升级说明,后面我们针对动易商城系统中财付通接口 进行修改:
涉及错误提示“支付失败,您的资金未被扣除,原因可能是:您所下单网站支付接口未升级或存在风险,请您稍后尝试或者与该网站客服联系。”
修改完成后当地测试无效 需要上传服务器测试。
支付风险提示解决办法之支付接口升级
经过几年的发展,财付通成长了,感谢您支持和关注财付通在线支付。
财付通第三方支付接口推出了新的接口,此次对财付通第三方支付接口进行了全面升级。
我们将替换旧的接口,全面切换到新接口。
1、升级的目的
经过长时间的验证和总结,财付通对第三方支付接口进行了升级,
升级后的新接口解决了旧接口的一些支持,兼容问题,增强了安全性,更快速,更稳定。
经过5个月的测试证明了新接口具有优良的性能和安全性,能更好的服务商户。
2、受升级影响的范围
此次升级受影响的商户为:在2010年9月前使用MD5签名接口接入的商户。
只有的支付接口地址为:https://www.tenpay.com/cgi-bin/v1.0/pay_gate.cgi
3、接口切换时间
此次升级时间为2个月,希望您能在2个月时间内完成接口切换工作,2个月后我们将提取未切换的商户,进行邮件通知处理。
我们切换的具体时间为:2010-10-15到2010-12-15
4、如何切换
接口地址与原来一致,更新重点在支付参数的变更上,如果您已经切换到了新的接口,此次切换将不会影响到您。
此次升级我们最大程度保证了对商户的影响,但是因为不可以避免的,需要商户做一些改动。
具体操作如下:
如果您是使用的各网店提供商的网店系统,我们建议您和您的提供商联系,提供商具有很强的技术基础,能有效保证接口切换的安全过渡。
如果您找不到相关提供商,但是您又不具备技术基础,那么您可以和我们取得联系,我们会竭诚帮助您安全的完成切换,我们的联系方式是:QQ 88881535。
如果您具有一定的技术基础,那您可以根据5)操作步骤进行操作。
5、操作步骤
a、首先,找到您的系统用于支付的文件,备份这些文件。这一步非常重要。
b、在支付文件中,查找与财付通支付相关的代码,增加spbill_create_ip参数,
此参数的功能是进行必要的诈骗等风险防范,保障您的交易安全和业务安全,
此参数的具体解释为:
用户IP(非商户服务器IP),为了防止欺诈,支付时财付通会校验此IP
您可以使用Dreamweaver ,Microsoft Visual Web Developer等各种工具,也可以直接用记事本或写字板打开。
下面给出部分代码的示例:
php语言:
$spbill_create_ip = $_SERVER[’REMOTE_ADDR’];
asp语言:
spbill_create_ip= Request.ServerVariables(”REMOTE_ADDR”)
C#语言:
public static string getRealIp()
{
string UserIP;
if (HttpContext.Current.Request.ServerVariables["HTTP_VIA"]!=null) //得到穿过代理服务器的ip地址
{
UserIP = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else
{
UserIP = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString();
}
return UserIP;
}
spbill_create_ip=getRealIp();
JAVA语言:
spbill_create_ip=request.getRemoteAddr();
c、增加参数后,需要进行签名规则修改,需要将新增的参数加入MD5签名源串,具体签名规则为:
sign=md5(cmdno=1&date=20051219&bargainor_id=1000000301&transaction_id
=1000000301200512190000012138&sp_billno=1111&total_fee=1300&fee_type=
1&return_url=http://www.xxx.com/tenpay1.aspx&attach=1&spbill_create_ip=
219.133.62.73&key=1000000301)
以上拼凑值不要有空格!
使用标准MD5算法对该字符串进行加密,即为我们所需的订单MD5 校验码,将其写入sign字段即可。
解决办法:修改文件“PayOnline.asp”
Case 13 '腾讯财付通
'腾讯升级端口之后加入了验证客户IP。所以我们要在MD5变量里加入客户IP。然后在post提交的变量里加上spbill_create_ip。腾讯会验证你的MD5签名与变量生成的签名是否一样。
Dim transaction_id,spbill_create_ip '定义客户端IP变量
spbill_create_ip=Request.ServerVariables("REMOTE_ADDR")'取客服IP给IP变量赋值
transaction_id = v_mid & v_ymd & Right(v_oid, 10)
PayGateUrl = "https://www.tenpay.com/cgi-bin/v1.0/pay_gate.cgi"
md5string = UCase(MD5("cmdno=1&date=" & v_ymd & "&bargainor_id=" & v_mid & "&transaction_id=" & transaction_id & "&sp_billno=" & v_oid & "&total_fee=" & v_amount * 100 & "&fee_type=1&return_url=" & v_url &"&attach=my_magic_string&spbill_create_ip=" & Request.ServerVariables("REMOTE_ADDR") &"&key=" & MD5Key, 32))
'修改MD5签名
strHiddenField = strHiddenField & "" '业务代码,1表示支付
strHiddenField = strHiddenField & "" '商户日期
strHiddenField = strHiddenField & "" '银行类型:财付通,0
strHiddenField = strHiddenField & "" '交易的商品名称
strHiddenField = strHiddenField & "" '用户(买方)的财付通帐户,可以为空
strHiddenField = strHiddenField & "" '商家的商户号
strHiddenField = strHiddenField & "" '交易号(订单号)
strHiddenField = strHiddenField & "" '商户系统内部的定单号
strHiddenField = strHiddenField & "" '总金额,以分为单位
strHiddenField = strHiddenField & "" '现金支付币种,1人民币
strHiddenField = strHiddenField & "" '接收财付通返回结果的URL
strHiddenField = strHiddenField & "" '商家数据包,原样返回
strHiddenField = strHiddenField & "" '客户IP
strHiddenField = strHiddenField & "" 'MD5签名
修改完成后当地测试无效 需要上传服务器测试。