接入步骤:
1. 下载官方SDK或Demo
2. 开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台开发者中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。
3. 把demo部署到沙盒环境进行1分钱支付测试
4. demo测试通过后,正式接入业务流程
注意:
1. 支付安全域名的设置,一般只限本级目录,如果是本级目录的子目录,则可能无法正常使用;安全域名URL一般区分大小写(因为支付提供商服务器一般是Linux系统,对大小写敏感)!
2. 配置密匙中的公钥,不一定是RSA生成的公钥,比如支付宝支付接口2.0,就要求把RSA生成的原始公钥(APP_PUBLIC_KEY)提交到开放平台开发者中心的密匙配置中,然后支付宝会生成另一个公钥,叫支付宝公钥(ALIPAY_PUBLIC_KEY)。在应用配置中,公钥字段要填写支付宝公钥(ALIPAY_PUBLIC_KEY),而不是应用公钥(APP_PUBLIC_KEY)。这是支付宝提高安全的一个方法,结果在调试的时候,一直提示签名验证失败,就是因为把应用配置中的公钥填错了。
return_url和notify_url区别:
return_url: 页面返回支付结果,同步返回get请求类型的返回参数。完成支付后,系统会根据商户在手机网站支付API中传入的前台回跳地址return_url自动跳转回商户页面,同时在URL请求中以Query String的形式附带上支付结果参数。(请求类型一般是get)
notify_url: 后台通知支付结果,异步返回post请求类型的通知参数。完成支付后,系统会异步通知地址notify_url,通过POST请求的形式将支付结果作为参数通知到商户系统。(请求类型一般是post)
注意:
1. 由于前台回跳/同步返回(return_url)的不可靠性,前台回跳只能作为商户支付结果页的入口,最终支付结果必须以异步通知或查询接口返回为准,不能依赖前台回跳。
2. 商户系统接收到异步通知(notify_url)以后,必须通过验签(验证通知中的sign参数)来确保支付通知是由支付宝发送的。
3. 接受到异步通知(notify_url)并验签通过后,一定要检查通知内容,包括通知中的app_id, out_trade_no, total_amount是否与请求中的一致,并根据trade_status进行后续业务处理。
订单支付安全
1. 商户系统接收到异步通知(notify_url)以后,必须通过验签(验证通知中的sign参数)来确保支付通知是由支付服务商发送的。
2. 商户系统一定要保证不同次支付out_trade_no不可重复。