我来为您详细讲解“php版交通银行网银支付接口开发入门教程”的完整攻略。
简介
交通银行网银支付接口是一种在线支付方式,它基于交通银行的网银平台,为具备注册交通银行网银服务资格的商户提供在线支付收款业务。本教程主要介绍如何在 PHP 环境下开发交通银行网银支付接口。
环境要求
- PHP 版本:5.2.0+
- OpenSSL 扩展
- CURL 扩展
支付流程
交通银行网银支付流程主要包含以下几个步骤:
- 商户网站通过提交订单接口生成一个唯一订单号,将订单信息返回给网银平台。
- 网银平台对订单信息进行验证和处理,返回一个交易流水号和支付页面地址。
- 商户网站跳转到支付页面地址,客户在该页面进行支付。
- 支付成功后,网银平台将支付结果通知商户网站。
接口说明
1. 提交订单接口
该接口用于在商户网站生成一个唯一订单号,并返回订单信息给网银平台。
请求地址:https://pay.cmbchina.com/netpayment/BaseHttp.dll?MB_EUserPay
请求参数:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
dateTime |
string | 是 | 请求时间,格式:yyyymmddhhmmss |
branchNo |
string | 是 | 归属商户号 |
merchantNo |
string | 是 | 商户号 |
date |
string | 是 | 订单日期,格式:yyyymmdd |
orderNo |
string | 是 | 订单号 |
amount |
string | 是 | 订单金额,单位:分 |
expireTimeSpan |
string | 否 | 订单有效期时间,单位:分钟。默认为 1440(即 24 小时)。 |
payNoticePara |
string | 否 | 商户指定服务器接收支付通知的地址和参数,不超过 255 个字符。 |
请求示例:
<?php
$dateTime = date('YmdHis');
$branchNo = '000000';
$merchantNo = '1234567890';
$date = date('Ymd');
$orderNo = '20210527001';
$amount = '1000';
// 计算签名
$signature = md5($dateTime . $branchNo . $merchantNo . $orderNo . $amount);
// 构造请求参数
$data = array(
'dateTime' => $dateTime,
'branchNo' => $branchNo,
'merchantNo' => $merchantNo,
'date' => $date,
'orderNo' => $orderNo,
'amount' => $amount,
'expireTimeSpan' => '1440',
'payNoticePara' => '',
'signature' => $signature,
);
// 发起请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://pay.cmbchina.com/netpayment/BaseHttp.dll?MB_EUserPay');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
// 解析响应
parse_str($response, $result);
print_r($result);
?>
响应示例:
Array
(
[dateTime] => 20210527150625
[branchNo] => 000000
[merchantNo] => 1234567890
[date] => 20210527
[orderNo] => 20210527001
[amount] => 1000
[status] => 0 // 0:成功;其它:失败
[msg] => 调用成功
[cmbBankCode] =>
[bankSeq] =>
[payUrl] => https://netpay.cmbchina.com/netpayment/BaseHttp.dll?prepay&payorderid=20210527001 // 支付页面地址
[signature] => 8422e5d9d96b0d7e27087c04676a2e68
)
2. 支付结果通知接口
该接口用于网银支付成功后,将支付结果通知商户服务器。
请求参数:
参数名 | 类型 | 是否必填 | 说明 |
---|---|---|---|
dateTime |
string | 是 | 请求时间,格式:yyyymmddhhmmss |
branchNo |
string | 是 | 归属商户号 |
merchantNo |
string | 是 | 商户号 |
date |
string | 是 | 订单日期,格式:yyyymmdd |
orderNo |
string | 是 | 订单号 |
amount |
string | 是 | 订单金额,单位:分 |
CMBNETPAYMSG |
string | 是 | 处理结果 |
signature |
string | 是 | 签名 |
处理结果说明:
Succeed
:支付成功Fail
:支付失败
响应参数:
商户服务器应在收到交通银行通知后,返回以下字符串给交通银行,以告知交通银行已成功处理通知并完成该交易操作。
【OK】【20210527155533】【20210527】【1234567890】【20210527001】
PHP 示例:
<?php
// 验证签名
$signature = md5($dateTime . $branchNo . $merchantNo . $orderNo . $amount . $CMBNETPAYMSG . $key);
if ($signature !== $request['signature']) {
echo '签名错误';
exit;
}
// 处理支付结果
if ($CMBNETPAYMSG === 'Succeed') {
// 支付成功
// 修改订单状态等操作
} else {
// 支付失败
}
// 返回确认信息给交通银行
echo '【OK】【' . $dateTime . '】【' . $date . '】【' . $merchantNo . '】【' . $orderNo . '】';
?>
总结
本文介绍了交通银行网银支付接口的开发流程和接口说明。对于想要在自己的网站集成支付功能的开发者,可以根据本教程进行参考和实践。需要注意的是,其中涉及到的安全问题和接口细节需要仔细考虑,确保支付能够稳定可靠地运行。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php版交通银行网银支付接口开发入门教程 - Python技术站