PHP code example of douyasi / baofoo
1. Go to this page and download the library: Download douyasi/baofoo library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
douyasi / baofoo example snippets
// 自动加载
er_id' => '100000276', // 商户号
'terminal_id' => '100000990', // 终端号
'request_url' => 'http://vgw.baofoo.com/cutpayment/api/backTransRequest', // 请求宝付网关地址
];
$bfpayConf = [
// 'timezone' => 'Asia/Shanghai', // 时区设置,不填写,默认使用 `Asia/Shanghai`
'private_key_password' => '123456', // 私钥密码
'public_key_path' => '', // 公钥路径,留空使用 res\cer 文件
'private_key_path' => '', // 私钥路径,留空使用 res\cer 文件
'allowed_bind_credit_card' => false, // 是否允许绑定信用卡,某些金融场景可能不允许使用信用卡 CC
'debug' => false, // 是否开启 debug 模式
'logger_path' => '', // 记录请求日志的根路径,请使用绝对路径
];
$baofoo = new \Douyasi\Baofoo\Sdk($config, $bfpayConf);
$bindData = [
// 'trans_serial_no' => '', // 可以不传,sdk 会自动生成
// 'trans_id' => '', // 可以不传,sdk 会自动生成
// 'trade_date' => '20170915191103', // 可以不传,sdk 会自动生成, 手动传入,必须符合宝付要求的日期格式
/* 持卡人四要素*/
'acc_no' => '6222020111122220000',
'id_holder' => '张宝',
'id_card' => '320301198502169142',
'mobile' => '13800000000',
// 'pay_code' => '', // 建议不要手动传 `pay_code` ,sdk 会根据卡号自动查询得到 `pay_code` ,而且会根据配置 限制是否允许绑定信用卡
// 'additional_info' => '测试', // 附加字段,可以不传或留空,其他接口亦是如此
// 'req_reserved' => '保留字段', // 请求方保留域,可以不传或留空,其他接口亦是如此
];
$ret = $baofoo->bindCard($bindData);
$unbindData = [
// 'trans_serial_no' => '', // 可以不传,sdk 会自动生成
// 'trade_date' => '20170915191103', // 可以不传,sdk 会自动生成, 手动传入,必须符合宝付要求的日期格式
'bind_id' => '201709151709081000009905295', // 绑卡时得到的 bind_id
'trans_id' => 'TI170915101656903557', // 必须与绑卡的时候的订单号一致
];
$ret = $baofoo->unbindCard($unbindData);
$queryBindData = [
// 'trans_serial_no' => '', // 可以不传,sdk 会自动生成
// 'trade_date' => '20170915191103', // 可以不传,sdk 会自动生成, 手动传入,必须符合宝付要求的日期格式
'acc_no' => '6222020111122220000',
];
$ret = $baofoo->queryBindCard($queryBindData);
$payData = [
// 'trans_serial_no' => '', // 可以不传,sdk 会自动生成
// 'trans_id' => '', // 可以不传,sdk 会自动生成
'bind_id' => '201709151709081000009905295',
'txn_amt' => 1, // 金额,分为单位,这里是 1分
'mobile' => '13800000000',
'acc_no' => '6222020111122220000', // 银行卡号
'trade_date' => '20170915191103', // 可以不传,sdk 会自动生成, 手动传入,必须符合宝付要求的日期格式
'risk_content' => [
'client_ip' => '127.0.0.1', // 必须传入,请将客户真实 ip 传入
],
];
$ret = $baofoo->prePay($payData);
$payData = [
// 'trans_serial_no' => '', // 可以不传,sdk 会自动生成
'business_no' => 'TI170915124325276174', // `prePay` 那一步宝付返回得到的业务流水号
'sms_code' => '123456', // 支付时的短信验证码,若开通短信类交易则必填
'trade_date' => '20170915191103', // 可以不传,sdk 会自动生成, 手动传入,必须符合宝付要求的日期格式
];
$ret = $baofoo->doPay($payData);
ig = [
'version' => '4.0.0', // 版本号
'data_type' => 'json', // 加密报文的数据类型(xml/json)
'member_id' => '100000178', // 默认测试商户号
'terminal_id' => '100000859', // 默认测试终端号
];
$bfpayConf = [
'fo_pay_env' => 'TESTING', // 环境,可选 测试 TESTING 和 生产PRODUCTION
// 'timezone' => 'Asia/Shanghai', // 时区设置,不填写,默认使用 `Asia/Shanghai`
'private_key_password' => '123456', // 私钥密码
'public_key_path' => '', // 公钥路径,留空使用 res\cer 文件
'private_key_path' => '', // 私钥路径,留空使用 res\cer 文件
'debug' => false, // 是否开启 debug 模式
'logger_path' => '', // 记录请求日志的根路径,请使用绝对路径
];
$foPay = new \Douyasi\Baofoo\FoPaySdk($config, $bfpayConf);
// 单条数据
$data = [
'trans_no' => \Douyasi\Baofoo\Tool::generateTransId(), // 商户订单号 M (建议在自己程序中自行生成订单号,这里使用本包 `Tool` 类 助手方法)
'trans_money' => '100', // 转账金额 (元)M
'to_acc_name' => '张宝', // 收款人姓名 M
'to_acc_no' => '6222020111122220000',
'to_bank_name' => '中国银行', // 收款人银行名称 M
'to_pro_name' => '', // 收款人开户行省名 C
'to_city_name' => '', // 收款人开户行市名 C
'to_acc_dept' => '', // 收款人开户行机构名 C
'trans_card_id' => '', // 银行卡身份证件号码 C
'trans_mobile' => '', // 银行卡预留手机号 C
'trans_summary' => '', // 摘要 R
];
$ret1 = $foPay->agentPay($data);
// 多条数据,宝付一个批次最多5条数据,这里演示 2条
# 依次传入
$data1 = [
'trans_no' => \Douyasi\Baofoo\Tool::generateTransId(), // 商户订单号 M
'trans_money' => '100', // 转账金额 (元)M
'to_acc_name' => '张宝', // 收款人姓名 M
'to_acc_no' => '6222020111122220000',
'to_bank_name' => '中国银行', // 收款人银行名称 M
];
$data2 = [
'trans_no' => \Douyasi\Baofoo\Tool::generateTransId(), // 商户订单号 M
'trans_money' => '200', // 转账金额 (元)M
'to_acc_name' => '张宝', // 收款人姓名 M
'to_acc_no' => '6222020111122220000',
'to_bank_name' => '中国银行', // 收款人银行名称 M
];
$ret2 = $foPay->agentPay($data1, $data2);
# 一次性传入
$data3 = [
[
'trans_no' => \Douyasi\Baofoo\Tool::generateTransId(), // 商户订单号 M
'trans_money' => '300', // 转账金额 (元)M
'to_acc_name' => '张宝', // 收款人姓名 M
'to_acc_no' => '6222020111122220000',
'to_bank_name' => '中国银行', // 收款人银行名称 M
],
[
'trans_no' => \Douyasi\Baofoo\Tool::generateTransId(), // 商户订单号 M
'trans_money' => '400', // 转账金额 (元)M
'to_acc_name' => '张宝', // 收款人姓名 M
'to_acc_no' => '6222020111122220000',
'to_bank_name' => '中国银行', // 收款人银行名称 M
],
];
$ret3 = $foPay->agentPay($data3);
// 这里只演示单条数据,多条的参考上面 `代付交易接口(BF0040001)` 用法
$data = [
'trans_no' => 'TI171007162051843424', // 商户订单号 M
'trans_batchid' => 20868159, // 宝付批次号 O
];
$ret = $foPay->agentPayStatusQuery($data);
// 本接口只支持单条数据传入,同天查询
$data = [
'trans_btime' => '20171007', // 格式:YYYYMMDD(最多查询一天记录) 查询起始时间 M
'trans_etime' => '20171007', // 格式:YYYYMMDD(最多查询一天记录) 查询结束时间 M
];
$ret = $foPay->agentPayRefundQuery($data);
$data1 = [
'trans_no' => \Douyasi\Baofoo\Tool::generateTransId(), // 商户订单号 M
'trans_money' => '100', // 转账金额 (元)M
'to_acc_name' => '张宝', // 收款人姓名 M
'to_acc_no' => '6222020111122220000',
'to_bank_name' => '中国银行', // 收款人银行名称 M
];
$data2 = [
'trans_no' => \Douyasi\Baofoo\Tool::generateTransId(), // 商户订单号 M
'trans_money' => '200', // 转账金额 (元)M
'to_acc_name' => '张宝', // 收款人姓名 M
'to_acc_no' => '6222020111122220000',
'to_bank_name' => '中国银行', // 收款人银行名称 M
];
$ret = $foPay->agentPaySplit($data1, $data2);