巴西奥运会来了,刚好我又是做体育行业的互联网。哎!这个月又要加班成狗了。最近遇到好多莫名其妙的问题,待我忙完这段,再跟大家分享下。今天还是继续说说 Payment项目
今天主要说说支付宝订单查询接口。
接口调用
废话废话不多说。直接上支付宝订单查询的代码。微信的订单查询与此类似。后续也会更新文档。
// 支付宝配置信息
$aliconfig = [
'partner' => '2088xxxxx',
'md5_key' => 'xxxxxxxxxxxx',
'rsa_private_key' => dirname(__FILE__) . '/rsa_private_key.pem',
"notify_url" => 'http://test.helei.com/pay-notify.html',
"return_url" => 'http://test.helei.com/return-url.html',
"time_expire" => '14',
];
$data = [
// 通过支付宝交易号查询, 推荐 效率更高
'transaction_id' => '2016011421001004330041239366',// 支付宝
// 通过订单号查询
'order_no' => '2016011402433464',// 支付宝
];
$query = new QueryContext();
try {
// 支付宝查询
$query->initQuery(Config::ALI, $aliconfig);
$ret = $query->query($data);
} catch (PayException $e) {
echo $e->errorMessage();exit;
}
var_dump($ret);
非常简单,只需要提供支付宝的流水号,或者商家自己生成的订单号,就可完成订单详情的查询,当然前提是,依然要去签约这个接口(觉得支付宝真扯淡,都能够支付了,为什么查询还要单独签约?这一点微信比它强)
如果同时提供了 transaction_id 跟 order_no 这两个参数,会优先使用 transaction_id ,因为他的效率要高的多。
代码完成了下面分别解释下请求的参数。以及返回参数。关于支付宝的配置参数,请参考 PHP接入支付宝手机网站支付、移动支付接口
请求参数
查询订单的参数非常简单。这里能够查询的仅指:支付成功后的订单
参数
参数名
参数说明
是否必须
transaction_id
支付宝流水号
支付成功后,异步通知中会返回
二选一
order_no
商户订单号
商户生成的唯一订单号
二选一
对于上表中的数据,两个字段二选一即可。推荐使用 transaction_id ,该字段查询效率更高。如果两个字段同时提供,会优先使用 transaction_id。
请求后,程序会向支付宝进行查询。查询完成后,会将返回的数据做一定处理然后返回给客户端。
返回参数
查询存在两种情况,失败,成功,分别对返回字段含义进行说明。
参数
参数名
参数说明
是否必须
is_success
成功标识
请求是否成功,T:成功,F:失败
是
error
错误提示
只有is_success=F时才返回
否
response
响应数据
查询成功后返回的数据,一个数组,is_success=T时返回
否
关于 response 中包含字段的描述
参数
参数名
参数说明
是否必须
subject
商品名称
订单的关键字
是
body
商品描述
提交订单时的body值
是
amount
交易金额
本次订单总金额
是
channel
支付渠道
本处取值: ali
是
order_no
商户网站唯一订单号
商户生成的订单号,必须确保在系统中唯一
是
buyer_id
买家支付宝账户号
可以是Email或手机号码。
是
trade_state
交易状态
支付成功与否,可取值:success not_pay
是
transaction_id
支付宝交易号
支付宝系统中的交易流水号,可用于查询订单状态
是
time_end
交易付款时间
格式为2016-07-28 16:01:01
是
针对查询返回的数据,调用者可进行相关的业务处理。如果需要更多信息可联系我进行定制开发,也可自行更改代码完成。