<?php // +---------------------------------------------------------------------- // | bronet [ 以客户为中心 以奋斗者为本 ] // +---------------------------------------------------------------------- // | Copyright (c) 2013-2017 http://www.bronet.cn All rights reserved. // +---------------------------------------------------------------------- // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 ) // +---------------------------------------------------------------------- namespace app\portal\controller; use cmf\controller\HomeBaseController; use think\Db; class SomepayController extends HomeBaseController { public function _initialize() { parent::_initialize(); // 微信 require_once EXTEND_PATH . "WxpayAPI/lib/WxPay.Api.php"; require_once EXTEND_PATH . "WxpayAPI/example/WxPay.JsApiPay.php"; require_once EXTEND_PATH . "WxpayAPI/lib/WxPay.Notify.php"; require_once EXTEND_PATH . 'WxpayAPI/example/log.php'; } // 微信支付 public function pay($openId , $price , $order_sn , $url,$content) { $price = intval($price * 100); $tools = new \JsApiPay(); $input = new \WxPayUnifiedOrder(); $input->SetBody($content); $input->SetAttach($content); $input->SetOut_trade_no($order_sn); $input->SetTotal_fee($price); $input->SetTime_start(date("YmdHis")); $input->SetTime_expire(date("YmdHis", time() + 600)); $input->SetGoods_tag($content); $input->SetNotify_url($url); $input->SetTrade_type("JSAPI"); $input->SetOpenid($openId); $config = new \WxPayConfig(); $order = \WxPayApi::unifiedOrder($config, $input); $jsApiParameters = $tools->GetJsApiParameters($order); return json_decode($jsApiParameters); } //微信回调 public function pay_notify() { $config = new \WxPayConfig(); $notify = new \WxPayNotify(); $notify->Handle($config, false); $xml = file_get_contents("php://input"); $a['a'] ='333'; Db::name('Test')->insertGetId($a); $base = new \WxPayResults(); $a['a'] ='888'; Db::name('Test')->insertGetId($a); $data = $base->FromXml($xml); $a['a'] ='234'; $a['f'] = json_encode($data); Db::name('Test')->insertGetId($a); //验签 if ($base->CheckSign($config)) { if ($data["return_code"] == "SUCCESS") { $a['a'] ='99'; $a['c'] = json_decode($data); Db::name('Test')->insertGetId($a); // 支付成功 Db::startTrans(); //// 更新主表状态 $where_orderN['order_sn'] = $data['out_trade_no']; $where_orderN['status'] = 3; $where_orderN['pay_time'] = time(); $order = Db::name('Order')->where($where_orderN)->find(); if($order){ $up_order['status'] = 10; $up_order['update_time'] = time(); $up_order['trans_id'] = $data['transaction_id']; $res_order = Db::name('Order')->where($where_orderN)->update($up_order); if($res_order){ Db::commit(); return true; }else{ Db::rollback(); return false; } } } } } }