21,886
社区成员
发帖
与我相关
我的任务
分享
/**
* Jsapi调用H5支付
*/
public function jsapi(){
//自定义订单号
// $this->ajaxReturn('hhhh');
$openid = get_openid();
$this->ajaxReturn($openid,'JSON');
// 获取当前用户的OpenId
function get_openid() {
// $openid = session('openid_');
$isWeixinBrowser = isWeixinBrowser();
if ($isWeixinBrowser) {
$callback = GetCurUrl();
$openid = OAuthWeixin($callback);
// session('openid_', $openid);
}
if (empty($openid)) {
return '-1';
// exit ( 'openid获取失败error' );
}
return $openid;
}
// php获取当前访问的完整url地址
function GetCurUrl() {
$url = 'http://';
if (isset($_SERVER ['HTTPS']) && $_SERVER ['HTTPS'] == 'on') {
$url = 'https://';
}
if ($_SERVER ['SERVER_PORT'] != '80') {
$url .= $_SERVER ['HTTP_HOST'] . ':' . $_SERVER ['SERVER_PORT'] . $_SERVER ['REQUEST_URI'];
} else {
$url .= $_SERVER ['HTTP_HOST'] . $_SERVER ['REQUEST_URI'];
}
// 兼容后面的参数组装
if (stripos($url, '?') === false) {
$url .= '?t=' . time();
}
return $url;
}
// 判断是否是在微信浏览器里
function isWeixinBrowser($from = 0) {
if ((!$from && defined('IN_WEIXIN') && IN_WEIXIN) || isset($_GET ['is_stree']))
return true;
$agent = $_SERVER ['HTTP_USER_AGENT'];
if (!strpos($agent, "icroMessenger")) {
return false;
}
return true;
}
function OAuthWeixin($callback) { // echo '444';
$callback = urldecode($callback);
vendor('WxPayPubHelper.WxPayPubHelper');
$info = array(
'appid' => \WxPayConf_pub::APPID,
'secret' => \WxPayConf_pub::APPSECRET
);
// if (strpos($callback, '?') === false) {
// $callback .= '?';
// } else {
// $callback .= '&';
// }
F('url',$callback);
$param ['appid'] = $info ['appid'];
if (!isset($_GET ['getOpenId'])) {
$param ['redirect_uri'] = $callback . '/getOpenId/1';
$param ['response_type'] = 'code';
$param ['scope'] = 'snsapi_base';
$param ['state'] = 123;
$url = 'https://open.weixin.qq.com/connect/oauth2/authorize?' . http_build_query($param) . '#wechat_redirect';
F('get_code_url',$url);
redirect($url);
} else if ($_GET ['state']) {
$param ['secret'] = $info ['secret'];
$param ['code'] = I('code');
$param ['grant_type'] = 'authorization_code';
$url = 'https://api.weixin.qq.com/sns/oauth2/access_token?' . http_build_query($param);
$content = file_get_contents($url);
$content = json_decode($content, true);
F('openid',$content);
return $content ['openid'];
}
}
/**
* 微信支付
*/
function pay(price){
var url = "{:U('Wxpay/jsapi','','')}";
var price = 0.01;
if (!price) {
price = 0.01;
}
//alert(url+"--"+"price="+price+"&orderid="+orderid);
$.ajax({
url : url,
type : "post",
dataType : "json",
data : {price:price},
success : function(data){
alert(data);
/* var json_str = data;
var json_obj = JSON.parse(json_str);
callpay(json_obj,params,payokFunc,paycancelFunc,payfailFunc); */
},
error : function(XMLHttpRequest, textStatus, errorThrown){
alert('error');
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
}
});
}