function pay($mchid, $appid, $no, $payurl, $openid, $money, $desc = '美啦啦砸金蛋活动') { //签名参与参数 $parameters = ['partner_trade_no' => $mchid . date('Ymd') . $no, 'mchid' => $mchid, 'mch_appid' => $appid, 'openid' => $openid, 'check_name' => 'NO_CHECK', 'amount' => $money, 'desc' => $desc, 'spbill_create_ip' => '124.172.237.174', 'nonce_str' => createNoncestr()]; $sign = getSign($parameters); //获取签名 $parameters['sign'] = $sign; $xml = arrayToXml($parameters); //生成请求XML return postXmlSSLCurl($xml, $payurl); }
<?php header("content-type:text/html;charset=utf-8"); // $data['viptime']=strtotime("+1 years",time()); // echo $data['viptime']; // exit(); $cfg = (include 'config.php'); include 'common.php'; $access_token = getAccessToken($cfg['appid'], $cfg['appsecret']); $jsapi_ticket = getJsapiTicket($access_token); // var_dump($jsapi_ticket); $noncestr = createNoncestr(); $timestamp = time(); $protocol = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ? "https://" : "http://"; $url = "{$protocol}{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"; $signature = sha1("jsapi_ticket=" . $jsapi_ticket . "&noncestr=" . $noncestr . "×tamp=" . $timestamp . "&url=" . $url); $signPackage = array('appId' => $cfg['appid'], 'nonceStr' => $noncestr, 'timestamp' => $timestamp, 'signature' => $signature); function getJsApiTicket($accessToken) { // jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例 $data = json_decode(file_get_contents("jsapi_ticket.json")); if ($data->expire_time < time()) { // 如果是企业号用以下 URL 获取 ticket // $url = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=$accessToken"; $url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=" . $accessToken; $res = json_decode(https_request($url)); $ticket = $res->ticket; if ($ticket) { $data->expire_time = time() + 7000; $data->jsapi_ticket = $ticket; $fp = fopen("jsapi_ticket.json", "w");