对于手机、PC网站、APP支付产生的交易,金康云收银台会根据原始支付API中传入的异步通知地址notify_url,通过POST请求的形式将支付结果作为参数通知到商户系统。
异步通知参数
参数 | 类型 | 描述 | 范例 |
charset | String(10) | 编码格式,如utf-8、gbk、gb2312等 | UTF-8 |
out_trade_no | String(64) | 原支付请求的商户订单号 | 1823789349878200 |
jky_trade_no | String(64) | 金康云交易号 | 1823789349878200 |
total_amount | Number(9,2) | 本次交易支付的订单金额,单位为人民币(元) | 10 |
trade_no | String(64) | 第三方支付平台交易号 | 1823789349878200 |
appid | String(32) | 合作商户客户端(clients_id) | 121210104612453421 |
sign_type | String(10) | 生成签名字符串所使用的签名算法类型,目前支持HMAC-SHA1和MD5,推荐使用HMAC-SHA1 | HMAC-SHA1 |
trade_status | String(30) | 交易目前所处的状态 inProcess : 进行中 waitPay : 等待付款 waitSendGoods : 等待发货 waitConfirmGoods : 等待确认收货 refund : 退款 success : 支付成功 fail : 失败 refundInProcess : 退款待处理 codWaitBuyerPay : 等待买家签收 codWaitReceiptConfirm : 等待签收确认 codWaitSysPaySeller : 等待系统打款给卖家 mr : 维权 TRADE_CLOSED : 交易关闭 TRADE_FINISHED : 交易完成 | waitPay |
timestamp | String(9) | 请求的时间戳 | 2018-01-01 20:00:00 |
notify_time | String(9) | 通知到商户系统时间 | 2018-01-01 20:00:00 |
subject | String(256) | 商品的标题/交易标题/订单标题/订单关键字等,是请求时对应的参数,原样通知回来 | PC网站支付 |
body | String(128) | 订单描述 | 账户充值 |
passback_params | String(250) | 回传参数原样返回 | orderid=4224545423&title=测试 |
pay_type | String(20) | 支付方式, alipay-pc : 支付宝PC端 alipay-wap : 支付宝手机端 alipay-native : 支付宝扫码 weixin-jsapi : 微信公众号 weixin-native : 微信扫码 weixin-app : 微信APP | alipay-native |
通知触发条件
触发条件名 | 触发条件描述 | 触发条件默认值 |
success | 支付成功 | true(触发通知) |
waitPay | 交易创建 | false(不触发通知) |
TRADE_FINISHED | 交易完成 | true(触发通知) |
TRADE_CLOSED | 交易关闭 | true(触发通知) |
服务器异步通知页面特性
必须保证服务器异步通知页面(notify_url)上无任何字符,如空格、HTML标签、开发系统自带抛出的异常提示信息等;
金康云是用POST方式发送通知信息,因此该页面中获取参数的方式,如:$_POST[‘out_trade_no’];
金康云主动发起通知,该方式才会被启用。
只有在金康云的交易管理中存在该笔交易,且发生了交易状态的改变,才会通过该方式发起服务器通知(交易状态为“等待付款”的状态默认是不会发送通知的);
服务器间的交互,不像页面跳转同步通知可以在页面上显示出来,这种交互方式是不可见的;
第一次交易状态改变(交易状态是交易完成)时,不仅会返回同步处理结果,而且服务器异步通知页面也会收到金康云发来的处理结果通知;
程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给金康云的字符不是success这7个字符,金康云服务器会不断重发通知,直到超过24小时22分钟。一般情况下,25小时以内完成8次通知(通知的间隔频率一般是:4m,10m,10m,1h,2h,6h,15h);
程序执行完成后,该页面不能执行页面跳转。如果执行页面跳转,金康云会收不到success字符,会被金康云服务器判定为该页面程序运行出现异常,而重发处理结果通知;
返回结果的验签
某商户设置的通知地址为https://api.xx.com/receive_notify.htm,对应接收到通知的示例如下:
https://api.xx.com/receive_notify.htm?charset=UTF-8&out_trade_no=202042011204093613179062&jky_trade_no=20204201120409123520198517522736&total_amount=0.12&trade_no=2020010422001438670521667529&appid=123520194112150271&sign_type=MD5&trade_status=success×tamp=2020-01-04%2012:10:24&sign=ad3b66ab9fac61a2b94218f14ee6f000
第一步:在通知返回参数列表中,除去sign这个参数外,凡是通知返回回来的参数皆是待验签的参数。
第二步:参数的签名串,详见签名