金桥
This commit is contained in:
@@ -9,6 +9,8 @@ use app\http\model\Recharge as RechargeModel;
|
||||
use app\jinyou\model\ProductOrder as ProductOrderModel;
|
||||
use app\jinyou\model\Account as AccountModel;
|
||||
use app\jinyou\model\Package as PackageModel;
|
||||
use app\jinqiao\model\Order as JqOrderModel;
|
||||
use app\jinqiao\model\Key as KeyModel;
|
||||
|
||||
|
||||
class Alipay {
|
||||
@@ -164,5 +166,53 @@ class Alipay {
|
||||
|
||||
echo 'success';
|
||||
}
|
||||
|
||||
public function jinqiaoalipayverify() {
|
||||
|
||||
$ali = new AlipaySdk();
|
||||
|
||||
$flag = $ali->payVerify2($_POST);
|
||||
|
||||
if($flag){
|
||||
|
||||
$status = $_POST['trade_status'];
|
||||
|
||||
$flag = false;
|
||||
|
||||
if ($status == 'TRADE_SUCCESS') {
|
||||
$flag = true;
|
||||
}
|
||||
|
||||
if ($flag) {
|
||||
|
||||
$order_model = new JqOrderModel();
|
||||
$order_no=$_POST['out_trade_no'];
|
||||
$alipay_no = $_POST['trade_no'];
|
||||
|
||||
|
||||
|
||||
//获取充值信息
|
||||
$order_info = $order_model->getOne(['order_no'=>$order_no]);
|
||||
|
||||
if (!empty($order_info['ali_wx_no'])) {
|
||||
die;
|
||||
}
|
||||
|
||||
$update_data = [];
|
||||
|
||||
//更新充值订单
|
||||
$update_data['ali_wx_no'] = $alipay_no;
|
||||
$update_data['status'] = 1;
|
||||
if($order_model->updateOne(['order_no'=>$order_no],$update_data)) {
|
||||
|
||||
$key_model = new KeyModel();
|
||||
$key_model->where(['package_id' => $order_info['package_id'],'isused' =>0])->limit(1)->update(['isused' => 1,'user_id' => $order_info['user_id']]);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
echo 'success';
|
||||
}
|
||||
|
||||
}
|
||||
@@ -8,6 +8,9 @@ use app\http\model\Recharge as RechargeModel;
|
||||
use app\jinyou\model\ProductOrder as ProductOrderModel;
|
||||
use app\jinyou\model\Account as AccountModel;
|
||||
use app\jinyou\model\Package as PackageModel;
|
||||
use app\jinqiao\model\Order as JqOrderModel;
|
||||
use app\jinqiao\model\Key as KeyModel;
|
||||
|
||||
|
||||
class Wxpay {
|
||||
|
||||
@@ -142,6 +145,48 @@ class Wxpay {
|
||||
$account_model->open_account($account_info,$user_info,$package_info);
|
||||
|
||||
|
||||
//处理完成之后,告诉微信成功结果
|
||||
echo '<xml>
|
||||
<return_code><![CDATA[SUCCESS]]></return_code>
|
||||
<return_msg><![CDATA[OK]]></return_msg>
|
||||
</xml>';
|
||||
exit();
|
||||
}
|
||||
}
|
||||
|
||||
public function jinqiaowxpayverify() {
|
||||
|
||||
|
||||
//接收数据
|
||||
$xmlData = file_get_contents('php://input');
|
||||
libxml_disable_entity_loader(true);
|
||||
$data = json_decode(json_encode(simplexml_load_string($xmlData, 'SimpleXMLElement', LIBXML_NOCDATA)), true);
|
||||
|
||||
$order_model = new JqOrderModel();
|
||||
$order_no = $data['out_trade_no'];
|
||||
$wx_no = $data['transaction_id'];
|
||||
|
||||
//获取充值信息
|
||||
$order_info = $order_model->getOne(['order_no'=>$order_no]);
|
||||
|
||||
if (!empty($order_info['TradeNo'])) {
|
||||
die;
|
||||
}
|
||||
|
||||
//判断算出的签名和通知信息的签名是否一致
|
||||
if($data['result_code'] == 'SUCCESS' && $data['appid'] == 'wx18e5b4f42773c3ec' && $data['mch_id'] == '1571608411'){
|
||||
|
||||
$update_data = [];
|
||||
|
||||
//更新充值订单
|
||||
$update_data['ali_wx_no'] = $wx_no;
|
||||
$update_data['status'] = 1;
|
||||
$order_model->updateOne(['order_no'=>$order_no],$update_data);
|
||||
|
||||
$key_model = new KeyModel();
|
||||
$key_model->where(['package_id' => $order_info['package_id'],'isused' =>0])->limit(1)->update(['isused' => 1,'user_id' => $order_info['user_id']]);
|
||||
|
||||
|
||||
//处理完成之后,告诉微信成功结果
|
||||
echo '<xml>
|
||||
<return_code><![CDATA[SUCCESS]]></return_code>
|
||||
|
||||
248
app/jinqiao/controller/Index.php
Normal file
248
app/jinqiao/controller/Index.php
Normal file
@@ -0,0 +1,248 @@
|
||||
<?php
|
||||
|
||||
namespace app\jinqiao\controller;
|
||||
|
||||
use fastphp\base\Controller;
|
||||
use app\jinqiao\model\User as UserModel;
|
||||
use app\jinqiao\model\Package as PackageModel;
|
||||
use app\jinqiao\model\Order as OrderModel;
|
||||
use app\user\model\UserScore as UserScore;
|
||||
use app\jinqiao\model\Key as KeyModel;
|
||||
use extend\wechatpay\Wxpay;
|
||||
use extend\alipay\Alipay;
|
||||
|
||||
class Index extends Controller
|
||||
{
|
||||
//获取用户余额
|
||||
public function get_init() {
|
||||
$user_model = new UserModel;
|
||||
$package_model = new PackageModel;
|
||||
|
||||
$package_list = $package_model->getList();
|
||||
|
||||
$user_balance = $user_model->getUserBalance($this->userinfo['UserId']);
|
||||
|
||||
echo json_encode([
|
||||
'code' => 1,
|
||||
'data' => [
|
||||
'balance' => $user_balance,
|
||||
'package_list' => $package_list,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
//生成订单
|
||||
public function create_order() {
|
||||
$request_data = json_decode(file_get_contents("php://input"),true)['data'];
|
||||
$user_model = new UserModel;
|
||||
$package_model = new PackageModel;
|
||||
$order_model = new OrderModel;
|
||||
|
||||
$user_info = $user_model->getOne(['Id' => $this->userinfo['UserId']]);
|
||||
|
||||
$order_info = [];
|
||||
|
||||
$return_data['code'] = 0;
|
||||
|
||||
$package = $package_model->getOne(['id' => $request_data['package_id']]);
|
||||
|
||||
$money = $package['price'];
|
||||
|
||||
//判断价格是否正确
|
||||
if ($money != round(abs($request_data['price']),2)) {
|
||||
$return_data['code'] = -1;
|
||||
$return_data['msg'] = "价格有误,请联系客服!";
|
||||
}
|
||||
|
||||
//判断余额是否足够支付
|
||||
if ($request_data['pay_type'] == 10 && $user_info['RestAmount'] < $money) {
|
||||
$return_data['code'] = -1;
|
||||
$return_data['msg'] = "余额不足!";
|
||||
}
|
||||
|
||||
if ($return_data['code'] == -1) {
|
||||
echo json_encode($return_data);
|
||||
die;
|
||||
}
|
||||
|
||||
$order_no = 'jq'.md5(time());
|
||||
|
||||
$order_info = [
|
||||
'user_id' => $this->userinfo['UserId'],
|
||||
'package_id' => $request_data['package_id'],
|
||||
'status' => 0,
|
||||
'pay_type' => $request_data['pay_type'],
|
||||
'order_no' => $order_no,
|
||||
'money' => $money,
|
||||
];
|
||||
|
||||
//用户余额
|
||||
$old_balance = $rest_money = $user_info['RestAmount'];
|
||||
|
||||
if ($request_data['pay_type'] == 10) {
|
||||
//判断余额是否足够
|
||||
if ($old_balance < $money) {
|
||||
$return_data['code'] = -1;
|
||||
$return_data['msg'] = "余额不足!";
|
||||
echo json_encode($return_data);
|
||||
die;
|
||||
} else {
|
||||
$rest_money -= $money;
|
||||
$rest_data = [
|
||||
'RestAmount' => $rest_money
|
||||
];
|
||||
if ($user_model->updateOne(['Id'=>$this->userinfo['UserId'],'RestAmount'=>$old_balance],$rest_data)) {
|
||||
$score_model = new UserScore;
|
||||
$score_data = [
|
||||
'TenantId'=>0,
|
||||
'UserId' => $this->userinfo['UserId'],
|
||||
'ScoreType' => '6',
|
||||
'ScoreTypeName' => '购买水滴',
|
||||
'ScoreValue' => $money,
|
||||
'UserName' => $user_info['Phone'],
|
||||
'OperateUserName' => $user_info['LoginCode'],
|
||||
'RestAmount1' => $old_balance,
|
||||
'RestAmount2' => $rest_money,
|
||||
'DeleteTag'=>0,
|
||||
'CreateTime' => date('Y-m-d H:i:s'),
|
||||
'UpdateTime' => date('Y-m-d H:i:s'),
|
||||
];
|
||||
$score_model->add($score_data);
|
||||
|
||||
$order_info['status'] = 1;
|
||||
//添加订单
|
||||
$order_model->add($order_info);
|
||||
|
||||
$key_model = new KeyModel();
|
||||
$key_model->where(['package_id' => $order_info['package_id'],'isused' =>0])->limit(1)->update(['isused' => 1,'user_id' => $order_info['user_id']]);
|
||||
$return_data['code'] = 1;
|
||||
$return_data['msg'] = "兑换码已购买!";
|
||||
|
||||
echo json_encode($return_data);
|
||||
} else {
|
||||
$return_data['code'] = -1;
|
||||
$return_data['msg'] = "余额不足!";
|
||||
echo json_encode($return_data);
|
||||
die;
|
||||
}
|
||||
}
|
||||
} else if($request_data['pay_type'] == 100) {
|
||||
$param = [
|
||||
'out_trade_no' => $order_info['order_no'],
|
||||
'total_amount' => $money,
|
||||
'subject' => '购买金桥投屏',
|
||||
'product_code' => 'FAST_INSTANT_TRADE_PAY',
|
||||
'timeout_express' => '30m',
|
||||
];
|
||||
//添加订单
|
||||
$order_model->add($order_info);
|
||||
|
||||
|
||||
$pay_html = Alipay::pay_jinqiao($param);
|
||||
$info = [
|
||||
'code'=>2,
|
||||
'data' => $pay_html
|
||||
];
|
||||
echo json_encode($info);
|
||||
} else if($request_data['pay_type'] == 70) {
|
||||
|
||||
$order_model->add($order_info);
|
||||
//微信支付
|
||||
$wxpay = new Wxpay();
|
||||
//添加订单
|
||||
|
||||
$param = [
|
||||
'username' => $this->userinfo['LoginName'],
|
||||
'money' => $money*100,
|
||||
'order_no' => $order_info['order_no'],
|
||||
];
|
||||
$url = $wxpay->jinqiao_pay($param);
|
||||
|
||||
$info = [
|
||||
'code'=>3,
|
||||
'data' => $url
|
||||
];
|
||||
echo json_encode($info);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public function get_key() {
|
||||
$key_model = new KeyModel();
|
||||
|
||||
$list = $key_model->getList(['user_id' => $this->userinfo['UserId']]);
|
||||
|
||||
$package_model = new PackageModel;
|
||||
|
||||
$package_list = $package_model->getList();
|
||||
|
||||
$package_id_info_list = [];
|
||||
|
||||
foreach ($package_list as $package) {
|
||||
$package_id_info_list[$package['id']] = $package;
|
||||
}
|
||||
foreach ($list as &$info) {
|
||||
$info['package_name'] = $package_id_info_list[$info['package_id']]['name'];
|
||||
|
||||
}
|
||||
|
||||
|
||||
echo json_encode([
|
||||
'code'=>1,
|
||||
'data' => $list
|
||||
]);
|
||||
}
|
||||
|
||||
public function get_order_list() {
|
||||
$page = 0;
|
||||
|
||||
if (isset($get_data['PageIndex'])) {
|
||||
$page = ($get_data['PageIndex'] - 1) * 50;
|
||||
}
|
||||
$order_model = new OrderModel;
|
||||
$package_model = new PackageModel;
|
||||
$user_model = new UserModel;
|
||||
|
||||
$package_list = $package_model->getList();
|
||||
|
||||
$package_id_info_list = [];
|
||||
|
||||
foreach ($package_list as $package) {
|
||||
$package_id_info_list[$package['id']] = $package;
|
||||
}
|
||||
|
||||
$list = $order_model->getListPage(['status' => 1], '*', 'id desc', "$page,50");
|
||||
|
||||
$user_id_list = [];
|
||||
|
||||
foreach ($list as &$info) {
|
||||
$info['package_name'] = $package_id_info_list[$info['package_id']]['name'];
|
||||
$user_id_list[] = $info['user_id'];
|
||||
}
|
||||
|
||||
$user_info = $user_model->getList(['Id' => ['IN',$user_id_list]],'Id,LoginCode');
|
||||
|
||||
$user_phone_list = [];
|
||||
foreach($user_info as $user) {
|
||||
$user_phone_list[$user['Id']] = $user['LoginCode'];
|
||||
}
|
||||
|
||||
$pay_type = [
|
||||
10 => '余额',
|
||||
70 => '微信',
|
||||
100 => '支付宝',
|
||||
];
|
||||
foreach ($list as &$info) {
|
||||
$info['username'] = $user_phone_list[$info['user_id']];
|
||||
$info['pay_type'] = $pay_type[$info['pay_type']];
|
||||
}
|
||||
|
||||
$data = [
|
||||
'Code' => 30000,
|
||||
'Data' => $list,
|
||||
'Message' => '',
|
||||
'TotalCount' => (int)$order_model->getCount(['status' => 1])['count'],
|
||||
];
|
||||
echo json_encode($data);
|
||||
}
|
||||
}
|
||||
11
app/jinqiao/model/Key.php
Normal file
11
app/jinqiao/model/Key.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace app\jinqiao\model;
|
||||
|
||||
use fastphp\base\Model;
|
||||
|
||||
class Key extends Model
|
||||
{
|
||||
protected $table = 'jinqiao_key';
|
||||
|
||||
}
|
||||
11
app/jinqiao/model/Order.php
Normal file
11
app/jinqiao/model/Order.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace app\jinqiao\model;
|
||||
|
||||
use fastphp\base\Model;
|
||||
|
||||
class Order extends Model
|
||||
{
|
||||
protected $table = 'jinqiao_order';
|
||||
|
||||
}
|
||||
11
app/jinqiao/model/Package.php
Normal file
11
app/jinqiao/model/Package.php
Normal file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
namespace app\jinqiao\model;
|
||||
|
||||
use fastphp\base\Model;
|
||||
|
||||
class Package extends Model
|
||||
{
|
||||
protected $table = 'jinqiao_package';
|
||||
|
||||
}
|
||||
18
app/jinqiao/model/User.php
Normal file
18
app/jinqiao/model/User.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace app\jinqiao\model;
|
||||
|
||||
use fastphp\base\Model;
|
||||
|
||||
class User extends Model
|
||||
{
|
||||
protected $table = 'user';
|
||||
|
||||
//获取用户余额
|
||||
public function getUserBalance($user_id)
|
||||
{
|
||||
$user_balance = $this->getOne(['Id' => $user_id],'RestAmount');
|
||||
|
||||
return $user_balance['RestAmount'];
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@
|
||||
/*
|
||||
* @Author: 万永康
|
||||
* @Date: 2020-10-11 12:32:50
|
||||
* @LastEditTime: 2024-01-27 16:19:49
|
||||
* @LastEditTime: 2024-02-20 16:23:38
|
||||
* @LastEditors: “wanyongkang” “937888580@qq.com”
|
||||
* @Description: In User Settings Edit
|
||||
* @FilePath: /phptest/alipay/Alipay.php
|
||||
@@ -183,6 +183,36 @@ class Alipay
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
public static function pay_jinqiao($param)
|
||||
{
|
||||
global $config;
|
||||
$aop = new \AopClient ();
|
||||
$aop->gatewayUrl = 'https://openapi.alipay.com/gateway.do';
|
||||
$aop->appId = $config['alipay2']['app_id'];;
|
||||
$aop->rsaPrivateKey = $config['alipay2']['private_key'] ;
|
||||
$aop->apiVersion = '1.0';
|
||||
$aop->signType = 'RSA2';
|
||||
$aop->postCharset='utf-8';
|
||||
$aop->format='json';
|
||||
$aop->alipayrsaPublicKey = $config['alipay2']['public_key'];
|
||||
|
||||
$request = new \AlipayTradePagePayRequest();
|
||||
|
||||
|
||||
|
||||
$param = json_encode($param);
|
||||
|
||||
$request->setReturnUrl('http://www.juip.com/user/Index');
|
||||
|
||||
$notifyUrl="http://php-api.juip.com/common/alipay/jinqiaoalipayverify";
|
||||
$request->setNotifyUrl($notifyUrl);
|
||||
|
||||
$request->setBizContent($param);
|
||||
$result = $aop->pageExecute ( $request);
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -60,4 +60,21 @@ class Wxpay
|
||||
$url2 = $result["code_url"];
|
||||
return $url2;
|
||||
}
|
||||
|
||||
public function jinqiao_pay($param) {
|
||||
$notify = new \NativePay();
|
||||
$input = new \WxPayUnifiedOrder();
|
||||
$input->SetBody("购买金桥投屏");
|
||||
$input->SetOut_trade_no($param['order_no']);
|
||||
$input->SetTotal_fee($param['money']);
|
||||
$input->SetTime_start(date("YmdHis"));
|
||||
$input->SetTime_expire(date("YmdHis", time() + 600));
|
||||
$input->SetNotify_url("http://php-api.juip.com/common/wxpay/jinqiaowxpayverify");
|
||||
$input->SetTrade_type("NATIVE");
|
||||
|
||||
$result = $notify->GetPayUrl($input);
|
||||
|
||||
$url2 = $result["code_url"];
|
||||
return $url2;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user