php版交通银行网银支付接口开发入门教程

我来为您详细讲解“php版交通银行网银支付接口开发入门教程”的完整攻略。

简介

交通银行网银支付接口是一种在线支付方式,它基于交通银行的网银平台,为具备注册交通银行网银服务资格的商户提供在线支付收款业务。本教程主要介绍如何在 PHP 环境下开发交通银行网银支付接口。

环境要求

  • PHP 版本:5.2.0+
  • OpenSSL 扩展
  • CURL 扩展

支付流程

交通银行网银支付流程主要包含以下几个步骤:

  1. 商户网站通过提交订单接口生成一个唯一订单号,将订单信息返回给网银平台。
  2. 网银平台对订单信息进行验证和处理,返回一个交易流水号和支付页面地址。
  3. 商户网站跳转到支付页面地址,客户在该页面进行支付。
  4. 支付成功后,网银平台将支付结果通知商户网站。

接口说明

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技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • PHP中的生成XML文件的4种方法分享

    下面就是“PHP中的生成XML文件的4种方法分享”的完整攻略。 1. 概述 XML全称为Extensible Markup Language,即可扩展标记语言。它是一种类似于HTML的标记语言。一种语言的类型是通过描述该语言文本的语法和语义规则来确定的,XML就属于这种类型。 在PHP中生成XML文件是一项非常重要的任务,它允许我们使用结构化的数据,在没有任…

    PHP 2023年5月26日
    00
  • php eval函数一句话木马代码

    首先,需要明确一点,eval函数是一种非常强大的PHP内置函数,它可以执行以字符串形式表示的PHP代码。但由于它会执行任何代码,包括恶意代码,所以不当地使用 eval() 会导致任意执行代码的安全风险。 “一句话木马”是一种针对PHP网站的常见攻击方式。攻击者通常会使用eval函数来实现在服务器上执行恶意代码的目的。一般情况下,攻击者会将“一句话木马”代码插…

    PHP 2023年5月24日
    00
  • php数组键值用法实例分析

    PHP数组键值用法实例分析 在PHP中,数组是一种非常常见的数据类型,数组中的每个元素都由一个键和一个值组成。在这个主题中,我们将深入探讨数组的键值用法,并提供一些实例来演示数组键值的使用方法。 数组键值的概述 数组中的键可以是整数或字符串类型。如果键是整数,那么它们将自动赋值为按顺序递增的整数。如果键是字符串,则键就是该字符串本身。数组中的值可以是任何类型…

    PHP 2023年5月26日
    00
  • 网站生成静态页面,及网站数据采集的攻、防原理和策略

    网站生成静态页面的攻、防原理与策略 原理 网站生成静态页面是指将动态数据生成静态HTML文件,以提高网站性能和访问速度。攻击者可以通过修改静态页面来实施攻击,从而导致不良后果。静态页面的生成原理是通过模板引擎和数据库等生成,并通过缓存等机制进行优化。 防御策略 对于敏感数据需要进行服务器端渲染,如账号密码等。 禁止通过get方式将动态页面转换为静态页面,只允…

    PHP 2023年5月27日
    00
  • 浅谈PHP中的<<<运算符

    当我们在编写PHP程序时,可能需要在字符串中嵌入一些大段文字或HTML标记等,这时候使用双引号或单引号虽然能够实现,但是会导致代码可读性降低。此时我们可以使用PHP中的<<<运算符来解决这个问题。 <<<运算符的使用方法 在PHP中,双引号或单引号外面加上<<<符号就表示要写一段大段的字符串,它的具体用法…

    PHP 2023年5月23日
    00
  • PHP实现生成推广海报的方法详解

    PHP实现生成推广海报的方法详解 生成推广海报是网络推广中常见的一种方式,可以帮助推广者更好地展示产品和服务。在本篇文章中,我们将详细讲解如何使用PHP实现生成推广海报的方法。 1. 准备工作 在开始之前,我们需要安装一个强大的PHP库——GD库。GD(Gif Draw)库是一个开源的绘图库,用于创建动态和静态图片。要使用GD库,您需要在PHP配置中启用该模…

    PHP 2023年5月23日
    00
  • 疯狂猜成语 两个心的答案是什么

    下面是针对“疯狂猜成语”中“两个心”的答案攻略: 答案解析 “两个心”的答案是“心心相印”。 答题思路 分析提示词汇,找到关键词“两个心”。 思考与“两个心”相关的成语。 构思成语接龙,注意词性和语法。 验证答案是否符合提示。 示例一 提示: 一口气猜中3个成语,这就是天赋异禀! A. 红日初升 B. 纸上谈兵 C. 两个心 思路及解析: 从A、B的成语接龙…

    PHP 2023年5月26日
    00
  • 简单的php文件上传(实例)

    下面为你详细讲解如何进行简单的PHP文件上传,包含如下内容: 准备工作 编写前端页面 编写后端代码 示例说明 1. 准备工作 在进行文件上传之前,需要准备好以下工作: 一个可用的Web服务器,比如Apache或Nginx。 PHP版本必须大于等于5.2.0,且必须开启了file_uploads配置项。 了解文件上传的安全性问题。 2. 编写前端页面 前端页面…

    PHP 2023年5月26日
    00
合作推广
合作推广
分享本页
返回顶部