API密钥——什么是API密钥?
企业打款验证API在Java、Python、PHP中的使用教程
随着企业银行账号数量的增加和银行间的连接方式不断丰富,企业在进行资金交易时需要确保所填写的收款方账户信息的准确性和合法性,以避免资金损失和风险。然而,由于银行数量众多、地域分布广泛,不同银行间的账户验证机制和信息交互方式各不相同,给企业的资金管理带来了一定的挑战。
为了解决这一问题,企业打款验证应运而生。该验证机制支持多达741家银行,通过企业提供的收款方账户、收款方公司名称以及收款方联行号等关键信息,平台能够向指定账户打一笔随机金额的资金。收款方在收到资金后,通过财务查询并核对收到的金额,然后在平台输入该金额进行一致性验证。这样一来,企业便能够验证银行账户的真实性和归属性,确保资金的安全和正确到达目标账户,有效降低了资金交易中的风险和错误率,提升了资金管理的效率和可靠性。
什么是企业打款验证 API
企业打款验证API是一种用于验证企业银行打款信息的接口。它通常用于企业在业务流程中需要确认或验证其他合作伙伴的银行账户信息是否准确、有效以及是否有权进行打款。
企业打款验证 API适用于哪些人
企业打款验证API适用于以下类型的人或实体:
- 企业:企业可以利用企业打款验证 API 来验证其与供应商、合作伙伴或客户之间的银行账户信息的准确性和一致性。这对于确保资金安全和准确到账非常重要。
- 金融科技公司:金融科技公司可以提供企业打款验证 API 作为其金融服务的一部分,帮助企业客户确保他们的资金交易安全可靠。
- 财务服务提供商:财务服务提供商可以使用企业打款验证 API 作为其企业客户账户验证和风险管理的一部分,以提供更全面的服务。
- 支付平台和支付处理商:支付平台和支付处理商可以利用企业打款验证 API 来确保其平台上的收款方账户信息的准确性,以降低支付过程中的风险。
- 开发者和软件公司:开发者和软件公司可以集成企业打款验证 API 到他们的软件产品或应用程序中,以为企业客户提供更完整的支付解决方案。
总的来说,企业打款验证 API 对于任何需要验证银行账户信息的个人、企业或实体都是有用的,特别是在涉及资金交易和支付的场景中。
企业打款验证 API是如何工作的
企业打款验证API的工作原理通常包括以下步骤:
- 提供账户信息:企业提供收款方账户的具体信息,包括账户号码、收款方公司名称、收款方联行号等关键信息。
- 发起打款请求:验证平台接收到企业提供的账户信息后,发起一笔随机金额的打款请求到指定的收款方账户。
- 接收验证请求:收款方接收到打款后,系统通知或者提醒收款方需要进行验证。
- 核对金额:收款方财务查询并核对收到的随机金额,确保金额与实际收到的资金一致。
- 输入验证:收款方在验证平台上输入收到的随机金额,以完成验证流程。
- 验证结果返回:验证平台接收到验证结果后,将结果返回给企业或者验证发起者,通知验证是否成功。
企业打款验证 API 的关键在于通过打款和验证金额的方式,验证收款方账户的真实性和一致性。这种方式可以有效地降低错误和欺诈行为,确保资金安全到账。同时,该流程也提高了交易的透明度和可追溯性,为企业和交易双方提供了更高的信任度。
如何使用企业打款验证 API?
1. 注册: 开发者可以在幂简集成平台上注册账户,选择适合自己的工作空间,并在空间中创建自己的应用。
2. API 发现: 通过API Hub找到所需的API服务,通过一键集成将API集成到所创建的应用中。
3. API 集成: 开发者按照文档中的指引,将 API 集成到自己的应用程序中。
4. API 管理: 在幂简集成平台上,可以管理 API 密钥、查看使用情况和监控身份验证请求。
企业打款验证API在不同开发语言中的调用(Java/python/php 示例)
在Java中,下面这段代码展示了如何使用 Java 发送 HTTP POST 请求到企业打款验证服务,以及如何处理服务的响应。需要注意的是,其中的 `HttpUtils` 类和依赖项需要从提供的链接下载并引入。此外,`{{AppCode}}` 部分需要替换为实际的应用程序代码。
打款接口
import com.mittang.util.HttpUtils;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.util.HashMap;
import java.util.Map;
public class Example {
public static void main(String[] args) throws Exception{
String host = "https://open.explinks.com";
String path = "/v1/tools/verify/company/pay-verify";
String method = "POST";
// "{{AppCode}}" 替换成您的 AppCode
String appcode = "{{AppCode}}";
Map headers = new HashMap<>();
headers.put("X-Mce-Signature", "AppCode/" + appcode);
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
Map querys = new HashMap<>();
Map bodys = new HashMap<>();
// 填充参数
bodys.put("reqNo", "123123");
bodys.put("bankCard", "bankCard");
bodys.put("companyName", "companyName");
bodys.put("bankName", "bankName");
bodys.put("bankUnionCode", "bankUnionCode");
try {
/**
* 重要提示如下:
* HttpUtils请从
* https://static.miitang.com/saas/simple/HttpUtils.java 下载
*
* 相应的依赖请参照
* https://static.miitang.com/saas/simple/pom.xml
*/
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
// 获取 response 的 body
String resStr = EntityUtils.toString(response.getEntity());
System.out.println(resStr);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode == 200){
// 请求成功,可根据业务码(请求体中的code)进行逻辑处理
} else if(statusCode == 610){
// 用户输入的参数问题,可直接提示用户
} else if(statusCode == 611){
// 系统准备的数据问题,如 文件数据下载失败、数据不存在、数据重复请求等。 LOG it and 提示用户
} else if(statusCode == 612){
// 用户操作频度问题,可提示用户。 LOG it and 按业务特点做处理
} else if(statusCode >= 500 && statusCode < 600){
// 在运行阶段发生的系统稳定性问题,客户端可以重试,或者联系我司客服
} else {
// 如账户密码错误、IP白名单问题、余额不足等,您应该在对接过程中解决相关问题。
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
验证接口
import com.mittang.util.HttpUtils;
import org.apache.http.HttpResponse;
import org.apache.http.util.EntityUtils;
import java.util.HashMap;
import java.util.Map;
public class Example {
public static void main(String[] args) throws Exception{
String host = "https://open.explinks.com";
String path = "/v1/tools/verify/company/pay-verify-check";
String method = "POST";
// "{{AppCode}}" 替换成您的 AppCode
String appcode = "{{AppCode}}";
Map headers = new HashMap<>();
headers.put("X-Mce-Signature", "AppCode/" + appcode);
headers.put("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
Map querys = new HashMap<>();
Map bodys = new HashMap<>();
// 填充参数
bodys.put("reqNo", "123123");
bodys.put("bankCard", "bankCard");
bodys.put("amount", "0.1");
try {
/**
* 重要提示如下:
* HttpUtils请从
* https://static.miitang.com/saas/simple/HttpUtils.java 下载
*
* 相应的依赖请参照
* https://static.miitang.com/saas/simple/pom.xml
*/
HttpResponse response = HttpUtils.doPost(host, path, method, headers, querys, bodys);
// 获取 response 的 body
String resStr = EntityUtils.toString(response.getEntity());
System.out.println(resStr);
int statusCode = response.getStatusLine().getStatusCode();
if(statusCode == 200){
// 请求成功,可根据业务码(请求体中的code)进行逻辑处理
} else if(statusCode == 610){
// 用户输入的参数问题,可直接提示用户
} else if(statusCode == 611){
// 系统准备的数据问题,如 文件数据下载失败、数据不存在、数据重复请求等。 LOG it and 提示用户
} else if(statusCode == 612){
// 用户操作频度问题,可提示用户。 LOG it and 按业务特点做处理
} else if(statusCode >= 500 && statusCode < 600){
// 在运行阶段发生的系统稳定性问题,客户端可以重试,或者联系我司客服
} else {
// 如账户密码错误、IP白名单问题、余额不足等,您应该在对接过程中解决相关问题。
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
在Python中,使用 `requests` 库发送 POST 请求到企业打款验证服务接口,根据响应状态码进行业务逻辑处理,包括成功、参数问题、数据问题、操作频度问题和系统稳定性问题等的处理。
打款接口
import json
import requests
if __name__ == '__main__':
url = "https://open.explinks.com/v1/tools/verify/company/pay-verify"
payload = json.dumps({
"reqNo": "132123",
"bankCard": "bankCard",
"companyName": "companyName",
"bankName": "bankName",
"bankUnionCode": "bankUnionCode"
})
headers = {
"Content-Type": "application/json",
# "{{AppCode}}" 替换为您的 AppCode
"X-Mce-Signature": "AppCode/{{AppCode}}"
}
response = requests.request("POST", url, headers=headers, data=payload)
status_code = response.status_code
print("headers:", response.headers)
print("http 状态码:", str(status_code))
print(response.text)
if status_code == 200:
"请求成功,可根据业务码(请求体中的code)进行逻辑处理"
elif status_code == 610 :
"用户输入的参数问题,可直接提示用户"
elif status_code == 611 :
"系统准备的数据问题,如 文件数据下载失败、数据不存在、数据重复请求等。 LOG it and 提示用户"
elif status_code == 612 :
"用户操作频度问题,可提示用户。 LOG it and 按业务特点做处理"
elif status_code >= 500 & status_code < 600 :
"在运行阶段发生的系统稳定性问题,客户端可以重试,或者联系我司客服"
else:
"如账户密码错误、IP白名单问题、余额不足等,您应该在对接过程中解决相关问题。"
验证接口
import json
import requests
if __name__ == '__main__':
url = "https://open.explinks.com/v1/tools/verify/company/pay-verify-check"
payload = json.dumps({
"reqNo": "132123",
"bankCard": "bankCard",
"amount": "0.1"
})
headers = {
"Content-Type": "application/json",
# "{{AppCode}}" 替换为您的 AppCode
"X-Mce-Signature": "AppCode/{{AppCode}}"
}
response = requests.request("POST", url, headers=headers, data=payload)
status_code = response.status_code
print("headers:", response.headers)
print("http 状态码:", str(status_code))
print(response.text)
if status_code == 200:
"请求成功,可根据业务码(请求体中的code)进行逻辑处理"
elif status_code == 610 :
"用户输入的参数问题,可直接提示用户"
elif status_code == 611 :
"系统准备的数据问题,如 文件数据下载失败、数据不存在、数据重复请求等。 LOG it and 提示用户"
elif status_code == 612 :
"用户操作频度问题,可提示用户。 LOG it and 按业务特点做处理"
elif status_code >= 500 & status_code < 600 :
"在运行阶段发生的系统稳定性问题,客户端可以重试,或者联系我司客服"
else:
"如账户密码错误、IP白名单问题、余额不足等,您应该在对接过程中解决相关问题。"
在PHP中,使用 cURL 发送 POST 请求到企业打款验证服务接口,处理并输出相应的业务逻辑。它包括设置请求头、发送请求、处理响应,根据响应状态码进行不同的业务逻辑处理,如成功、参数问题、数据问题、操作频度问题、系统稳定性问题等。
打款接口
<?php
$host = "https://open.explinks.com";
$path = "/v1/tools/verify/company/pay-verify";
$method = "POST";
$appcode = "{{您的AppCode}}";
$headers = array();
array_push($headers, "x-mce-signature:AppCode/" . $appcode);
//根据API的要求,定义相对应的Content-Type
array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8");
$querys = "";
$bodys = "reqNo=123123&bankCard=bankCard&companyName=companyName&bankName=bankName&bankUnionCode=bankUnionCode";
$url = $host . $path;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
if (1 == strpos("$".$host, "https://"))
{
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
$result = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); // 获得响应头大小
$httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE);
$body = substr($result,$header_size);
curl_close($curl);
$retMap = json_decode($body, true);
$code = $retMap["code"];
echo $httpCode.PHP_EOL; // DEBUG
if($httpCode == 200){
// 请求成功,可根据业务码(请求体中的code)进行逻辑处理
echo $retMap["code"].PHP_EOL;
echo $retMap["message"].PHP_EOL;
echo $retMap["hasFees"].PHP_EOL;
echo $retMap["fees"].PHP_EOL;
if($code == "FP00000"){
// SUCCESS
echo "SUCCESS";
}
else{
// FAILURE
echo "FAILURE";
}
} else {
echo $code.PHP_EOL; // DEBUG
if($httpCode == 610){
// 用户输入的参数问题,可直接提示用户
$errors = $retMap["errors"];
$errorMap = null;
foreach($errors as $key=>$value){
foreach($value as $key2=>$value2){
$errorMap[$key] = $value2;
break;
}
}
// 转化为 key:tip
echo($errorMap["idCardNo"].PHP_EOL);
echo($errorMap["name"].PHP_EOL);
} else if($httpCode == 611){
// 系统准备的数据问题,如 文件数据下载失败、数据不存在、数据重复请求等。 LOG it and 提示用户
echo "修订数据状态,不要重复操作。".PHP_EOL;
} else if($httpCode == 612){ // 用户操作频度问题,可提示用户。 LOG it and 按业务特点做处理
echo $retMap["message"].PHP_EOL;
} else if($httpCode >= 500 && $httpCode < 600){
// 在运行阶段发生的系统稳定性问题,客户端可以重试,或者联系我司客服
// TODO: retry
echo "RETRY".PHP_EOL;
} else {
// 如账户密码错误、IP白名单问题、余额不足等,您应该在对接过程中解决相关问题。
var_dump($retMap);
}
}
?>
验证
<?php
$host = "https://open.explinks.com";
$path = "/v1/tools/verify/company/pay-verify-check";
$method = "POST";
$appcode = "{{您的AppCode}}";
$headers = array();
array_push($headers, "x-mce-signature:AppCode/" . $appcode);
//根据API的要求,定义相对应的Content-Type
array_push($headers, "Content-Type".":"."application/x-www-form-urlencoded; charset=UTF-8");
$querys = "";
$bodys = "reqNo=123123&bankCard=bankCard&amount=0.01";
$url = $host . $path;
$curl = curl_init();
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_FAILONERROR, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
if (1 == strpos("$".$host, "https://"))
{
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
}
curl_setopt($curl, CURLOPT_POSTFIELDS, $bodys);
$result = curl_exec($curl);
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE); // 获得响应头大小
$httpCode = curl_getinfo($curl,CURLINFO_HTTP_CODE);
$body = substr($result,$header_size);
curl_close($curl);
$retMap = json_decode($body, true);
$code = $retMap["code"];
echo $httpCode.PHP_EOL; // DEBUG
if($httpCode == 200){
// 请求成功,可根据业务码(请求体中的code)进行逻辑处理
echo $retMap["code"].PHP_EOL;
echo $retMap["message"].PHP_EOL;
echo $retMap["hasFees"].PHP_EOL;
echo $retMap["fees"].PHP_EOL;
if($code == "FP00000"){
// SUCCESS
echo "SUCCESS";
}
else{
// FAILURE
echo "FAILURE";
}
} else {
echo $code.PHP_EOL; // DEBUG
if($httpCode == 610){
// 用户输入的参数问题,可直接提示用户
$errors = $retMap["errors"];
$errorMap = null;
foreach($errors as $key=>$value){
foreach($value as $key2=>$value2){
$errorMap[$key] = $value2;
break;
}
}
// 转化为 key:tip
echo($errorMap["idCardNo"].PHP_EOL);
echo($errorMap["name"].PHP_EOL);
} else if($httpCode == 611){
// 系统准备的数据问题,如 文件数据下载失败、数据不存在、数据重复请求等。 LOG it and 提示用户
echo "修订数据状态,不要重复操作。".PHP_EOL;
} else if($httpCode == 612){ // 用户操作频度问题,可提示用户。 LOG it and 按业务特点做处理
echo $retMap["message"].PHP_EOL;
} else if($httpCode >= 500 && $httpCode < 600){
// 在运行阶段发生的系统稳定性问题,客户端可以重试,或者联系我司客服
// TODO: retry
echo "RETRY".PHP_EOL;
} else {
// 如账户密码错误、IP白名单问题、余额不足等,您应该在对接过程中解决相关问题。
var_dump($retMap);
}
}
?>
总结
企业打款验证API是现代金融科技中的重要工具,类似于人脸对比技术在身份验证中的作用。它通过验证账户信息和随机金额的打款,提供了一种高效、准确、安全的账户验证手段,有助于降低支付过程中的风险和错误率,推动了企业金融管理和支付系统的技术创新和应用发展。