小程序支付(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>'; } }
相关文章推荐
- Laravel 微信小程序支付
- 充值支付小程序案例-小程序支付开发-视频教程6
- 微信小程序使用场景延伸:扫码登录、扫码支付
- 微信小程序支付
- 微信小程序支付
- Laravel 支付解决方案之如何使用银联支付进行支付
- 微信小程序支付c#后台实现
- golang实现微信小程序支付服务端
- 十个 Laravel 5 程序优化技巧
- 微信小程序支付功能后台PHP实现
- 微信小程序 c#后台支付结果回调
- 实战:微信小程序支付开发具体流程
- 微信小程序支付(Java服务端)
- tp框架和laravel框架的区别
- 支付平台程序,支付程序,网络pos程序,api接口程序,锋锐支付平台程序开发领导者!
- 微信小程序支付
- 在TP中实现程序执行完dos窗口不关闭(附源码)
- 巧用日志功能,进行微信h5支付开发,微信公众号开发,小程序支付开发错误调试——微信h5支付开发3
- 小程序web-view调用小程序支付通道
- 微信小程序实现支付功能