diff --git a/extend/payment/AlipayAncient.php b/extend/payment/AlipayAncient.php
deleted file mode 100755
index 5144a76fe..000000000
--- a/extend/payment/AlipayAncient.php
+++ /dev/null
@@ -1,487 +0,0 @@
-config = $params;
- }
-
- /**
- * 配置信息
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @date 2018-09-19
- * @desc description
- */
- public function Config()
- {
- // 基础信息
- $base = [
- 'name' => '支付宝', // 插件名称
- 'version' => '0.0.1', // 插件版本
- 'apply_version' => '不限', // 适用系统版本描述
- 'apply_terminal'=> ['pc','h5'], // 适用终端 默认全部 ['pc', 'h5', 'app', 'alipay', 'weixin', 'baidu']
- 'desc' => '1.0版本,适用PC+H5,即时到帐支付方式,买家的交易资金直接打入卖家支付宝账户,快速回笼交易资金。 立即申请', // 插件描述(支持html)
- 'author' => 'Devil', // 开发者
- 'author_url' => 'http://shopxo.net/', // 开发者主页
- ];
-
- // 配置信息
- $element = [
- [
- 'element' => 'input',
- 'type' => 'text',
- 'default' => '',
- 'name' => 'account',
- 'placeholder' => '支付宝账号',
- 'title' => '支付宝账号',
- 'is_required' => 0,
- 'message' => '请填写支付宝账号',
- ],
- [
- 'element' => 'input',
- 'type' => 'text',
- 'default' => '',
- 'name' => 'partner',
- 'placeholder' => '合作者身份 partner ID',
- 'title' => '合作者身份 partner ID',
- 'is_required' => 0,
- 'message' => '请填写合作者身份 partner ID',
- ],
- [
- 'element' => 'input',
- 'type' => 'text',
- 'default' => '',
- 'name' => 'key',
- 'placeholder' => '交易安全校验码 key',
- 'title' => '交易安全校验码 key',
- 'is_required' => 0,
- 'message' => '请填写交易安全校验码 key',
- ],
- // [
- // 'element' => 'input', // 表单标签
- // 'type' => 'text', // input类型
- // 'default' => '', // 默认值
- // 'name' => 'testinput', // name名称
- // 'placeholder' => '测试输入框不需要验证', // input默认显示文字
- // 'title' => '测试输入框不需要验证', // 展示title名称
- // 'is_required' => 0, // 是否需要强制填写/选择
- // 'message' => '请填写测试输入框不需要验证', // 错误提示(is_required=1方可有效)
- // ],
- // [
- // 'element' => 'textarea',
- // 'default' => '',
- // 'name' => 'rsa_private',
- // 'placeholder' => 'RSA证书',
- // 'title' => 'RSA证书',
- // 'is_required' => 0,
- // 'minlength' => 10, // 最小输入字符(is_required=1方可有效)
- // //'maxlength' => 300, // 最大输入字符, 填则不限(is_required=1方可有效)
- // 'rows' => 6,
- // ],
- // [
- // 'element' => 'input',
- // 'type' => 'checkbox',
- // 'element_data' => [
- // ['value'=>1, 'name'=>'选项1'],
- // ['value'=>2, 'name'=>'选项2',],
- // ['value'=>3, 'name'=>'选项3'],
- // ['value'=>4, 'name'=>'选项4']
- // ],
- // 'is_block' => 1, // 是否每个选项行内展示(默认0)
- // 'minchecked' => 2, // 最小选项(默认以is_required=1至少一项,则0)
- // 'maxchecked' => 3, // 最大选项
- // 'name' => 'checkbox',
- // 'title' => '多选项测试', // 展示title名称
- // 'is_required' => 1, // 是否需要强制填写/选择
- // 'message' => '请选择多选项测试选择 至少选择2项最多选择3项', // 错误提示信息
- // ],
- // [
- // 'element' => 'input',
- // 'type' => 'radio',
- // 'element_data' => [
- // ['value'=>1, 'name'=>'选项1',],
- // ['value'=>2, 'name'=>'选项2'],
- // ['value'=>3, 'name'=>'选项3'],
- // ['value'=>4, 'name'=>'选项4']
- // ],
- // 'is_block' => 1, // 是否每个选项行内展示(默认0)
- // 'name' => 'radio',
- // 'title' => '单选项测试', // 展示title名称
- // 'is_required' => 1, // 是否需要强制填写/选择
- // 'message' => '请选择单选项测试',
- // ],
- // [
- // 'element' => 'select',
- // 'placeholder' => '选一个撒1',
- // 'is_multiple' => 0, // 是否开启多选(默认0 关闭)
- // 'element_data' => [
- // ['value'=>1, 'name'=>'选项1'],
- // ['value'=>2, 'name'=>'选项2'],
- // ['value'=>3, 'name'=>'选项3'],
- // ['value'=>4, 'name'=>'选项4']
- // ],
- // 'name' => 'select1',
- // 'title' => '下拉单选测试', // 展示title名称
- // 'is_required' => 1, // 是否需要强制填写/选择
- // 'message' => '请选择下拉单选测试',
- // ],
- // [
- // 'element' => 'select',
- // 'placeholder' => '选一个撒2',
- // 'is_multiple' => 1, // 是否开启多选(默认0 关闭)
- // 'element_data' => [
- // ['value'=>1, 'name'=>'选项1'],
- // ['value'=>2, 'name'=>'选项2'],
- // ['value'=>3, 'name'=>'选项3'],
- // ['value'=>4, 'name'=>'选项4']
- // ],
- // 'minchecked' => 2, // 最小选项(默认以is_required=1至少一项,则0)
- // 'maxchecked' => 3, // 最大选项
- // 'name' => 'select2',
- // 'title' => '下拉多选测试', // 展示title名称
- // 'is_required' => 1, // 是否需要强制填写/选择
- // 'message' => '请选择下拉多选测试 至少选择2项最多选择3项',
- // ],
- ];
-
- return [
- 'base' => $base,
- 'element' => $element,
- ];
- }
-
- /**
- * 支付入口
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @date 2018-09-19
- * @desc description
- * @param [array] $params [输入参数]
- */
- public function Pay($params = [])
- {
- // 参数
- if(empty($params))
- {
- return DataReturn('参数不能为空', -1);
- }
-
- // 配置信息
- if(empty($this->config))
- {
- return DataReturn('支付缺少配置', -1);
- }
-
- // 手机/PC
- if(IsMobile())
- {
- $ret = $this->PayMobile($params);
- } else {
- $ret = $this->PayWeb($params);
- }
- return $ret;
- }
-
- /**
- * [PayMobile wap手机支付]
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @datetime 2018-09-28T00:41:09+0800
- * @param [array] $params [输入参数]
- */
- private function PayMobile($params = [])
- {
- // 获取请求token
- $ret = $this->GetRequestToken($params);
- if($ret['code'] != 0)
- {
- return $ret;
- }
-
- // 拼接wap数据
- $req_data = ''.$ret['data'].'';
- $parameter = array(
- 'service' => 'alipay.wap.auth.authAndExecute',
- 'format' => 'xml',
- 'v' => '2.0',
- 'partner' => $this->config['partner'],
- 'sec_id' => 'MD5',
- 'req_data' => $req_data,
- 'request_token' => $ret['data']
- );
-
- $param = $this->GetParamSign($parameter);
- $url = 'http://wappaygw.alipay.com/service/rest.htm?'.$param['urlcode'].'&sign='.md5($param['sign']);
- return DataReturn('处理成功', 0, $url);
- }
-
- /**
- * [GetRequestToken 获取临时token]
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @datetime 2018-09-28T00:43:36+0800
- * @param [array] $params [输入参数]
- */
- private function GetRequestToken($params = [])
- {
- $parameter = array(
- 'service' => 'alipay.wap.trade.create.direct',
- 'format' => 'xml',
- 'v' => '2.0',
- 'partner' => $this->config['partner'],
- 'req_id' => $params['order_no'],
- 'sec_id' => 'MD5',
- 'req_data' => $this->GetReqData($params),
- 'subject' => $params['name'],
- 'out_trade_no' => $params['order_no'],
- 'total_fee' => $params['total_price'],
- 'seller_account_name' => $this->config['account'],
- 'call_back_url' => $params['call_back_url'],
- 'notify_url' => $params['notify_url'],
- 'out_user' => $params['out_user'],
- 'merchant_url' => isset($params['merchant_url']) ? $params['merchant_url'] : $params['call_back_url'],
- );
-
- $param = $this->GetParamSign($parameter);
- $ret = urldecode(file_get_contents('http://wappaygw.alipay.com/service/rest.htm?'.$param['urlcode'].'&sign='.md5($param['sign'])));
-
- // 把切割后的字符串数组变成变量与数值组合的数组
- $para_split = explode('&',$ret);
- $para_text = [];
- foreach($para_split as $item)
- {
- //获得第一个=字符的位置
- $npos = strpos($item, '=');
- //获得字符串长度
- $nlen = strlen($item);
- //获得变量名
- $key = substr($item, 0, $npos);
- //获得数值
- $value = substr($item, $npos+1, $nlen-$npos-1);
- //放入数组中
- $para_text[$key] = $value;
- }
- if(empty($para_text['res_data']))
- {
- return DataReturn('支付宝异常错误', -1);
- }
-
- $req = Xml_Array($para_text['res_data']);
- if(empty($req['request_token']))
- {
- return DataReturn('支付宝异常错误', -1);
- }
- return DataReturn('处理成功', 0, $req['request_token']);
- }
-
- /**
- * [GetReqData 订单信息拼接]
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @datetime 2018-09-28T00:46:02+0800
- * @param [array] $params [输入参数]
- */
- private function GetReqData($params = [])
- {
- return '
- '.$params['name'].'
- '.$params['order_no'].'
- '.$params['total_price'].'
- '.$this->config['account'].'
- '.$params['call_back_url'].'
- '.$params['notify_url'].'
- '.$params['out_user'].'
- '.(isset($params['merchant_url']) ? $params['merchant_url'] : $params['call_back_url']).'
- 3600
- 0
- ';
- }
-
- /**
- * [PayWeb PC支付]
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @datetime 2018-09-28T00:23:04+0800
- * @param [array] $params [输入参数]
- */
- private function PayWeb($params = [])
- {
- $parameter = array(
- 'service' => 'create_direct_pay_by_user',
- 'partner' => $this->config['partner'],
- '_input_charset' => 'utf-8',
- 'notify_url' => $params['notify_url'],
- 'return_url' => $params['call_back_url'],
-
- /* 业务参数 */
- 'subject' => $params['name'],
- 'out_trade_no' => $params['order_no'],
- 'price' => $params['total_price'],
-
- 'quantity' => 1,
- 'payment_type' => 1,
-
- /* 物流参数 */
- // 'logistics_type' => 'EXPRESS',
- // 'logistics_fee' => 0,
- // 'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE',
-
- /* 买卖双方信息 */
- 'seller_email' => $this->config['account'],
- );
-
- $param = $this->GetParamSign($parameter);
- $url = 'https://mapi.alipay.com/gateway.do?'.$param['urlcode'].'&sign='.md5($param['sign']).'&sign_type=MD5';
- return DataReturn('处理成功', 0, $url);
- }
-
- /**
- * [GetParamSign 签名生成]
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @datetime 2018-09-28T00:28:07+0800
- * @param [array] $params [输入参数]
- */
- private function GetParamSign($params = [])
- {
- $urlcode = '';
- $url = '';
- ksort($params);
-
- foreach($params AS $key => $val)
- {
- $urlcode .= "$key=" .urlencode($val). "&";
- $url .= "$key=$val&";
- }
-
- $result = array(
- 'urlcode' => substr($urlcode, 0, -1),
- 'url' => substr($url, 0, -1),
- 'sign' => '',
- );
- if(!empty($this->config['key']))
- {
- $result['sign'] = $result['url'].$this->config['key'];
- }
- return $result;
- }
-
- /**
- * 支付回调处理
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @date 2018-09-19
- * @desc description
- * @param [array] $params [输入参数]
- */
- public function Respond($params = [])
- {
- if(empty($this->config))
- {
- return DataReturn('配置有误', -1);
- }
-
- $data = empty($_POST) ? $_GET : array_merge($_GET, $_POST);
- ksort($data);
-
- $sign = '';
- if(isset($data['sec_id']) && $data['sec_id'] == 'MD5')
- {
- $data_xml = json_decode(json_encode((array) simplexml_load_string($data['notify_data'])), true);
- $data = array_merge($data, $data_xml);
- $sign = 'service='.$data['service'].'&v='.$data['v'].'&sec_id='.$data['sec_id'].'¬ify_data='.$data['notify_data'];
- } else {
- foreach($data AS $key=>$val)
- {
- if ($key != 'sign' && $key != 'sign_type' && $key != 'code')
- {
- $sign .= "$key=$val&";
- }
- }
- $sign = substr($sign, 0, -1);
- }
-
- // 签名校验
- if(!isset($data['sign']) || md5($sign.$this->config['key']) != $data['sign'])
- {
- return DataReturn('签名校验失败', -1);
- }
-
- // 支付状态
- $status = isset($data['trade_status']) ? $data['trade_status'] : $data['result'];
- switch($status)
- {
- case 'TRADE_SUCCESS':
- case 'TRADE_FINISHED':
- case 'success':
- return DataReturn('支付成功', 0, $this->ReturnData($data));
- break;
- }
- return DataReturn('处理异常错误', -100);
- }
-
- /**
- * [ReturnData 返回数据统一格式]
- * @author Devil
- * @blog http://gong.gg/
- * @version 1.0.0
- * @datetime 2018-10-06T16:54:24+0800
- * @param [array] $data [返回数据]
- */
- private function ReturnData($data)
- {
- // 兼容web版本支付参数
- $buyer_user = isset($data['buyer_logon_id']) ? $data['buyer_logon_id'] : (isset($data['buyer_email']) ? $data['buyer_email'] : '');
- $pay_price = isset($data['total_amount']) ? $data['total_amount'] : (isset($data['total_fee']) ? $data['total_fee'] : '');
-
- // 返回数据固定基础参数
- $data['trade_no'] = isset($data['trade_no']) ? $data['trade_no'] : ''; // 支付平台 - 订单号
- $data['buyer_user'] = $buyer_user; // 支付平台 - 用户
- $data['out_trade_no'] = isset($data['out_trade_no']) ? $data['out_trade_no'] : ''; // 本系统发起支付的 - 订单号
- $data['subject'] = isset($data['subject']) ? $data['subject'] : ''; // 本系统发起支付的 - 商品名称
- $data['pay_price'] = $pay_price; // 本系统发起支付的 - 总价
-
- return $data;
- }
-}
-?>
\ No newline at end of file