init: 项目初始代码
This commit is contained in:
146
extend/utils/UnionpayB2C.php
Normal file
146
extend/utils/UnionpayB2C.php
Normal file
@@ -0,0 +1,146 @@
|
||||
<?php
|
||||
/**
|
||||
* unionpay在线网关支付B2C业务
|
||||
*/
|
||||
class UnionpayB2C
|
||||
{
|
||||
protected $pay_type = 'unionpay_b2c';
|
||||
|
||||
#版本号
|
||||
protected $version;
|
||||
|
||||
#编码方式
|
||||
protected $encoding = 'UTF-8';
|
||||
|
||||
#交易币种列表
|
||||
protected $currencyCode_list = [
|
||||
'CNY' => '156'
|
||||
];
|
||||
|
||||
protected $currencyCode;
|
||||
|
||||
#交易子类型列表,支付接口专用
|
||||
protected $txnSubType_list = [
|
||||
'zizhu' => '01',
|
||||
'fenqi' => '03',
|
||||
];
|
||||
|
||||
protected $txnSubType;
|
||||
|
||||
#接入类型
|
||||
protected $accessType = '0'; //商户直连
|
||||
|
||||
#签名算法
|
||||
protected $signMethod;
|
||||
|
||||
#渠道类型列表
|
||||
protected $channelType_list = [
|
||||
'pc' => '07',
|
||||
'mobile' => '08'
|
||||
];
|
||||
|
||||
protected $channelType;
|
||||
|
||||
#商户号
|
||||
// protected $merId = '777290058181532'; //test
|
||||
protected $merId = '802310057320534'; //线上
|
||||
|
||||
#接口url列表
|
||||
protected $dev_url_list = [
|
||||
'pay' => 'https://gateway.test.95516.com/gateway/api/frontTransReq.do',
|
||||
'query' => 'https://gateway.test.95516.com/gateway/api/queryTrans.do',
|
||||
];
|
||||
|
||||
protected $prod_url_list = [
|
||||
'pay' => 'https://gateway.95516.com/gateway/api/frontTransReq.do',
|
||||
'query' => 'https://gateway.95516.com/gateway/api/queryTrans.do',
|
||||
];
|
||||
|
||||
protected $url_list;
|
||||
|
||||
private $logger;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
$this->init();
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化部分参数
|
||||
*/
|
||||
private function init()
|
||||
{
|
||||
require_once app()->getRootPath() . '/extend/payment/unionpay/sdk/AcpService.php';
|
||||
$this->version = com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->version;
|
||||
$this->front_url = com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->frontUrl;
|
||||
$this->back_url = com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->backUrl;
|
||||
$this->signMethod = com\unionpay\acp\sdk\SDKConfig::getSDKConfig()->signMethod;
|
||||
// $this->url_list = $this->dev_url_list;
|
||||
$this->url_list = $this->prod_url_list;
|
||||
|
||||
$date = explode('-', date('Y-m-d'));
|
||||
$filepath = APP_PATH . 'Lib/pay/log/' . $date[0] . '-' . $date[1] . '/' . $date[2];
|
||||
$filename = $this->pay_type . '.log';
|
||||
import('ORG.Util.FileLog');
|
||||
$this->logger = new FileLog($filepath, $filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询支付状态
|
||||
* @param $pay_log === pay_log表记录
|
||||
*/
|
||||
public function query($pay_log)
|
||||
{
|
||||
$out_trade_no = $pay_log['out_trade_no'];
|
||||
$txnTime = date('YmdHis', strtotime($pay_log['create_time']));
|
||||
$this->bizType = $this->bizType_list['query'][$pay_log['pay_type']];
|
||||
$this->channelType = $this->channelType_list[$pay_log['source']];
|
||||
$params = [
|
||||
'version' => $this->version, //版本号
|
||||
'encoding' => $this->encoding, //编码方式
|
||||
'signMethod' => $this->signMethod, //签名方法
|
||||
'txnType' => '00', //交易类型
|
||||
'txnSubType' => '00', //交易子类
|
||||
'bizType' => '000000', //业务类型
|
||||
'accessType' => $this->accessType, //接入类型
|
||||
'channelType' => $this->channelType, //渠道类型
|
||||
|
||||
'orderId' => $out_trade_no, //请修改被查询的交易的订单号,8-32位数字字母,不能含“-”或“_”,此处默认取demo演示页面传递的参数
|
||||
'merId' => $this->merId, //商户代码,请改自己的测试商户号,此处默认取demo演示页面传递的参数
|
||||
'txnTime' => $txnTime, //请修改被查询的交易的订单发送时间,格式为YYYYMMDDhhmmss,此处默认取demo演示页面传递的参数
|
||||
];
|
||||
|
||||
com\unionpay\acp\sdk\AcpService::sign ( $params ); // 签名
|
||||
$url = $this->url_list['query'];
|
||||
|
||||
$this->logger->write('查询请求参数: ' . json_encode($params) . '=====url: ' . $url, 'suc');
|
||||
$result_arr = com\unionpay\acp\sdk\AcpService::post ( $params, $url);
|
||||
|
||||
if (count($result_arr) > 0 &&
|
||||
com\unionpay\acp\sdk\AcpService::validate ($result_arr) &&
|
||||
$result_arr["respCode"] == "00" &&
|
||||
$result_arr["origRespCode"] == "00"
|
||||
)
|
||||
{
|
||||
$this->logger->write('查询完成,交易成功,交易单号: ' . $out_trade_no, 'suc');
|
||||
return $result_arr;
|
||||
}
|
||||
|
||||
$this->logger->write('查询完成,交易失败,交易单号: ' . $out_trade_no);
|
||||
return false;
|
||||
}
|
||||
|
||||
private function http_success()
|
||||
{
|
||||
header("HTTP/1.1 200 OK");
|
||||
exit;
|
||||
}
|
||||
|
||||
private function http_fail()
|
||||
{
|
||||
header("HTTP/1.1 500 ERROR");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user