在开发商城网站时需要使用第三方支付网关,业界以支付宝和微信支付更为可靠,支付宝属于第三方支付担保平台,提供了如支付,退款,订单查询和商户账单查询等功能。
支付退款流程
注意1:
- returnUrl:returnUrl在支付请求参数中提供给支付宝网关(步骤1.1),然后由支付宝在确认支付后同步调用get请求returnUrl(步骤6)。
- notifyUrl:notifyUrl在支付请求参数中提供给支付宝网关(步骤1.1),然后由支付宝在确认支付后异步调用post请求notifyUrl(步骤7)。
注意2:
- 判断是否交易成功不能以通过同步通知(6)为准
- 可以通过支付宝异步通知(7)和商户主动查询来判断(8)。
注意3:
- 商户系统接收到异步通知以后,必须通过验签(验证通知中的sign参数)来确保支付通知是由支付宝发送的。详细验签规则参考异步通知验签。
- 接收到异步通知并验签通过后,一定要检查通知内容,包括通知中的app_id、out_trade_no、total_amount是否与请求中的一致,并根据trade_status进行后续业务处理
注意4:
- 在支付宝端,** partnerId与out_trade_no唯一对应一笔单据 ,商户端保证不同次支付out_trade_no不可重复**,若重复,支付宝会关联到原单据,基本信息一致的情况下会以原单据为准进行支付。
交易关闭与交易对账
退款接口(alipay.trade.refund):
若用户或商户需要退款,商户可调用alipay.trade.refund接口进行退款,支付宝同步返回退款参数。
退款查询接口(alipay.trade.fastpay.refund.query):
若退款接口由于网络等原因返回异常,商户可调用alipay.trade.fastpay.refund.query退款查询接口查询指定交易的退款信息。
注意:退款信息一定以退款接口同步返回或者退款查询接口alipay.trade.fastpay.refund.query为准。
交易关闭接口(alipay.trade.close):
通常交易关闭是通过alipay.trade.page.pay中的超时时间来控制,支付宝也提供给商户一个手动关闭交易的接口alipay.trade.close。若用户一直未支付,商户可以调用该接口关闭指定交易。 成功关闭交易后该交易不可支付。
注意:若交易实际已经支付,商户仍然来调用alipay.trade.close,会进行全额退款。此时这笔交易也不可再进行支付。
查询对账单下载地址查询接口:(alipay.data.dataservice.bill.downloadurl.query)
为方便商户快速查账,支持商户通过alipay.data.dataservice.bill.downloadurl.query接口获取商户离线账单下载地址
蚂蚁金服官方文档
https://docs.open.alipay.com/270/105899/
https://docs.open.alipay.com/270/105902/
https://docs.open.alipay.com/270/106291/
https://docs.open.alipay.com/270/105900/