Commit f9a43093 by yeran

update some bugs

1 parent d05e5fdf
<?php
require_once __DIR__ . '/../../autoload.php';
use Payment\Common\PayException;
use Payment\Client\Charge;
use Payment\Config;
date_default_timezone_set('Asia/Shanghai');
$configStr = "{\"pay_var\":\"100\",\"pay_type\":\"010\",\"service_id\":\"015\",\"mch_id\":\"858100307000002\",\"merchant_no\":\"858100307000002\",\"terminal_id\":\"30055973\",\"sub_appid\":\"wx24863377e74518f8\",\"app_id\":\"wx24863377e74518f8\",\"limit_pay\":[\"\"],\"access_token\":\"bae3420022594dd9a14703f890765f9e\",\"notify_url\":\"http://www.ledian.com/payments/notify\",\"use_sandbox\":false,\"return_raw\":false}";
$config = json_decode($configStr,true);
// 订单信息
$payDataStr = "{\"terminal_trace\":\"20190327151722366145505357545320\",\"total_fee\":1,\"order_body\":\"支付测试\",\"open_id\":\"oUlAM0Wp1K1rJEGJ0t__Ls5-qFKE\",\"attach\":\"10054c238f670a2e9649a8b100f20562\"}";
$payData = json_decode($payDataStr,true);
try {
$ret = Charge::run(Config::SW_CHANNEL_LITE, $config, $payData);
} catch (PayException $e) {
echo $e->errorMessage();
exit;
}
echo json_encode($ret, JSON_UNESCAPED_UNICODE);
\ No newline at end of file
...@@ -138,8 +138,9 @@ abstract class BaseData ...@@ -138,8 +138,9 @@ abstract class BaseData
} else if($this->channel === Config::SW_PAY){ } else if($this->channel === Config::SW_PAY){
//添加令牌,参数由makesign函数自由控制 //添加令牌,参数由makesign函数自由控制
$values = ArrayUtil::removeKeys($data, ['key_sign']); $signData = $this->certainSignData??$data;
// $values = ArrayUtil::arraySort($values); $values = ArrayUtil::removeKeys($signData, ['key_sign']);
if($this->sign_sort) $values = ArrayUtil::arraySort($values);
$signStr = ArrayUtil::createLinkstring($values); $signStr = ArrayUtil::createLinkstring($values);
$this->makeSign($signStr); $this->makeSign($signStr);
......
...@@ -13,7 +13,9 @@ namespace Payment\Common\Sw\Data; ...@@ -13,7 +13,9 @@ namespace Payment\Common\Sw\Data;
*/ */
class BackBarChargeData extends SwBaseData class BackBarChargeData extends SwBaseData
{ {
protected function buildData(){
public function getData()
{
$this->retData['package'] = [ $this->retData['package'] = [
'channel_trade_no' => $this->channel_trade_no??'',//通道订单号,微信订单号、支付宝订单号等,返回时不参与签名 'channel_trade_no' => $this->channel_trade_no??'',//通道订单号,微信订单号、支付宝订单号等,返回时不参与签名
...@@ -36,6 +38,12 @@ class BackBarChargeData extends SwBaseData ...@@ -36,6 +38,12 @@ class BackBarChargeData extends SwBaseData
if($this->pay_type == '090'){//口碑实收金额,pay_type为090时必填 if($this->pay_type == '090'){//口碑实收金额,pay_type为090时必填
$this->retData['package']['receipt_fee'] = $this->receipt_fee; $this->retData['package']['receipt_fee'] = $this->receipt_fee;
} }
return parent::getData(); // TODO: Change the autogenerated stub
}
protected function buildData(){
} }
protected function checkDataParam() protected function checkDataParam()
......
...@@ -12,7 +12,8 @@ namespace Payment\Common\Sw\Data; ...@@ -12,7 +12,8 @@ namespace Payment\Common\Sw\Data;
*/ */
class BackFaceChargeData extends SwBaseData class BackFaceChargeData extends SwBaseData
{ {
protected function buildData()
public function getData()
{ {
$this->retData['package'] = [ $this->retData['package'] = [
'channel_trade_no' => $this->channel_trade_no??'',//通道订单号,微信订单号、支付宝订单号等,返回时不参与签名 'channel_trade_no' => $this->channel_trade_no??'',//通道订单号,微信订单号、支付宝订单号等,返回时不参与签名
...@@ -31,6 +32,13 @@ class BackFaceChargeData extends SwBaseData ...@@ -31,6 +32,13 @@ class BackFaceChargeData extends SwBaseData
'order_body' => $this->order_body??'', 'order_body' => $this->order_body??'',
'attach' => $this->attach??'', 'attach' => $this->attach??'',
]; ];
return parent::getData(); // TODO: Change the autogenerated stub
}
protected function buildData()
{
} }
protected function checkDataParam() protected function checkDataParam()
......
...@@ -12,7 +12,7 @@ namespace Payment\Common\Sw\Data; ...@@ -12,7 +12,7 @@ namespace Payment\Common\Sw\Data;
*/ */
class BackFaceInfoData extends SwBaseData class BackFaceInfoData extends SwBaseData
{ {
protected function buildData() public function getData()
{ {
$this->retData['package'] = [ $this->retData['package'] = [
'authinfo' => $this->authinfo??'',//微信、支付宝人脸识别SDK调用凭证 'authinfo' => $this->authinfo??'',//微信、支付宝人脸识别SDK调用凭证
...@@ -32,6 +32,13 @@ class BackFaceInfoData extends SwBaseData ...@@ -32,6 +32,13 @@ class BackFaceInfoData extends SwBaseData
if($this->pay_type == '020'){ //支付宝ZimInitClientData if($this->pay_type == '020'){ //支付宝ZimInitClientData
$this->retData['package']['zim_init'] = $this->zim_init; $this->retData['package']['zim_init'] = $this->zim_init;
} }
return parent::getData(); // TODO: Change the autogenerated stub
}
protected function buildData()
{
} }
protected function checkDataParam() protected function checkDataParam()
......
...@@ -13,9 +13,8 @@ use Payment\Common\PayException; ...@@ -13,9 +13,8 @@ use Payment\Common\PayException;
*/ */
class BackLiteChargeData extends SwBaseData class BackLiteChargeData extends SwBaseData
{ {
protected function buildData() public function getData()
{ {
$data = [];
switch ($this->pay_type){ switch ($this->pay_type){
case '010':{ //微信 case '010':{ //微信
$data = [ $data = [
...@@ -53,10 +52,21 @@ class BackLiteChargeData extends SwBaseData ...@@ -53,10 +52,21 @@ class BackLiteChargeData extends SwBaseData
'total_fee' => $this->total_fee, 'total_fee' => $this->total_fee,
'out_trade_no' => $this->out_trade_no 'out_trade_no' => $this->out_trade_no
]; ];
return parent::getData();
} }
protected function checkDataParam() protected function checkDataParam()
{ {
// 对于返回数据不做检查检查 // 对于返回数据不做检查检查
} }
/**
* 构建用于支付的签名相关数据
* @return array
*/
protected function buildData()
{
// TODO: Implement buildData() method.
}
} }
...@@ -15,7 +15,7 @@ namespace Payment\Common\Sw\Data; ...@@ -15,7 +15,7 @@ namespace Payment\Common\Sw\Data;
*/ */
class BackPubChargeData extends SwBaseData class BackPubChargeData extends SwBaseData
{ {
protected function buildData() public function getData()
{ {
$data = []; $data = [];
switch ($this->pay_type){ switch ($this->pay_type){
...@@ -50,6 +50,14 @@ class BackPubChargeData extends SwBaseData ...@@ -50,6 +50,14 @@ class BackPubChargeData extends SwBaseData
$this->retData['other'] = [ $this->retData['other'] = [
'out_trade_no' => $this->out_trade_no 'out_trade_no' => $this->out_trade_no
]; ];
return parent::getData(); // TODO: Change the autogenerated stub
}
protected function buildData()
{
} }
protected function checkDataParam() protected function checkDataParam()
......
...@@ -12,7 +12,8 @@ namespace Payment\Common\Sw\Data; ...@@ -12,7 +12,8 @@ namespace Payment\Common\Sw\Data;
*/ */
class BackRefundData extends SwBaseData class BackRefundData extends SwBaseData
{ {
protected function buildData()
public function getData()
{ {
$this->retData['package'] =[ $this->retData['package'] =[
'refund_fee' => $this->refund_fee,//退款金额,单位分 'refund_fee' => $this->refund_fee,//退款金额,单位分
...@@ -30,6 +31,14 @@ class BackRefundData extends SwBaseData ...@@ -30,6 +31,14 @@ class BackRefundData extends SwBaseData
'out_trade_no' => $this->out_trade_no, 'out_trade_no' => $this->out_trade_no,
// 'refund_fee' => $this->refund_fee,//退款金额,单位分 // 'refund_fee' => $this->refund_fee,//退款金额,单位分
]; ];
return parent::getData(); // TODO: Change the autogenerated stub
}
protected function buildData()
{
} }
protected function checkDataParam() protected function checkDataParam()
......
...@@ -13,7 +13,7 @@ use Payment\Common\PayException; ...@@ -13,7 +13,7 @@ use Payment\Common\PayException;
*/ */
class BackScanChargeData extends SwBaseData class BackScanChargeData extends SwBaseData
{ {
protected function buildData() public function getData()
{ {
$this->retData['qr_code'] = $this->qr_code;//二维码码串 $this->retData['qr_code'] = $this->qr_code;//二维码码串
$this->retData['other'] = [ $this->retData['other'] = [
...@@ -26,6 +26,14 @@ class BackScanChargeData extends SwBaseData ...@@ -26,6 +26,14 @@ class BackScanChargeData extends SwBaseData
'total_fee' => $this->total_fee, 'total_fee' => $this->total_fee,
'out_trade_no' => $this->out_trade_no 'out_trade_no' => $this->out_trade_no
]; ];
return parent::getData(); // TODO: Change the autogenerated stub
}
protected function buildData()
{
} }
protected function checkDataParam() protected function checkDataParam()
......
...@@ -13,9 +13,9 @@ use Payment\Common\PayException; ...@@ -13,9 +13,9 @@ use Payment\Common\PayException;
*/ */
class BackCancelData extends SwBaseData class BackCancelData extends SwBaseData
{ {
protected function buildData()
{
public function getData()
{
$this->retData['package'] = [ $this->retData['package'] = [
'recall' => $this->recall,//是否重新发起撤销 'recall' => $this->recall,//是否重新发起撤销
]; ];
...@@ -30,6 +30,12 @@ class BackCancelData extends SwBaseData ...@@ -30,6 +30,12 @@ class BackCancelData extends SwBaseData
'out_trade_no' => $this->out_trade_no 'out_trade_no' => $this->out_trade_no
]; ];
return parent::getData(); // TODO: Change the autogenerated stub
}
protected function buildData()
{
} }
protected function checkDataParam() protected function checkDataParam()
......
...@@ -12,9 +12,8 @@ namespace Payment\Common\Sw\Data; ...@@ -12,9 +12,8 @@ namespace Payment\Common\Sw\Data;
*/ */
class BackCloseData extends SwBaseData class BackCloseData extends SwBaseData
{ {
protected function buildData() public function getData()
{ {
$this->retData['package'] = [ $this->retData['package'] = [
'result_code' => $this->result_code,//"业务结果,01成功,表示关单成功,此笔订单不能再发起支付; 'result_code' => $this->result_code,//"业务结果,01成功,表示关单成功,此笔订单不能再发起支付;
]; ];
...@@ -26,6 +25,12 @@ class BackCloseData extends SwBaseData ...@@ -26,6 +25,12 @@ class BackCloseData extends SwBaseData
'terminal_time' => $this->terminal_time??'', 'terminal_time' => $this->terminal_time??'',
]; ];
return parent::getData(); // TODO: Change the autogenerated stub
}
protected function buildData()
{
} }
protected function checkDataParam() protected function checkDataParam()
......
...@@ -26,7 +26,7 @@ class CancelData extends ChargeBaseData ...@@ -26,7 +26,7 @@ class CancelData extends ChargeBaseData
protected function buildData(){ protected function buildData(){
$signData = [ $this->certainSignData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
'pay_type' => trim($this->pay_type), 'pay_type' => trim($this->pay_type),
...@@ -35,10 +35,10 @@ class CancelData extends ChargeBaseData ...@@ -35,10 +35,10 @@ class CancelData extends ChargeBaseData
'terminal_id' => $this->terminal_id, 'terminal_id' => $this->terminal_id,
'terminal_trace' => $this->terminal_trace, 'terminal_trace' => $this->terminal_trace,
'terminal_time' => $this->terminal_time, 'terminal_time' => $this->terminal_time,
// 'total_fee' => $this->total_fee, // 金额,单位分 ];
$signData = array_merge($this->certainSignData,[]);
];
if(isset($this->out_trade_no)){ if(isset($this->out_trade_no)){
$signData['out_trade_no'] = $this->out_trade_no; $signData['out_trade_no'] = $this->out_trade_no;
} }
......
...@@ -25,7 +25,7 @@ class CloseData extends ChargeBaseData ...@@ -25,7 +25,7 @@ class CloseData extends ChargeBaseData
protected function buildData(){ protected function buildData(){
$signData = [ $this->certainSignData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
'pay_type' => trim($this->pay_type),//010微信,020支付宝,000自动识别类型 'pay_type' => trim($this->pay_type),//010微信,020支付宝,000自动识别类型
...@@ -36,6 +36,9 @@ class CloseData extends ChargeBaseData ...@@ -36,6 +36,9 @@ class CloseData extends ChargeBaseData
'terminal_time' => $this->terminal_time, 'terminal_time' => $this->terminal_time,
]; ];
$signData = array_merge($this->certainSignData,[]);
if(isset($this->out_trade_no) && !empty($this->out_trade_no)){ if(isset($this->out_trade_no) && !empty($this->out_trade_no)){
//利楚唯一订单号,优先使用订单号out_trade_no发起撤销, //利楚唯一订单号,优先使用订单号out_trade_no发起撤销,
//在out_trade_no获取异常的情况,可使用当前支付请求的终端交易流水号pay_trace和终端交易时间pay_time发起撤销 //在out_trade_no获取异常的情况,可使用当前支付请求的终端交易流水号pay_trace和终端交易时间pay_time发起撤销
......
...@@ -38,7 +38,7 @@ class BarChargeData extends ChargeBaseData ...@@ -38,7 +38,7 @@ class BarChargeData extends ChargeBaseData
*/ */
protected function buildData() protected function buildData()
{ {
$signData = [ $this->certainSignData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
'pay_type' => trim($this->pay_type), 'pay_type' => trim($this->pay_type),
...@@ -50,9 +50,8 @@ class BarChargeData extends ChargeBaseData ...@@ -50,9 +50,8 @@ class BarChargeData extends ChargeBaseData
'auth_no' =>$this->auth_no,//授权码,客户的付款码 'auth_no' =>$this->auth_no,//授权码,客户的付款码
'total_fee' => $this->total_fee, // 金额,单位分 'total_fee' => $this->total_fee, // 金额,单位分
]; ];
$signData = array_merge($this->certainSignData,[]);
if(isset($this->sub_appid)){ if(isset($this->sub_appid)){
$signData['sub_appid'] = $this->sub_appid; $signData['sub_appid'] = $this->sub_appid;
} }
......
...@@ -35,6 +35,8 @@ class FaceChargeData extends ChargeBaseData ...@@ -35,6 +35,8 @@ class FaceChargeData extends ChargeBaseData
protected function buildData() protected function buildData()
{ {
$this->sign_sort = true;//需要按照字典排序
$signData = [ $signData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
......
...@@ -33,6 +33,8 @@ class FaceInfoData extends ChargeBaseData ...@@ -33,6 +33,8 @@ class FaceInfoData extends ChargeBaseData
protected function buildData() protected function buildData()
{ {
$this->sign_sort = true;
$signData = [ $signData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
......
...@@ -35,7 +35,7 @@ class LiteChargeData extends ChargeBaseData ...@@ -35,7 +35,7 @@ class LiteChargeData extends ChargeBaseData
protected function buildData() protected function buildData()
{ {
$signData = [ $this->certainSignData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
'pay_type' => trim($this->pay_type), 'pay_type' => trim($this->pay_type),
...@@ -49,6 +49,9 @@ class LiteChargeData extends ChargeBaseData ...@@ -49,6 +49,9 @@ class LiteChargeData extends ChargeBaseData
// 'time_expire' => $this->timeout_express, // 'time_expire' => $this->timeout_express,
]; ];
$signData = array_merge($this->certainSignData,[]);
if(isset($this->sub_appid)){ if(isset($this->sub_appid)){
$signData['sub_appid'] = $this->sub_appid; $signData['sub_appid'] = $this->sub_appid;
} }
......
...@@ -37,7 +37,7 @@ class PubChargeData extends ChargeBaseData ...@@ -37,7 +37,7 @@ class PubChargeData extends ChargeBaseData
protected function buildData() protected function buildData()
{ {
$signData = [ $this->certainSignData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
'pay_type' => trim($this->pay_type), 'pay_type' => trim($this->pay_type),
...@@ -49,8 +49,10 @@ class PubChargeData extends ChargeBaseData ...@@ -49,8 +49,10 @@ class PubChargeData extends ChargeBaseData
'total_fee' => $this->total_fee, // 金额,单位分 'total_fee' => $this->total_fee, // 金额,单位分
// 'time_expire' => $this->timeout_express, // 'time_expire' => $this->timeout_express,
]; ];
$signData = array_merge($this->certainSignData,[]);
if(isset($this->sub_appid)){ if(isset($this->sub_appid)){
$signData['sub_appid'] = $this->sub_appid; $signData['sub_appid'] = $this->sub_appid;
} }
......
...@@ -35,7 +35,7 @@ class ScanChargeData extends ChargeBaseData ...@@ -35,7 +35,7 @@ class ScanChargeData extends ChargeBaseData
*/ */
protected function buildData() protected function buildData()
{ {
$signData = [ $this->certainSignData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
'pay_type' => trim($this->pay_type), 'pay_type' => trim($this->pay_type),
...@@ -49,12 +49,13 @@ class ScanChargeData extends ChargeBaseData ...@@ -49,12 +49,13 @@ class ScanChargeData extends ChargeBaseData
// 'time_expire' => $this->timeout_express, // 'time_expire' => $this->timeout_express,
]; ];
$signData = array_merge($this->certainSignData,[]);
if(isset($this->sub_appid)){ if(isset($this->sub_appid)){
$signData['sub_appid'] = $this->sub_appid; $signData['sub_appid'] = $this->sub_appid;
} }
// if(isset($this->open_id)){
// $signData['open_id'] = $this->open_id;
// }
if(isset($this->order_body)){ if(isset($this->order_body)){
$signData['order_body'] = $this->order_body; $signData['order_body'] = $this->order_body;
} }
......
...@@ -42,7 +42,7 @@ class ChargeQueryData extends SwBaseData ...@@ -42,7 +42,7 @@ class ChargeQueryData extends SwBaseData
protected function buildData(){ protected function buildData(){
$signData = [ $this->certainSignData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
'pay_type' => trim($this->pay_type), 'pay_type' => trim($this->pay_type),
...@@ -51,9 +51,12 @@ class ChargeQueryData extends SwBaseData ...@@ -51,9 +51,12 @@ class ChargeQueryData extends SwBaseData
'terminal_id' => $this->terminal_id, 'terminal_id' => $this->terminal_id,
'terminal_trace'=> $this->terminal_trace,//终端查询流水号,填写商户系统的查询流水号 'terminal_trace'=> $this->terminal_trace,//终端查询流水号,填写商户系统的查询流水号
'terminal_time' => $this->terminal_time, 'terminal_time' => $this->terminal_time,
'out_trade_no' => $this->out_trade_no
]; ];
$signData = array_merge($this->certainSignData,[]);
if(isset($this->pay_trace)){//用户标识(微信openid),用于调起微信刷脸SDK if(isset($this->pay_trace)){//用户标识(微信openid),用于调起微信刷脸SDK
$signData['pay_trace'] = $this->pay_trace; $signData['pay_trace'] = $this->pay_trace;
} }
...@@ -61,7 +64,7 @@ class ChargeQueryData extends SwBaseData ...@@ -61,7 +64,7 @@ class ChargeQueryData extends SwBaseData
$signData['pay_time'] = $this->pay_time; $signData['pay_time'] = $this->pay_time;
} }
$signData['out_trade_no'] = $this->out_trade_no; // 金额,单位分
$this->retData = ArrayUtil::paraFilter($this->retData); $this->retData = ArrayUtil::paraFilter($this->retData);
} }
......
...@@ -42,10 +42,9 @@ class RefundData extends SwBaseData ...@@ -42,10 +42,9 @@ class RefundData extends SwBaseData
} }
} }
protected function buildData(){ protected function buildData(){
$signData = [ $this->certainSignData = [
// 基本数据 // 基本数据
'pay_ver' => trim($this->pay_ver), 'pay_ver' => trim($this->pay_ver),
'pay_type' => trim($this->pay_type), 'pay_type' => trim($this->pay_type),
...@@ -58,6 +57,8 @@ class RefundData extends SwBaseData ...@@ -58,6 +57,8 @@ class RefundData extends SwBaseData
'out_trade_no' => $this->out_trade_no,//订单号,查询凭据,利楚订单号、微信订单号、支付宝订单号任意一个 'out_trade_no' => $this->out_trade_no,//订单号,查询凭据,利楚订单号、微信订单号、支付宝订单号任意一个
]; ];
$signData = array_merge($this->certainSignData,[]);
if(isset($this->pay_trace)){//当前支付终端流水号,与pay_time同时传递 if(isset($this->pay_trace)){//当前支付终端流水号,与pay_time同时传递
$signData['pay_trace'] = $this->pay_trace; $signData['pay_trace'] = $this->pay_trace;
} }
......
...@@ -24,6 +24,9 @@ final class SwConfig extends ConfigInterface ...@@ -24,6 +24,9 @@ final class SwConfig extends ConfigInterface
public $terminal_time;//终端交易时间,yyyyMMddHHmmss,全局统一时间格式 public $terminal_time;//终端交易时间,yyyyMMddHHmmss,全局统一时间格式
public $certainSignData = null;//专门用于签名的数组
public $sign_sort = false;//签名是否需要字典排序
// 指定回调页面 // 指定回调页面
public $notify_url; public $notify_url;
...@@ -129,6 +132,10 @@ final class SwConfig extends ConfigInterface ...@@ -129,6 +132,10 @@ final class SwConfig extends ConfigInterface
$this->attach = trim($config['attach']); $this->attach = trim($config['attach']);
} }
if (key_exists('access_token', $config)) {
$this->access_token = trim($config['access_token']);
}
// 设置交易开始时间 格式为yyyyMMddHHmmss,在次之前一定要设置时区 // 设置交易开始时间 格式为yyyyMMddHHmmss,在次之前一定要设置时区
$startTime = time(); $startTime = time();
$this->terminal_time = date('YmdHis', $startTime); $this->terminal_time = date('YmdHis', $startTime);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!