1 /**
2 * JSAPI支付——H5网页端调起支付接口
3 */
4 class JsApi_pub extends Common_util_pub
5 {
6 var $code;//code码,用以获取openid
7 var $openid;//用户的openid
8 var $parameters;//jsapi参数,格式为json
9 var $prepay_id;//使用统一支付接口得到的预支付id
10 var $curl_timeout;//curl超时时间
11
12 function __construct()
13 {
14 //设置curl超时时间
15 $this->curl_timeout = WxPayConf_pub::CURL_TIMEOUT;
16 }
17
18 /**
19 * 作用:生成可以获得code的url
20 */
21 function createOauthUrlForCode($redirectUrl)
22 {
23 $urlObj["appid"] = WxPayConf_pub::APPID;
24 $urlObj["redirect_uri"] = urlencode($redirectUrl);
25 $urlObj["response_type"] = "code";
26 $urlObj["scope"] = "snsapi_base";
27 $urlObj["state"] = "STATE"."#wechat_redirect";
28 $bizString = $this->formatBizQueryParaMap($urlObj, false);
29 return "https://open.weixin.qq.com/connect/oauth2/authorize?".$bizString;
30 }
31
32 /**
33 * 作用:生成可以获得openid的url
34 */
35 function createOauthUrlForOpenid()
36 {
37 $urlObj["appid"] = WxPayConf_pub::APPID;
38 $urlObj["secret"] = WxPayConf_pub::APPSECRET;
39 $urlObj["code"] = $this->code;
40 $urlObj["grant_type"] = "authorization_code";
41 $bizString = $this->formatBizQueryParaMap($urlObj, false);
42 return "https://api.weixin.qq.com/sns/oauth2/access_token?".$bizString;
43 }
44
45
46 /**
47 * 作用:通过curl向微信提交code,以获取openid
48 */
49 function getOpenid()
50 {
51 $url = $this->createOauthUrlForOpenid();
52 //初始化curl
53 $ch = curl_init();
54 //设置超时
55 curl_setopt($ch, CURLOPT_TIMEOUT, $this->curl_timeout);
56 curl_setopt($ch, CURLOPT_URL, $url);
57 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,FALSE);
58 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,FALSE);
59 curl_setopt($ch, CURLOPT_HEADER, FALSE);
60 curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
61 //运行curl,结果以json形式返回
62 $res = curl_exec($ch);
63 curl_close($ch);
64 //取出openid
65 $data = json_decode($res,true);
66 $this->openid = $data['openid'];
67 return $this->openid;
68 }
69
70 /**
71 * 作用:设置prepay_id
72 */
73 function setPrepayId($prepayId)
74 {
75 $this->prepay_id = $prepayId;
76 }
77
78 /**
79 * 作用:设置code
80 */
81 function setCode($code_)
82 {
83 $this->code = $code_;
84 }
85
86 /**
87 * 作用:设置jsapi的参数
88 */
89 public function getParameters()
90 {
91 $jsApiObj["appId"] = WxPayConf_pub::APPID;
92 $timeStamp = time();
93 $jsApiObj["timeStamp"] = "$timeStamp";
94 $jsApiObj["nonceStr"] = $this->createNoncestr();
95 $jsApiObj["package"] = "prepay_id=$this->prepay_id";
96 $jsApiObj["signType"] = "MD5";
97 $jsApiObj["paySign"] = $this->getSign($jsApiObj);
98 $this->parameters = json_encode($jsApiObj);
99 return $this->parameters;
100 }
101 }
JSAPI支付——H5网页端调起支付接口
最新推荐文章于 2024-03-22 13:44:08 发布