Commit daec9f86 authored by 蔡闯's avatar 蔡闯

支付异步回调

parent 75a10dbf
......@@ -15,8 +15,9 @@ class Payorder extends Base
//获取是业主身份的房间
$vacancys = Db::name('house_user_bind')->alias('hub')
->rightJoin('house_vacancy hv','hv.vacancy_id = hub.vacancy_id')
->rightJoin('house_village hvi','hvi.village_id = hv.village_id')
->where(['hub.type'=>0,'hub.status'=>1])
->field('hub.house_user_bind_id,hv.vacancy_id,hv.vacancy_code,hv.layout_id')
->field('hub.house_user_bind_id,hv.vacancy_id,hv.vacancy_code,hv.layout_id,hvi.village_name')
->select()->toArray();
if($vacancys) {
$convertArr = $this->convertArr;
......@@ -195,19 +196,17 @@ class Payorder extends Base
public function createOrder(){
$vacancy_id = Request::param('vacancy_id');
$bind_id = Request::param('bind_id');
$all_cost_arr = Request::param('cost_ids');
foreach ($all_cost_arr as $k => $v) {
$cost_ids = Request::param('cost_ids');
//验证物业费订单是否是连续的
$where['type'] = 'property';
$where['is_pay'] = 0;
$where['vacancy_id'] = $v['vacancy_id'];
$property_cost_ids = Db::name('cost')->where($where)->whereIn('cost_id',$cost_ids)->column('cost_id'); //上传的未缴物业费的连续cost_id
$limit = count($property_cost_ids);
$cost_property_ids = Db::name('cost')->where($where)->limit($limit)->column('cost_id');
if($cost_property_ids != $property_cost_ids) {
return $this->returnJson([],'物业费缴费必须连续!');
}
$cost_ids = Request::param('cost_ids');
//验证物业费订单是否是连续的
$where['type'] = 'property';
$where['is_pay'] = 0;
$where['vacancy_id'] = $vacancy_id;
$property_cost_ids = Db::name('cost')->where($where)->whereIn('cost_id',$cost_ids)->column('cost_id'); //上传的未缴物业费的连续cost_id
$limit = count($property_cost_ids);
$cost_property_ids = Db::name('cost')->where($where)->limit($limit)->column('cost_id');
if($cost_property_ids != $property_cost_ids) {
return $this->returnJson([],'物业费缴费必须连续!');
}
$total_money = Request::param('total_money',0);
......@@ -252,9 +251,7 @@ class Payorder extends Base
//根据房间id获取当前的物业id和小区id
public function getProperty($vacancy_id) {
$data = Db::name('house_vacancy')->alias('hv')->leftJoin('house_village hvi','hvi.village_id = hv.village_id')->where(['hv.vacancy_id'=>$vacancy_id])->field('hvi.village_id,hvi.property_id')->find();
if($data){
return ['code'=>200,'data'=>$data];
} else {
......@@ -279,6 +276,8 @@ class Payorder extends Base
$param['subject'] = $orderInfo['order_name'];
$param['total_amount'] = floatval($orderInfo['money']);
$res= $this->getAliPaySign($param);
Db::name('pay_order')->where(['order_id'=>$order_id])->save(['pay_type'=>"支付宝"]);
//微信支付
} else {
$param['order_id'] = $orderInfo['order_id'];
......@@ -286,6 +285,8 @@ class Payorder extends Base
$param['order_name'] = $orderInfo['order_name'];
$param['order_num'] = $orderInfo['order_num'];
$res= $this->getWeiXinPaySign($param);
//更改订单的支付方式
Db::name('pay_order')->where(['order_id'=>$order_id])->save(['pay_type'=>"微信"]);
}
return $this->returnJson($res);
} else {
......@@ -299,14 +300,14 @@ class Payorder extends Base
require_once "../extend/aliPay/AopClient.php";
require_once "../extend/aliPay/request/AlipayTradeAppPayRequest.php";
$aop = new \AopClient();
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
// $aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
// $aop->apiVersion = '1.0';
// $aop->postCharset = 'utf-8';
// $aop->format = 'json';
$aop->appId = config('app.pay_alipay_appid');
$aop->rsaPrivateKey = config('app.pay_alipay_merchant_private_key');
$aop->alipayrsaPublicKey = config('app.pay_alipay_public_key');
$aop->apiVersion = '1.0';
$aop->signType = config('app.pay_alipay_sign_type');
$aop->postCharset = 'utf-8';
$aop->format = 'json';
$request = new \AlipayTradeAppPayRequest();
$request->setNotifyUrl(config('app.notifyurl'));
$request->setBizContent(json_encode($param));
......@@ -322,7 +323,6 @@ class Payorder extends Base
$configArr['notifyurl'] = config('app.notifyurl');
$weixin = new \Weixin($param,$configArr);
return $weixin->pay();
}
//检查订单是否合法
......
<?php
namespace app\api\controller;
use app\BaseController;
class Payreturn extends BaseController
{
//支付成功后的异步通知地址
public function payReturn() {
}
<?php
namespace app\api\controller;
use app\BaseController;
use think\facade\Db;
class Payreturn extends BaseController
{
//支付宝支付成功后的异步通知地址
public function aliPayReturn() {
require_once "../extend/aliPay/AopClient.php";
//生成日志
$this->createPayLog($_POST,"支付宝");
$aop = new \AopClient();
$public_key = config('app.pay_alipay_public_key');
$aop->alipayrsaPublicKey = $public_key;
$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");
if($flag){
if($this->changePayStatus($_POST['out_trade_no'])){
die('success');
}
}
die('fail');
}
//微信 值后的异步通知地址
public function weiXinPayReturn(){
$testxml = file_get_contents("php://input");
$jsonxml = json_encode(simplexml_load_string($testxml, 'SimpleXMLElement', LIBXML_NOCDATA));
$result = json_decode($jsonxml, true);
$this->createPayLog($result,"微信");
if($result){
//如果成功返回了
if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS'){
if($this->changePayStatus($result['out_trade_no'])){
die("<xml>
<return_code><![CDATA[SUCCESS]]></return_code>
<return_msg><![CDATA[OK]]></return_msg>
</xml>");
}
}
}
}
//根据获取到的订单id,更改状态
private function changePayStatus($out_trade_no) {
$where['order_num'] = $out_trade_no;
$save['pay_time'] = time();
$save['paid'] = 1;
$cost_ids = DB::name('pay_order')->where(['order_num'=>$out_trade_no])->value('cost_ids');
$cost_ids_arr = json_decode($cost_ids);
Db::startTrans();
try{
Db::name('pay_order')->where($where)->save($save);
Db::name('cost')->where('cost_id','in',$cost_ids_arr)->save($save);
Db::commit();
return true;
}catch(\Exception $e){
Db::rollback();
return false;
}
}
public function createPayLog($data,$type){
$save['create_time'] = time();
$save['data'] = json_encode($data);
$save['type'] = $type;
$save['out_trade_no'] = $data['out_trade_no'];
Db::name('pay_log')->insert($save);
}
}
\ No newline at end of file
<?php
// +----------------------------------------------------------------------
// | 应用设置
// +----------------------------------------------------------------------
return [
// 应用地址
'app_host' => env('app.host', ''),
// 应用的命名空间
'app_namespace' => '',
// 是否启用路由
'with_route' => true,
// 默认应用模块
'default_app' => 'admin',
// 默认时区
'default_timezone' => 'Asia/Shanghai',
// 应用映射(自动多应用模式有效)
'app_map' => [],
// 域名绑定(自动多应用模式有效)
'domain_bind' => [],
// 禁止URL访问的应用列表(自动多应用模式有效)
'deny_app_list' => [],
// 异常页面的模板文件
'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl',
// 错误显示信息,非调试模式有效
'error_message' => '页面错误!请稍后再试~',
// 显示错误信息
'show_error_msg' => false,
//接口数据分页
'limit' => 15,
//登入验证
'open_check' =>true,
//token加密的key
'jwt_key' => 'zhihuishequ',
//支付宝支付相关参数
'pay_alipay_sign_type'=>'RSA2',
'pay_alipay_appid'=>'2021002110635559',
'pay_alipay_open'=>'1',
//应用私钥
'pay_alipay_merchant_private_key'=>'MIIEogIBAAKCAQEAvrbXi8/ePxzFfIOcF5flf/YILuW0q7OVt+9jHZoSn/dkY6J7mYNate4tYq+QhPtBm7dKDu9WqF9nTKnwgoDBdZdDwudANDYNxBLS+Wpa03l/FpgJCSGe6ZAfb9EXKbOpkYMyKqWpFPF1261vwb0xYRgMZGeGXphGHTaXpFyHj9hR0WxAxHQVGFJeJP4S3SswI7klK9ASd2a1PzGad2XVT/MQUseNMKsHl32tklhU/qjLYsmOJb4w79gySKDC85mFAgL6KyVVKW0juroIRb1IxLUYEBUwChzQf3r+0TJ6fJ9yGh19lKS5pS4Hr/AZbA5wX+PBMe7H4nODlGGkPXhUCwIDAQABAoIBADVp2jajMli0wy7bYXVOKo3LJ4GS/iX0tyL73eOlij/ZNvmcwUc+fcJkgbuY9j34bOiizhAewkOH7NOQ6PZz/zri8ax9vgKhfPuEVihavDNsXMbEMAupqes6XUOg6P7Z/czuVLeTDCb8dYjgK2O0jEboSFg6kmyd800tRA1ZiPIlJI9vRmea8PsTLWhkU1einClBCqIUTyxN3Ecm3cms1lFH6H+IMevrzTyISOkCjwqq6KtU+mEMJi0HtHyVqqXZFOhQjHq9Pd00lDzz5m2064gPk5J5NpqEdvfO4WmFZrmQbVB8vmKkFvr5dfzKhU1U/ju8WeqtjgdRlkDUf4G9s0kCgYEA8RemXJDxF3u/eLnx1SaIkGftsxScV0ZEo1qZVlnPLhnzenhlEWtnGd6uPMFBBv3QsaCWoSg1d0igf5Pgb3B3PtLbsig9tARsjWNMUflizpVYVEYGrAUgRYdqDTK3Twdl1/AzW0Ep83+9FMCFzSLtiHRo85cveH+08UxZvkHaEbUCgYEAyoG8U25ykRMbxEy3aw5goP2fWKnNKQuLh7fkY/achmfUEsWGJ2qj/pC/L6M567p+0fgfoH1ofX8ilrzsE0Aisivlu4gXDinHrTw+XsHovCQwbpJMiaFG//tYi6HC5YNvXsOVYQbx5uStrOct58/6vReH1apgH/eYA3TqkBQ7Zr8CgYBCsfoxzV8E0hUL/tSp1LkeycF2MxN1CVlfn2af/sRTypYSoU/EW+PvwiyNXiDxIDIlkXlaJ9dyokLUSEJkUcaLOKXSSVOYg0jMbFXmr4joAWSoG58o41okIevyrr8LO86uyCJM8l/6nrHeFcxuDWWMxDdse7yEJ0AVKLwC6BC9qQKBgE/N7symUwnvENs8LHBJGzV2naxQRmStgxA6HQxz7F1fX4kCRIsWEIjKvD1mwvWt6jqO4M/bfCkwyA3FZ/dyJ/o1KHTN/d/8AQ+5FQ88tZ4nWNrKVtVKNHO+trdYSTkvod0jkKPLG9uVNQhVlparNLH+Ku6+FOGkLkj2c1XSU1J7AoGAMR+mjwXaGsRI7+ST7zDVdelJfB6rZyeUBlSruYTEDOo1uG327Dky5DRczRfwEESS30Dxd6oYXUj/buqWx8BRzJ5VbiXK7ynQViBGm6u8LSSK6O3NstIwCz2SV9Y2kyF/J049ZlKOswbdq/r68PFej1lSSr/zf6XDLCJ8lAytUsM=',
//应用公钥
'public_key'=>'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrbXi8/ePxzFfIOcF5flf/YILuW0q7OVt+9jHZoSn/dkY6J7mYNate4tYq+QhPtBm7dKDu9WqF9nTKnwgoDBdZdDwudANDYNxBLS+Wpa03l/FpgJCSGe6ZAfb9EXKbOpkYMyKqWpFPF1261vwb0xYRgMZGeGXphGHTaXpFyHj9hR0WxAxHQVGFJeJP4S3SswI7klK9ASd2a1PzGad2XVT/MQUseNMKsHl32tklhU/qjLYsmOJb4w79gySKDC85mFAgL6KyVVKW0juroIRb1IxLUYEBUwChzQf3r+0TJ6fJ9yGh19lKS5pS4Hr/AZbA5wX+PBMe7H4nODlGGkPXhUCwIDAQAB',
//支付宝公钥
'pay_alipay_public_key'=>'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtl27/bcRervEf1YJoSGyQusBAh9CtcwyzZzUBfHtclYUDQZ154SijHfNxWX71AtMgPnTdeSzFC6Ky6WC9/MSAz2OrSbhhi7PX+f+ydgnBL/CoPw5O699MHuCTQzuOKRVoEwLcgjWm3nJNELTY9RVGQ2GkAD+Tj4wih2FXoFmVyGMdoz8dsYFBo/fgxOhb+mkYVy+uJfu4vuh7DwM2T9H5z8PmodDLvPnqO1+IEqFvoSdBf4Hyy0SNaurrWrsBDPO1ei41yD2tGxwHSCMN2NvChAnyHMblzdU2OvIjnaJrNeEeD/lBmWJs2Z/I2NHkjO/zcWShIldf8UTl64vJfGQbwIDAQAB',
//微信app支付参数
'weixinPay' => [
'pay_weixin_appid'=>'wx8dbf4b4b823f34e7',
'pay_weixin_mchid'=>'1586820961',
'pay_weixin_appsecret'=>'5eb1fb7502cc2b24be7b67e9fe04870c',
'pay_weixin_key'=>'41914f15f59dc19fef30385f46eb4ce4',
],
//异步通知地址
'notifyurl' =>'http://ruer.com/api/PayReturn/payReturn',
];
<?php
// +----------------------------------------------------------------------
// | 应用设置
// +----------------------------------------------------------------------
return [
// 应用地址
'app_host' => env('app.host', ''),
// 应用的命名空间
'app_namespace' => '',
// 是否启用路由
'with_route' => true,
// 默认应用模块
'default_app' => 'admin',
// 默认时区
'default_timezone' => 'Asia/Shanghai',
// 应用映射(自动多应用模式有效)
'app_map' => [],
// 域名绑定(自动多应用模式有效)
'domain_bind' => [],
// 禁止URL访问的应用列表(自动多应用模式有效)
'deny_app_list' => [],
// 异常页面的模板文件
'exception_tmpl' => app()->getThinkPath() . 'tpl/think_exception.tpl',
// 错误显示信息,非调试模式有效
'error_message' => '页面错误!请稍后再试~',
// 显示错误信息
'show_error_msg' => false,
//接口数据分页
'limit' => 15,
//登入验证
'open_check' =>true,
//token加密的key
'jwt_key' => 'zhihuishequ',
//支付宝支付相关参数
'pay_alipay_sign_type'=>'RSA2',
'pay_alipay_appid'=>'2021002110635559',
'pay_alipay_open'=>'1',
//应用私钥
'pay_alipay_merchant_private_key'=>'MIIEogIBAAKCAQEAvrbXi8/ePxzFfIOcF5flf/YILuW0q7OVt+9jHZoSn/dkY6J7mYNate4tYq+QhPtBm7dKDu9WqF9nTKnwgoDBdZdDwudANDYNxBLS+Wpa03l/FpgJCSGe6ZAfb9EXKbOpkYMyKqWpFPF1261vwb0xYRgMZGeGXphGHTaXpFyHj9hR0WxAxHQVGFJeJP4S3SswI7klK9ASd2a1PzGad2XVT/MQUseNMKsHl32tklhU/qjLYsmOJb4w79gySKDC85mFAgL6KyVVKW0juroIRb1IxLUYEBUwChzQf3r+0TJ6fJ9yGh19lKS5pS4Hr/AZbA5wX+PBMe7H4nODlGGkPXhUCwIDAQABAoIBADVp2jajMli0wy7bYXVOKo3LJ4GS/iX0tyL73eOlij/ZNvmcwUc+fcJkgbuY9j34bOiizhAewkOH7NOQ6PZz/zri8ax9vgKhfPuEVihavDNsXMbEMAupqes6XUOg6P7Z/czuVLeTDCb8dYjgK2O0jEboSFg6kmyd800tRA1ZiPIlJI9vRmea8PsTLWhkU1einClBCqIUTyxN3Ecm3cms1lFH6H+IMevrzTyISOkCjwqq6KtU+mEMJi0HtHyVqqXZFOhQjHq9Pd00lDzz5m2064gPk5J5NpqEdvfO4WmFZrmQbVB8vmKkFvr5dfzKhU1U/ju8WeqtjgdRlkDUf4G9s0kCgYEA8RemXJDxF3u/eLnx1SaIkGftsxScV0ZEo1qZVlnPLhnzenhlEWtnGd6uPMFBBv3QsaCWoSg1d0igf5Pgb3B3PtLbsig9tARsjWNMUflizpVYVEYGrAUgRYdqDTK3Twdl1/AzW0Ep83+9FMCFzSLtiHRo85cveH+08UxZvkHaEbUCgYEAyoG8U25ykRMbxEy3aw5goP2fWKnNKQuLh7fkY/achmfUEsWGJ2qj/pC/L6M567p+0fgfoH1ofX8ilrzsE0Aisivlu4gXDinHrTw+XsHovCQwbpJMiaFG//tYi6HC5YNvXsOVYQbx5uStrOct58/6vReH1apgH/eYA3TqkBQ7Zr8CgYBCsfoxzV8E0hUL/tSp1LkeycF2MxN1CVlfn2af/sRTypYSoU/EW+PvwiyNXiDxIDIlkXlaJ9dyokLUSEJkUcaLOKXSSVOYg0jMbFXmr4joAWSoG58o41okIevyrr8LO86uyCJM8l/6nrHeFcxuDWWMxDdse7yEJ0AVKLwC6BC9qQKBgE/N7symUwnvENs8LHBJGzV2naxQRmStgxA6HQxz7F1fX4kCRIsWEIjKvD1mwvWt6jqO4M/bfCkwyA3FZ/dyJ/o1KHTN/d/8AQ+5FQ88tZ4nWNrKVtVKNHO+trdYSTkvod0jkKPLG9uVNQhVlparNLH+Ku6+FOGkLkj2c1XSU1J7AoGAMR+mjwXaGsRI7+ST7zDVdelJfB6rZyeUBlSruYTEDOo1uG327Dky5DRczRfwEESS30Dxd6oYXUj/buqWx8BRzJ5VbiXK7ynQViBGm6u8LSSK6O3NstIwCz2SV9Y2kyF/J049ZlKOswbdq/r68PFej1lSSr/zf6XDLCJ8lAytUsM=',
//应用公钥
'public_key'=>'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvrbXi8/ePxzFfIOcF5flf/YILuW0q7OVt+9jHZoSn/dkY6J7mYNate4tYq+QhPtBm7dKDu9WqF9nTKnwgoDBdZdDwudANDYNxBLS+Wpa03l/FpgJCSGe6ZAfb9EXKbOpkYMyKqWpFPF1261vwb0xYRgMZGeGXphGHTaXpFyHj9hR0WxAxHQVGFJeJP4S3SswI7klK9ASd2a1PzGad2XVT/MQUseNMKsHl32tklhU/qjLYsmOJb4w79gySKDC85mFAgL6KyVVKW0juroIRb1IxLUYEBUwChzQf3r+0TJ6fJ9yGh19lKS5pS4Hr/AZbA5wX+PBMe7H4nODlGGkPXhUCwIDAQAB',
//支付宝公钥
'pay_alipay_public_key'=>'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtl27/bcRervEf1YJoSGyQusBAh9CtcwyzZzUBfHtclYUDQZ154SijHfNxWX71AtMgPnTdeSzFC6Ky6WC9/MSAz2OrSbhhi7PX+f+ydgnBL/CoPw5O699MHuCTQzuOKRVoEwLcgjWm3nJNELTY9RVGQ2GkAD+Tj4wih2FXoFmVyGMdoz8dsYFBo/fgxOhb+mkYVy+uJfu4vuh7DwM2T9H5z8PmodDLvPnqO1+IEqFvoSdBf4Hyy0SNaurrWrsBDPO1ei41yD2tGxwHSCMN2NvChAnyHMblzdU2OvIjnaJrNeEeD/lBmWJs2Z/I2NHkjO/zcWShIldf8UTl64vJfGQbwIDAQAB',
//支付宝支付回调
'notifyurl' =>'http://'.$_SERVER['SERVER_NAME'].'/api/PayReturn/aliPayReturn',
//微信app支付参数
'weixinPay' => [
'pay_weixin_appid'=>'wx8dbf4b4b823f34e7',
'pay_weixin_mchid'=>'1586820961',
'pay_weixin_appsecret'=>'5eb1fb7502cc2b24be7b67e9fe04870c',
'pay_weixin_key'=>'41914f15f59dc19fef30385f46eb4ce4',
'notifyurl' =>'http://'.$_SERVER['SERVER_NAME'].'/api/PayReturn/weiXinPayReturn',
],
//异步通知地址
];
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment