为了方便买家们在网站购物时能够在线支付货款并有效提升网站档次,作为购物网站的站长有必要给网站增添在线支付功能,这也是商务网站发展的大势所趋。拥有在线支付功能后,购物网站的买卖双方都会倍感轻松,网站商品成交量也会有所上升。
中国的网络支付体系刚刚开始发展,并不健全,于是出现了处于商家与网络银行之间的第三方支付平台。其中使用范围最广,熟识度最高的便是由阿里巴巴集团创办的支付宝。其致力于为中国电子商务提供“简单、安全、快速”的在线支付解决方案。
除了支付宝外,云网、贝宝、网银等平台也较为常见。
为网站增添在线支付功能,直接与银行联系搭建网站系统,必须符合相关法律法规、部门规章要求,以及安全稳定的网络技术,这对于个人来说是不能实现的。所以要想让网站收钱更快捷,就应该使用现成的在线支付接口。
目前国内在线支付提供商鱼龙混杂,选择一个好的在线支付平台将是购物网站在线支付功能成功的关键,选择在线支付平台时我们应考虑以下几个因素:
1.平台的安全性和稳定性。这是最基本的要求,一般较大的在线支付平台都拥有可靠的安全性和稳定性。
2.支持的银行卡种类。一般要求支持国内各类银行卡,如果网站所售商品有境外市场,还要求平台支持国际卡种。
3.费用和结算周期。费用包括平台提供商收取的年服务费和交易手续费,一般来说年服务费和手续费成反比,即年服务费越高则手续费越低,也有专供个人网站使用的免年费的平台,但手续费都相对较高。结算周期一般有周结、月结、季度结等多种形式,可以根据网站具体情况来选择。
4.平台的增值服务。优秀的在线支付平台一定都会有个性的增值服务。如无论支付成功与否,都可及时反馈信息;网络受骗遭受损失的用户,将获得全部损失费。
5.其他因素。应该了解清楚自己选择的在线支付平台是否支持网上退款、捆绑手机支付、结算金额、是否有交易金额限制等。
“支付宝”是由号称全球最佳B2B公司阿里巴巴公司针对网上交易而特别推出的安全付款服务,其运作的实质是以“支付宝”为信用中介,在买家确认收到商品前,由“支付宝”替买卖双方暂时保管货款的一种增值服务。“支付宝”经过在淘宝网上一年多的使用,已经深得人心。
一、注册“支付宝”
登录“支付宝”注册页面http://www.alipay.com/user/user_register.htm,如果你已经是淘宝会员可以输入淘宝登录名和密码进行“快速注册”;如果不是淘宝会员,则要按部就班填写注册信息、查收邮件、激活账户来完成“支付宝”的注册了。
二、制作支付接口页面
1.完成“支付宝”注册后返回首页,登录“支付宝”账户
2.填写申请信息
(1)进入“商家服务”就可以创建用于在线支付的“支付宝交易按钮”了
2)点击“网站集成支付宝”选择网站所售商品类型,点击“马上签约”
(3)在此以实物类为例,进入实物类销售网站分目录,点击立即签约
4.按照提示输入商品名称、商品价格、邮费承担方式以及邮费,然后再选择一个支付按钮样式,点击“下一步”后确认商品信息。若正确无误,点击“保存”按钮,系统将立即生成用于聊天工具或E-mail、网页及论坛中使用的“支付宝交易链接”和“支付宝交易按钮”代码。
我们找到网页上的“支付宝交易按钮”代码,将代码复制到购物网站上相对应商品页面的适当位置,“支付宝”在线支付接口就算安装完成了。接下来,买家就可以在网站页面上点击“支付宝交易按钮”进行在线支付购物了。
5.申请提现
当有买家通过“支付宝交易按钮”与我们成功完成交易后,“支付宝”就会将货款转入“支付宝账户”(可以在“我的支付宝→账户余额”中查询),接下来,就可以进行申请提现取回我们货款了。
在提现前我们应在“账户信息管理→银行账号管理”中登记用于提现结算的银行账号信息,然后点击“账号提现”,输入提现金额和支付密码,点击“下一步”后即可完成提现,一般在提现后的2~10个工作日就可以收到货款了。
提示:支付宝规定每日最多只能提现三次,超过三次则要改日提现,另外,在“账户明细查询”和“提现申请查询”中还可以查阅到详细的流水账信息和提现申请记录,以便于全面掌握网站收入及提现转账情况。
以Discuz!论坛为例:
首先需要开启电子商务功能,在Discuz!6.0后台进入 “系统设置 - 论坛管理 - 编辑论坛” 选择你要开启电子商务的版块点击 “详情”,找到如图 1 所示项目,勾选 “商品主题” 使得在该栏目发布主题的时候可以显示商品主题发布按钮。
图 1
然后,到对应栏目的发布新帖那里下拉 “新帖” 按钮就可以看到 “商品” 主题发布按钮,如图 2 所示:
图 2
进入到发布商品主题页面,如图 3 所示:
图 3
在填写 “标题”、“主题介绍”、“标签”、“公告” 以及设置阅读权限后,点击 “发布商品主题” 按钮进入添加商品页面,如图 4 所示填写要发布的商品的各项信息。特别值得一提的是,Discuz!6.0支持在同一主题下添加多个商品,并且支持信息分类功能。
图 4
按照上述设置发布后的商品主题如图 5 所示,用户在此页面可以看到卖家的信誉情况、商品详细信息、同时发布的其他商品以及其他网友的评价,点击此页面中的“查看卖家店铺”链接,还可以进入卖家的店铺页面,如图6,在这个页面里包括了卖家的所有商品展示、店铺介绍、卖家的基本信息、在线状态等信息。
图5
图6
用户可以在自己控制面板的“我的商品”处看到自己的电子商务信息,比如“交易统计”(如图7所示)、“我是买家”(如图8所示)、“我是卖家”(如图9所示)、以及“信用评价”(如图10所示)
https://cshall.alipay.com/enterprise/help_detail.htm?help_id=477479
即时到账接口开发流程
a、首先查询合作者身份ID和安全校验码KEY;
b、RSA加密方式:公私钥由商户技术人员生成。
(1)首先生成商户公钥、私钥
(2)其次上传生成的公钥,同时获取支付宝公钥。
1.2、网络环境的要求
1.2.1、支付宝提供的开发环境。
(1).生产环境。用商户自己的账户做测试。
(2).沙箱环境。提供资料沙箱环境网关地址、测试账号、密钥。
1.2.2、商户端开发环境:公网可访问的网络环境。
接口文档获取途径:登陆到支付宝账户产品商店即可下载到对应的接口文档。如所需其他接口文档可以由支付宝技术支持提供。
开发语言:支持C#、PHP、ASP、JAVA四种开发语言。
术语 |
解释 |
CTU |
支付宝风险稽查系统 |
定向支付 |
用户事先指定支付金额的收款方,对应的交易只能将金额转入指定的收款方账户中 |
请求 |
通过HTTP协议把需要传输的数据发送给接收方的过程 |
防钓鱼 |
“网络钓鱼”攻击利用欺骗性的电子邮件和伪造的Web站点来进行诈骗活动,受骗者往往会泄露自己的财务数据,如信用卡号、账户用户名、口令和社保编号等内容,造成损失。防钓鱼用来防止以上情况的发生 |
分润 |
分润是指将交易金额中的一部分转账给其它账户 |
快捷登录 |
快捷登录产品主要有以下功能: 用户在商户的网站上,可以使用支付宝快捷登录,并共享支付宝的收货地址等物流信息给商户; 如果用户在商户网站上使用了支付宝快捷登录,那么在支付宝支付时,不需要再次在支付宝登录 |
敏感词 |
带有敏感政治倾向、暴力倾向、不健康色彩或不文明的词 |
特殊字符 |
用做url转义字符,或在接口参数中用作分割符的特殊字符,包括:#、%、&、+、^、| |
返回 |
支付宝根据得到的数据处理完成后,支付宝将处理完成的结果信息反馈给商户网站 |
类型 |
细则 |
原因 |
安全 |
使用签约账号进行调试,必须保护合作者身份ID与安全校验码key的隐私性。 |
防止接口无法正常使用或防止签约的账号信息被盗用,导致资金受损、被他人恶意利用等。 |
测试完毕后,要把测试账号立刻更换成签约账号。 |
使用测试账号时,手续费按照3%扣除。 |
|
该接口必须使用https请求 |
避免请求参数暴露 |
|
支付宝的通知服务器的出口IP是121.0.26.0/23和110.75.128.0/19,该IP段地址不是商户访问支付宝的地址 |
如果商户网站设置了IP白名单(即IP过滤),需要把支付宝的通知IP地址加入白名单中。这里面提供的是ip段,需要商户自己算出ip。 |
|
商户必须以DNS解析的方式访问支付宝接口,不要设置DNS cache,不要绑定支付宝IP。如果为了商户自身安全必须绑定支付宝IP时,必须向支付宝的技术支持人员备案。 |
支付宝IP地址一旦变更,会导致商户无法请求或访问支付宝,致使商户业务直接不可用 |
类型 |
细则 |
原因 |
|
参数配置 |
必须设置请求参数_input_charset(编码格式),即该参数不能为空,并让该参数加入签名运算。 |
避免接口无法正常使用 |
|
当设置paymethod(默认支付方式)为directPay(余额支付)时,请求参数defaultbank(默认网银)不要设置或不要传递。 |
避免该交易按其他支付方式执行 |
||
只有开通了自定义超时功能,才能使用请求参数it_b_pay(超时时间)。 |
避免接口报错误码SELF_TIMEOUT_NOT_SUPPORT |
||
只有开通了防钓鱼功能且开通了防钓鱼时间戳,才能使用请求参数anti_phishing_key(防钓鱼时间戳)。 |
避免接口无法正常使用 |
||
只有开通了防钓鱼功能且开通了IP地址检查,才能使用请求参数exter_invoke_ip(客户端IP)。 |
避免接口无法正常使用 |
||
只有开通了网银支付时是否做CTU校验,才能使用请求参数need_ctu_check(网银支付时是否做CTU校验)。 |
避免接口无法正常使用 |
||
只有开通了快捷登录,才能使用请求参数token(授权令牌码),且必须设置token。 |
减少用户付款时重复登录支付宝 |
||
请求参数subjet、body的值,以及extend_param、item_orders_info、royalty_parameters的备注表述信息中不要使用敏感词。 |
避免接口无法正常使用 |
||
参数notify_url的设置必须是互联网上能访问到且访问正常的路径地址 |
避免商户网站无法收到支付宝的主动通知 |
||
请求参数return_url的设置不能是http://localhost/这类地址,必须是服务器ip地址或者域名方式。(例如:127.0.0.1) |
避免付款成功后,当前页面停留在支付宝交易完成提醒页面,而不做任何跳转 |
||
请求参数return_url的设置不能是含有“!”这类特殊字符的地址 |
避免付款成功后,当前页面停留在支付宝交易完成提醒页面,而不做任何跳转 |
||
royalty_parameters(分润账号集)、extend_param(公用业务扩展参数)参数中的备注描述信息中不能出现用作字段分割符的“^”、“|”特殊字符。 |
避免出现数据格式错误,导致分润失败。 |
||
当使用了分润功能时,在设置请求参数royalty_parameters(分润账号集)的值时,分润的总金额不能超过付款总金额减去支付宝手续费所余下的金额。 |
避免分润失败,而导致接口无法正常使用。 |
||
当使用了分润功能时,在设置请求参数royalty_parameters(分润账号集)的值时,分润的收款账户必须是有效的收款账号。 |
避免分润失败,而导致接口无法正常使用。 |
||
seller_id(卖家支付宝用户号)、seller_account_name(卖家别名支付宝账号)、seller_email(卖家支付宝账号)不能全部为空,至少有一项不为空。在都不为空的情况下,优先级顺序为:seller_id >seller_account_name >seller_email |
数据完整一致,避免出现卖家信息错误。 |
||
如果设置了买家支付宝账号(如buyer_email等),那么买家支付宝账号不能与卖家支付宝账号相同,即:buyer_emai与seller_email不能相同、buyer_id与seller_id不能相同、buyer_account与seller_account不能相同)。 |
避免报错,如错误码:BUYER_SELLER_EQUAL。 |
||
price(商品单价)、quantity(购买数量)会替换total_fee(交易金额)。即total_fee不能与price、quantity同时存在;存在price、quantity,就不能存在total_fee。 |
防止出现支付金额错误 |
||
在给请求参数defaultbank、paymethod赋值时,需注意区分大小写 |
否则会引起银行直连调用失败 |
||
只有开通了纯网关(即网银直连),且paymethod赋值为bankPay时,才有纯网关的效果。如果没有开通,则paymethod禁止赋值为bankPay。 |
如果没有开通该功能,而又设置了paymethod为bankPay,那么会出现以下两种情况: |
||
只有开通了大额信用卡功能,且 |
如果没开通该功能,即使paymethod赋值为CREDITCARD也无效,甚至会报没有开通该产品的提示错误。 |
||
只有开通了信用支付,且paymethod赋值为creditPay时,才有信用支付的效果。 |
如果没开通该功能,即使paymethod赋值为creditPay也无效,甚至会报没有开通该产品的提示错误。 |
||
只有开通了信用卡分期,且paymethod赋值为CCIP时,才有信用卡分期的效果。 |
如果没开通该功能,即使paymethod赋值为CCIP也无效,甚至会报没有开通该产品的提示错误。 |
||
只有开通了快捷支付前置,且paymethod赋值为motoPay时,才有快捷支付前置的效果。 |
如果没开通该功能,即使paymethod赋值为motoPay也无效,甚至会报没有开通该产品的提示错误。 |
||
只有开通了快捷支付网关,且paymethod赋值为以下3个值之一: |
如果没开通该功能,即使paymethod赋值为对应的值也无效,甚至会报没有开通该产品的提示错误。 |
||
如果是etao接入的商户,那么必须设置请求参数error_notify_url和item_orders_info; 如果不是etao接入商户,item_orders_info不要设置。 |
果没有开通该功能,而又设置了paymethod为bankPay,那么会出现以下两种情况: |
||
传递请求出错时的通知页面路径error_notify_url(需要联系支付宝开通该参数权限) |
方便商户定位接口报错 |
类型 |
细则 |
原因 |
签名 |
请求的所有参数,需要根据参数名=参数值的格式,按首字符字典顺序(ascii值大小)排序,若遇到相同首字符,则判断第二个字符,以此类推,待签名字符串需要以“参数名1=参数值1&参数名2=参数值2&….&参数名N=参数值N”的规则进行拼接。 |
避免接口无法正常使用 |
在对请求的参数做签名时,这些参数必须来源于请求参数列表,并且除去列表中的参数sign、sign_type。 |
避免接口无法正常使用 |
|
在对请求的参数做签名时,对于请求参数列表中那些可空的参数,如果选择使用它们,那么这些参数的参数值必须不能为空或空值。 |
避免接口无法正常使用 |
|
签名时将字符转化成字节流时指定的字符集与_input_charset保持一致;如果传递了_input_charset参数,这个参数也应该包含在待签名数据中。 |
避免接口无法正常使用 |
|
待签名数据应该是参数原始值而不是url encoding之后的值,例如:调用某接口需要对请求参数email进行数字签名,那么待签名数据应该是[email protected],而不是email=test%40msn.com。 |
避免接口无法正常使用 |
类型 |
细则 |
原因 |
返回数据处理 |
设置了请求参数item_orders_info的情况下,建议使用post方式提交请求。 |
避免地址栏中地址数据过长,导致传递的数据丢失。 |
支付宝主动发送通知,当商户接收到通知数据后必须给支付宝返回“success”字符串,不允许返回其他多余字符。 |
如果商户返回给支付宝的信息不是“success”,支付宝最多重复发送8次通知。 |
|
必须保证设置的通知路径互联网上能访问得到,且访问顺畅。 |
避免接收不到支付宝发送的通知 |
|
必须对返回的所有结果数据进行处理 |
以便商户能够了解接口的使用情况,以及进行商户的后续业务操作。 |
|
必须判断发送支付请求以后的业务逻辑处理程序是否有重复执行 |
防止出现商户的业务操作被重复执行,导致出现资金损失,如重复充值、重复付款等。 |
|
如果交易付款完成时发送的交易状态是TRADE_SUCCESS(可对交易做其他操作,如退款、分润等),则当超过签约合同指定的可退款时间段时,支付宝会主动发送TRADE_FINISHED(不能对该交易再做任何操作)交易状态。此时,需要根据商户自身业务情况,来判断是否需对这次的交易完成通知进一步处理。 |
防止出现商户的业务操作被重复执行,导致出现资金损失,如重复充值、重复付款或订单数据错乱等。 |
|
建议每一次支付操作需以日志形式记录到商户网站的日志操作数据库中 |
用来在必要时检查或跟踪业务处理情况 |
类型 |
细则 |
原因 |
通知返回验证 |
如果有设置通知路径及触发通知条件,则必须使用获取到的参数notify_id再次请求支付宝,获取是否是支付宝发送的验证结果。该请求链接是: |
验证是否是支付宝发来的请求 |
在对通知的参数做签名时,这些参数必须来源于支付宝通知回来的参数,并且除去列表中的参数sign、sign_type,根据参数名=参数值的格式,按首字符字典顺序(ascii值大小)排序,若遇到相同首字符,则判断第二个字符,以此类推,待签名字符串需要以“参数名1=参数值1&参数名2=参数值2&….&参数名N=参数值N”的规则进行拼接,得到的签名结果与获取到的参数sign值做比较。 |
验证返回的签名 |
步骤 |
调试内容 |
备注 |
第一步:在本机单独对这个接口进行调试。 |
l 支付 |
仅仅把接口配置好,不要放在商户的网站项目中。 |
第二步:在服务器上单独对这个接口进行调试 |
l 支付 |
本机调试没有问题后,再放入服务器中调试。 |
第三步:接口融合到网站项目中 |
无 |
把调试好的接口与商户网站项目的业务流程进行衔接和融合。 |
第四步:在本机对融合后的网站项目进行调试 |
l 整个业务操作流程 |
在本机调试衔接到网站项目后的接口。 |
第五步:在服务器对融合后的网站项目进行调试 |
l 整个业务操作流程 |
本机调试没有问题后,再放入服务器中调试。 |