您的位置:首页 > 编程语言 > PHP开发

小程序支付(tp和laravel)

2018-03-27 17:18 148 查看
注意:

安装overtrue/wechat第三方类库,才能用此方法

****************************************添加视频订单**********************************
public function video_order($id,$openid)
{
//        获取openid
$result=db('user')->where('openid',$openid)->find();
//得到微信头像名称信息
//生成订单
$image=$result['img'];
$name=$result['vxname'];
$orders = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8);
$time=date("Y-m-d",time());
$re=db('video')->where('id',$id)->find();
//          得到视频的金额和名称
$project=$re['title'];
$money=$re['price'];
$state=1;
$cid=$id;

//                将订单添加到数据库
if (is_empty_data($openid, $money,$name ,$project,$state,$image,$orders,$time,$cid)) {
$data = array(
'openid' => $openid,
'money' => $money,
'name' => $name,
'project' => $project,
'state' => $state,
'image' => $image,
'order' => $orders,
'time' => $time,
'cid'=>$cid
);
//dump($data);die();
//db('video_order')->insert($data);//生成订单
$aid=db('video_order')->insertGetId($data);//生成订单

$da= $this->payment($aid);//调用下方视屏支付函数
return $da ;
}

}
//   ****************************** 视频支付******************************
public function payment($aid)
{
//进行查询数据库获得支付参数,
header("Content-type:text/html;charset=utf-8"); //此处进行字符集初始化,
$order_data=db('video_order')->where('id',$aid)->find();//得到订单信息
//dump($order_data);
/**
* 第 1 步:定义商户
*/
$appid = db('config')->where('name','cat_name4')->value('value');
$secret = db('config')->where('name','cat_name1')->value('value');
$mch_id = db('config')->where('name','cat_name2')->value('value');
$shopsecret = db('config')->where('name','cat_name3')->value('value');
$business = new Business(
$appid,
$secret,
$mch_id,
$shopsecret
);
/**
* 第 2 步:定义订单(将订单信息对应到下面的内容中)
*/
$order = new Order();
$order->body = 'test body';
$order->out_trade_no = $order_data['order'];
//$order->total_fee = '1';    // 单位为 “分”, 字符串类型
$order->total_fee = $order_data['money']*100;//订单总额
// 单位为 “分”, 字符串类型
$order->openid =$order_data['openid'];
$notify_url = 'https://' . $_SERVER['HTTP_HOST'] . '/index.php/home/index/payok';
$order->notify_url = $notify_url;
/**
* 第 3 步:统一下单
*/
$unifiedOrder = new UnifiedOrder($business, $order);

/**
* 第 4 步:生成支付配置文件
*/
$payment = new Payment($unifiedOrder);
return $payment->getConfig() ;

}
//   ****************************** 支付通知******************************
public function payok()
{
error_reporting(0);
define('IN_MOBILE', true);
libxml_disable_entity_loader(true);
$xml = '<?xml version="1.0" encoding="utf-8"?>';
$xml .= $GLOBALS['HTTP_RAW_POST_DATA'];
$obj = simplexml_load_string($xml, 'SimpleXMLElement', LIBXML_NOCDATA);
$arrayinfo = xmlToArray($obj);
if (($arrayinfo['result_code'] = 'SUCCESS' || $arrayinfo['return_code'] = 'SUCCESS')) {
$out_trade_no = $arrayinfo['out_trade_no']; //商户订单号
// $transaction_id = $arrayinfo['transaction_id']; //微信订单支付订单号

$result = db('video_order')->where('order', $out_trade_no)->find();
//修改订单的状态值
if ($result->state != 2) {
$res= db('video_order')
->where('order', $out_trade_no)
->update(['state' => 2,  'time' =>date("Y-m-d",time())]);
if ($res) {
return '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
} else {
return '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[NO]]></return_msg></xml>';
}
} else {
return '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
}

} else {
return '<xml><return_code><![CDATA[FAIL]]></return_code><return_msg><![CDATA[NO]]></return_msg></xml>';
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  小程序支付