get_cache('weixin', 'xcx', 'appid'));
define('APPSECRET', \Phpcmf\Service::C()->get_cache('weixin', 'xcx', 'appsecret'));
} else {
define('APPID', $config['appid']);
define('APPSECRET', $config['appsecret']);
}
define('MCHID', $config['mchid']);
define('KEY', $config['key']);
define('NOTIFY_URL', ROOT_URL."api/pay/".$data['type']."/notify_url.php");
define('NOTIFY_API_URL', ROOT_URL."index.php?s=pay&m=ajax&id=".$id);
define('REPORT_LEVENL', 0);
require "WxPay.Data.php";
require "WxPay.Api.php";
require "WxPay.JsApiPay.php";
require "WxPay.NativePay.php";
// 当前已经登录的用户
$member = \Phpcmf\Service::C()->member;
// 付款界面模板
$htmlfile = is_file(WEBPATH.'config/pay/payweixin.html') ? WEBPATH.'config/pay/payweixin.html' : CONFIGPATH.'pay/payweixin.html';
$data['title'] = dr_strcut($data['title'], 30);
if (IS_API_HTTP && dr_is_app('weixin')) {
// 微信插件:客户端小程序请求
//①、获取用户openid
$oauth = $this->table('member_oauth')->where('uid', $data['uid'])->where('oauth', 'wxxcx')->getRow();
if (!$oauth) {
$return = dr_return_data(0, '服务器没有此用户');
} else {
$input = new WxPayUnifiedOrder();
$input->SetBody($data['title']);
$input->SetOut_trade_no($sn);
$input->SetTotal_fee($data['value'] * 100); // 金额
$input->SetTime_start(date("YmdHis", SYS_TIME));
$input->SetTime_expire(date("YmdHis", SYS_TIME + 7200));
$input->SetNotify_url(NOTIFY_URL);
$input->SetTrade_type("JSAPI"); // JSAPI,NATIVE,APP
$input->SetProduct_id($pid);
$input->SetOpenid($oauth['oid']);
$order = WxPayApi::unifiedOrder($input);
if (isset($order['code']) && $order['code'] == 0) {
$return = dr_return_data(0, '微信服务端:'.$order['msg']);
} elseif ($order["err_code_des"]) {
$return = dr_return_data(0, '微信服务端:'.$order['err_code_des']);
} else {
// 存储支付结果
$order['sn'] = $sn;
$tools = new JsApiPay();
$param = $tools->GetJsApiParameters($order);
\Phpcmf\Service::C()->_json(1, 'ok', json_decode($param, true));
}
}
} elseif (dr_is_weixin_app()) {
// 手机微信客户端调用jsapi
//①、获取用户openid
$tools = new JsApiPay();
$openId = $tools->GetOpenid();
if (!$openId) {
$return = dr_return_data(0, 'openId获取失败');
} else {
// 统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody($data['title']);
$input->SetOut_trade_no($sn);
$input->SetTotal_fee($data['value'] * 100); // 金额
$input->SetTime_start(date("YmdHis", SYS_TIME));
$input->SetTime_expire(date("YmdHis", SYS_TIME + 7200));
$input->SetNotify_url(NOTIFY_URL);
$input->SetTrade_type("JSAPI"); // JSAPI,NATIVE,APP
$input->SetProduct_id($pid);
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
if (isset($order['code']) && $order['code'] == 0) {
$return = dr_return_data(0, '微信服务端:'.$order['msg']);
} elseif ($order["err_code_des"]) {
$return = dr_return_data(0, '微信服务端:'.$order['err_code_des']);
} else {
$jsApiParameters = $tools->GetJsApiParameters($order);
//获取共享收货地址js函数参数
$editAddress = $tools->GetEditAddressParameters();
// 存储支付结果
$order['sn'] = $sn;
$code = '
';
// 获取付款界面代码
ob_start();
$file = \Phpcmf\Service::V()->code2php(file_get_contents($htmlfile));
require_once $file;
$html = ob_get_clean();
$return = dr_return_data(1, 'ok', $html);
}
}
} elseif (\Phpcmf\Service::IS_MOBILE_USER()) {
// 手机端H5支付
$input = new WxPayUnifiedOrder();
$input->SetBody($data['title']);
$input->SetOut_trade_no($sn);
$input->SetTotal_fee($data['value'] * 100); // 金额
$input->SetTime_start(date("YmdHis", SYS_TIME));
$input->SetTime_expire(date("YmdHis", SYS_TIME + 7200));
$input->SetNotify_url(NOTIFY_URL);
$input->SetTrade_type("MWEB"); // JSAPI,NATIVE,APP
$input->SetProduct_id($pid);
$input->SetOpenid($openId);
$order = WxPayApi::unifiedOrder($input);
if (isset($order['code']) && $order['code'] == 0) {
$return = dr_return_data(0, '微信服务端:'.$order['msg']);
} elseif ($order["err_code_des"]) {
$return = dr_return_data(0, '微信服务端:'.$order['err_code_des']);
} else {
// 存储支付结果
$order['sn'] = $sn;
$code = '
立即支付
';
// 获取付款界面代码
ob_start();
$file = \Phpcmf\Service::V()->code2php(file_get_contents($htmlfile));
require_once $file;
$html = ob_get_clean();
$return = dr_return_data(1, 'ok', $html);
}
} else {
// 电脑扫码支付
$notify = new NativePay();
// 统一下单
$input = new WxPayUnifiedOrder();
$input->SetBody($data['title']);
$input->SetOut_trade_no($sn);
$input->SetTotal_fee($data['value'] * 100); // 金额
$input->SetTime_start(date("YmdHis", SYS_TIME));
$input->SetTime_expire(date("YmdHis", SYS_TIME + 7200));
$input->SetNotify_url(NOTIFY_URL);
$input->SetTrade_type("NATIVE"); // JSAPI,NATIVE,APP
$input->SetProduct_id($pid);
$result = $notify->GetPayUrl($input);
if (isset($result['code']) && $result['code'] == 0) {
$return = dr_return_data(0, '微信服务端:'.$result['msg']);
} elseif ($result["err_code_des"]) {
$return = dr_return_data(0, '微信服务端:'.$result['err_code_des']);
} else {
// 存储支付结果
$result['sn'] = $sn;
$code = '
';
// 获取付款界面代码
ob_start();
$file = \Phpcmf\Service::V()->code2php(file_get_contents($htmlfile));
require_once $file;
$html = ob_get_clean();
$return = dr_return_data(1, 'ok', $html);
}
}