银联已于 2020 年 1 月下架该页面及功能,本文所提方式已失效。
不知道你在用手机银行转账时注意过没有,当你输入卡号时,会自动识别归属银行,识别失败时,则会让用户手动选择。最近在做一个类似银行卡信息需求时,想到应该会有这样的一个接口,Google 后发现还真的有官方接口,而且有体验页面👉银行卡信息查询体验,详细的接口信息银行卡信息查询。不过当我注册了开发者时,发现该接口无法使用,提交工单后得到以下回复
既然无法通过正常调用使用,那就曲径通幽吧。我们通过分析查询体验页后就有了以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <?php
$cardNo = '6227000280070981140';
$ch = curl_init('https://open.unionpay.com/tjwx/api/cardbin/cardinfo'); curl_setopt_array( $ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(['cardNo' => $cardNo]), CURLOPT_RETURNTRANSFER => true, CURLOPT_USERAGENT => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36', CURLOPT_REFERER => 'https://open.unionpay.com/tjwx/openapi/cardbin-pc.html', CURLOPT_HTTPHEADER => ["Content-Type: application/x-www-form-urlencoded", "Accept: application/json, text/javascript, */*; q=0.01"] ] );
$resp = curl_exec($ch);
curl_close($ch);
$resp_obj = json_decode($resp); if ($resp_obj->state) { $bankCnName = $resp_obj->data->issNm; $bankCnShortName = $resp_obj->data->issAbbr; $issInsId = $resp_obj->data->issInsId; }
|
这些信息对我已经够用了,银联还有很多其它的便捷接口,有些公共信息我们是可以免除用户输入,系统自动抓取相关信息补充,既减少了用户的输入,又能避免错误输入,是一种不错的提升用户体验的思路。不过要考虑到有时候无法正确拉取到结果,对于拉取失败仍需给用户留下手动输入的空间。