PHP支付宝SDK使用,电脑网页支付

使用沙箱测试: https://openhome.alipay.com/platform/appDaily.htm?tab=info
下载支付宝的生成秘钥的工具 https://docs.open.alipay.com/291/105971
生成秘钥,并上传商户应用公钥到沙箱环境
然后参考文档: https://docs.open.alipay.com/270/105899/
下载PHP的SDk: https://docs.open.alipay.com/270/106291/

关于回调

支付成功后,验签同步跳转到提示页面

异步通知,做逻辑处理:

trade_status 交易状态:

  • TRADE_SUCCESS 交易支付成功
    交易支付成功之后,我们可以做一些比如修改订单状态,记录支付时间啊,等等逻辑代码.然后给支付返回一个'success'字符串

程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h)防止掉单;

  • TRADE_FINISHED 交易结束,不可退款

    关于验签

  1. 在通知返回参数列表中,除去sign、sign_type两个参数外,凡是通知返回回来的参数皆是待验签的参数。

  2. 将剩下参数进行url_decode, 然后进行字典排序,组成字符串,得到待签名字符串:

  3. 将签名参数(sign)使用base64解码为字节码串。

  4. 使用RSA的验签方法,通过签名字符串、签名参数(经过base64解码)及支付宝公钥验证签名。

5.需要严格按照如下描述校验通知数据的正确性。

1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,
2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),
3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email),4、验证app_id是否为该商户本身。
上述1、2、3、4有任何一个验证不通过,则表明本次通知是异常通知,务必忽略。在上述验证通过后商户必须根据支付宝不同类型的业务通知,正确的进行不同的业务处理,并且过滤重复的通知结果数据。在支付宝的业务通知中,只有交易通知状态为TRADE_SUCCESS或TRADE_FINISHED时,支付宝才会认定为买家付款成功。

注意:

状态TRADE_SUCCESS的通知触发条件是商户签约的产品支持退款功能的前提下,买家付款成功;
交易状态TRADE_FINISHED的通知触发条件是商户签约的产品不支持退款功能的前提下,买家付款成功;或者,商户签约的产品支持退款功能的前提下,交易已经成功并且已经超过可退款期限。

你可能感兴趣的:(PHP)