You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
3.8 KiB
PHP
96 lines
3.8 KiB
PHP
<?php
|
|
namespace Sdk\Controller;
|
|
use Think\Controller;
|
|
use Common\Api\GaemApi;
|
|
use Org\UcenterSDK\Ucservice;
|
|
class PayiosController extends BaseController{
|
|
|
|
/**
|
|
*ios移动支付
|
|
*/
|
|
public function ios_pay(){
|
|
C(api('Config/lists'));
|
|
#获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组
|
|
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
|
|
if(!is_numeric($request['price'])) {
|
|
echo base64_encode(json_encode(['out_trade_no'=>'','msg'=>'金额不正确']));
|
|
}
|
|
if($request['price']<0) {
|
|
echo base64_encode(json_encode(['out_trade_no'=>'','msg'=>'金额不正确']));
|
|
}
|
|
$request['price'] = abs($request['price']);
|
|
#获取订单信息
|
|
$prefix = $request['code'] == 1 ? "SP_" : "PF_";
|
|
$out_trade_no = $prefix.date('Ymd').date('His').sp_random_string(4);
|
|
$data = array("out_trade_no"=>$out_trade_no);
|
|
$request['pay_order_number'] = $out_trade_no;
|
|
$request['pay_status'] = 0;
|
|
$request['pay_way'] = 6;
|
|
$request['title'] = $request['productId'];
|
|
$request['spend_ip'] = get_client_ip();
|
|
if (C('UC_SET') == 1&&$request['is_uc']==1) {
|
|
$uc = new Ucservice();
|
|
$uc_user=$uc->get_user_from_uid($request['user_id']);
|
|
if($uc_user){
|
|
$game = M('GameSet',"tab_");
|
|
$map['game_id'] = $param['game_id'];
|
|
$game_data = $game->where($map)->find();
|
|
$uc_id = $uc->uc_recharge($request['user_id'],$uc_user['username'],$uc_user['username'],$request['game_id'],$request['game_appid'],get_game_name($request['game_id']),0,'',$uc_user['promote_id'],$uc_user['promote_account'],"",$request['pay_order_number'],$request['price'],time(),$request['extend'],1,get_client_ip(),$request['sdk_version'],1,$uc_user['platform'],$game_data['pay_notify_url'],$game_data['game_key']);
|
|
}
|
|
}
|
|
if($request['is_uc']==0){
|
|
if($request['code'] == 1 ){
|
|
#TODO添加消费记录
|
|
$this->add_spend($request);
|
|
}else{
|
|
#TODO添加平台币充值记录
|
|
$this->add_deposit($request);
|
|
}
|
|
}
|
|
|
|
echo base64_encode(json_encode($data));
|
|
}
|
|
|
|
/**
|
|
*支付通知
|
|
*/
|
|
public function pay_notify(){
|
|
C(api('Config/lists'));
|
|
#获取SDK上POST方式传过来的数据 然后base64解密 然后将json字符串转化成数组
|
|
$request = json_decode(base64_decode(file_get_contents("php://input")),true);
|
|
$out_trade_no = $request['out_trade_no'];
|
|
$pay_where = substr($out_trade_no,0,2);
|
|
$result = 0;
|
|
$map['pay_order_number'] = $out_trade_no;
|
|
$field = array("pay_status"=>1,"pay_amount"=>$request['price']);
|
|
if (C('UC_SET') == 1) {
|
|
$uc = new Ucservice();
|
|
$uc_id = $uc->uc_rechange_notify($out_trade_no,1);
|
|
}
|
|
switch ($pay_where) {
|
|
case 'SP':
|
|
$result = M('spend','tab_')->where($map)->setField($field);
|
|
break;
|
|
case 'PF':
|
|
$result = M('deposit','tab_')->where($map)->setField($field);
|
|
break;
|
|
case 'AG':
|
|
$result = M('agent','tab_')->where($map)->setField($field);
|
|
break;
|
|
default:
|
|
exit('accident order data');
|
|
break;
|
|
}
|
|
if($result){
|
|
echo base64_encode(json_encode(array("status"=>200,"return_code"=>"success","return_msg"=>"支付成功")));
|
|
exit();
|
|
}else{
|
|
echo base64_encode(json_encode(array("status"=>1078,"return_code"=>"fail","return_msg"=>"支付失败")));
|
|
exit();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|