2 changed files with 56 additions and 88 deletions
@ -1,89 +1,54 @@ |
|||||
<!DOCTYPE html> |
<?php |
||||
<html> |
session_start(); |
||||
<head> |
|
||||
<title>JS SDK</title> |
|
||||
</head> |
|
||||
<body> |
|
||||
|
|
||||
<?php |
$json_string = '{"data":"F%2Fa5XWeJ%2FDbJzgS3f8dhNekfmVSNhpdBHhg0T5M1rBzECf6Gdtu2Xmv24ZPySqG94%2B%2B3IfDLJEOCoqHPdeh90chbVPcDSvhoGpnzvlWVjf3L60s62qytrECC4wu%2FD9b1HDdxYheJYeBGouqbjO8wtd%2B8yebnOwYdSwrTSoMnSUDJOZSYAcIDDpUkqhA9Th8BNYcNsjYMz%2FIUk4a%2BcZtDDdhZXzPoMuRDJ73svxu2LD%2FNmetgi0F8K3tMG4zItopQTxksjVMQEdOI15iOaI9YTChSL63mw54fGM4J%2FiaVtRI0GiPMklXJriS%2F4v47Zsyknbucz3ze3wTRghcMO%2Bm2vI4R7XfaPFYSgiW8LLEix2dEY5Eo1enCafC%2BYXQpIXJsfDdkoOlKMmSBenJ7s854PC2%2B7aEGsaEYto1Qyn3f%2B7U6l7J6bsVSX0ep%2FSE9dw77okt7Qpq5WgLoQzfx7dLihfAZsxktYii4wNXkYcSMdSS%2F48EucrlcUAkmk8vcMfsXAuL6yOE89EIYRmWdThzFBwx24ql7bFkIlmq0KqRrgv%2FkoMXAG%2B1znJwifGKLN04e%2F7TU6vrJHo1FmOy%2F%2BBd54vzwWrBFSm%2BOs00CE0viPq7kcyONjI61%2BTlzEFVjIBEM93oE33P6cEXPvp8u03fG86dcwaxQIuv5ROhL48nijIlnziEw0S6Z036ZKOQo62fk8O2meUAmgyUzFizbeVIVBRbwpwHHNDfetsxhb9KlY1%2FDyzPzagjUhh%2BhcN4me7axkWmVPpDJNwvprjA5CAiJGV80TySVaDRDLoFBo1%2BiHFEZpT1HVrTINYjs%2BhSLgX8bAHGWcYSA6zcDhKdYU4T5La8sc9pba9htymueXHR5W6L5cBhO4SbfyYGSChatKG1YIAKsgJ85aEHnURjKIL6LxyJ%2BEeCpg7RD56ZvNrktbm%2Fkq%2FFEidfPTUqcHpm07DnrR67tc2WsN36ock7Uk73sUP3R9tUMjQwAuvcZu33Qs5FAm7CSkJfbZPXkCFln%2Be82f9%2FPYo0%2F%2F9NQQFwErQfqZ4P3uJMyQwXZ5NHKwR05AJJ0BHveAmIMc7P0lSM0194pZumaadSfyo3%2FUqxz2MUBmwAd4x2kgQJ0fCMAV6cL%2BSWc1z1ctGSJsei%2FauhHXoA22pdZr051VS8Vi%2B3GCex7tSB6Pv%2B9EQDiQWfAUc76xA6s3aDXcwU4a4s9oRE5xk4%2FHmZi4v1cVflDSGrd%2ByqYxmA7GHwrMSUUyOuotgiVuLL%2FJQ4%2FyZrpxrp9YCwEm3jF6XYg%2Fnr40oBr7p0AF4J%2BIcTmKoY5I8D700N0DjtvUrGww4%2FhhjiJxNWJ7x7I0M9sHwJMqoFrcyZWkeniFaj1RQ%3D%3D","sign":"ZPYR8S4JaHUEOukAg7xD9RAlO7PsK7mfJT6TCHHPvujMI56I1Hto3+NmMtoPMCoPQ/gXh7RGW1wGGzFOJuDGib+0CosVF9fNW++vGWoxxoB7Nk+EGHI+1zTAPzQ1o0OlWARtm5ux9Lo4/tPaoYtjnhjFO8xkpUbJLgVgmN/cWh1ng5uboH8wTO7F423jnGGH+Aq7Vkqrz2zMu4S6bZ/uqvKV/6CLmHNuzCo2xHHi9/n/2yhECnv7tfUcZ8l8/lDsniJ3ycxAEaRrSur2kbcBxMFa5vyDryW/aLiSGgSe6eQERIFlx5yRaQjqagS2TceoqY7CeviyS7KWX7PCaCDYHQ==","orgid":"100018380507D2C"}'; |
||||
function get_jsapi_ticket() { |
$jsonString = urldecode($json_string); |
||||
$access_token = get_access_token(); // 获取access_token |
|
||||
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=".$access_token; |
|
||||
$result = file_get_contents($url); |
|
||||
$obj = json_decode($result); |
|
||||
return $obj->ticket; |
|
||||
} |
|
||||
|
|
||||
// 获取access_token |
|
||||
function get_access_token() { |
|
||||
$appid = 'wx79343915f99167e6'; |
|
||||
$appsecret = 'f2f72c5e0ac29c2373bfaf22cf059c02'; |
|
||||
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$appsecret; |
|
||||
$result = file_get_contents($url); |
|
||||
$obj = json_decode($result); |
|
||||
return $obj->access_token; |
|
||||
} |
|
||||
// 获取当前页面URL |
|
||||
function get_current_url() { |
|
||||
$protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https://' : 'http://'; |
|
||||
$url = $protocol.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; |
|
||||
return $url; |
|
||||
} |
|
||||
|
|
||||
// 生成签名 |
// 解码 Base64 |
||||
function get_signature($jsapi_ticket, $nonceStr, $timestamp, $url) { |
$decodedString = base64_decode($jsonString); |
||||
$string = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$nonceStr."×tamp=".$timestamp."&url=".$url; |
|
||||
return sha1($string); |
|
||||
} |
|
||||
// 设置JS-SDK配置参数 |
|
||||
$jsapi_ticket = get_jsapi_ticket(); // 获取jsapi_ticket |
|
||||
$nonceStr = "sdafsrtyw8u"; // 生成随机字符串 |
|
||||
$timestamp = time(); // 获取时间戳 |
|
||||
$url = get_current_url(); // 获取当前页面URL |
|
||||
$signature = get_signature($jsapi_ticket, $nonceStr, $timestamp, $url); // 获取签名 |
|
||||
$config = array( |
|
||||
'appId' => 'wx79343915f99167e6', |
|
||||
'timestamp' => $timestamp, |
|
||||
'nonceStr' => $nonceStr, |
|
||||
'signature' => $signature, |
|
||||
'jsApiList' => array('chooseWXPay'), |
|
||||
); |
|
||||
// 初始化JS-SDK |
|
||||
echo '<script type="text/javascript">'; |
|
||||
echo 'wx.config('.json_encode($config).');'; |
|
||||
echo '</script>'; |
|
||||
|
|
||||
?> |
|
||||
<!-- 引入微信JS SDK --> |
|
||||
<script type="text/javascript"> |
|
||||
define = null; |
|
||||
require = null; |
|
||||
<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script> |
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script> |
|
||||
// <script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script> |
|
||||
// <script src="https://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script> |
|
||||
<script> |
|
||||
wx.login({ |
|
||||
success: function(res) { |
|
||||
if (res.code) { |
|
||||
// 发送code到后端服务器获取openid |
|
||||
$.ajax({ |
|
||||
url: 'test_get_openid.php', |
|
||||
data: {code: res.code}, |
|
||||
success: function(data) { |
|
||||
// 获取用户openid并处理支付请求 |
|
||||
var openid = data.openid; |
|
||||
console.log(openid); |
|
||||
// ... |
|
||||
}, |
|
||||
error: function(jqXHR, textStatus, errorThrown) { |
|
||||
console.error('Error:', errorThrown); |
|
||||
|
|
||||
} |
// 解析 JSON |
||||
}); |
$response = json_decode($decodedString, true); |
||||
} |
echo $response; |
||||
} |
|
||||
}); |
require_once(BASE_PATH . 'helpers/dalianpay/library/Base.php'); |
||||
</script> |
$Base = new Base(); |
||||
</body> |
|
||||
</html> |
// 获取配置信息 |
||||
|
$config = $Base->getConfig(); |
||||
|
// var_dump('<pre>', $config); |
||||
|
|
||||
|
// 接口URL |
||||
|
$api_url = $config['query_url']; |
||||
|
|
||||
|
// 组装交易报文 |
||||
|
$reqsn_prefix = date('Ymd'); |
||||
|
$trade_data = array( |
||||
|
'orgid' => $config['org_num'], |
||||
|
'cusid' => $config['cusid'], |
||||
|
'version' => $config['version'], |
||||
|
// 'reqsn' => '2023072464be320f45f2a', |
||||
|
'trxid' => '', // 渠道交易流水号 如果返回的有 优先使用 |
||||
|
'randomstr' => md5( uniqid() ), |
||||
|
); |
||||
|
|
||||
|
// 解析响应报文 |
||||
|
|
||||
|
|
||||
|
$response_data_crypted = $response['data']; |
||||
|
$response_sign = $response['sign']; |
||||
|
// echo "\r\n"; |
||||
|
// echo "[response sign]: {$response_sign}"; |
||||
|
// echo "\r\n"; |
||||
|
// echo "[response data (ciphertext)]: {$response_data_crypted}"; |
||||
|
|
||||
|
// 解密响应密文 |
||||
|
$response_data = $Base->Crypt->decryptTradeData($response_data_crypted); |
||||
|
if($response_data === false) |
||||
|
{ |
||||
|
return $Base->Crypt->err_msg; |
||||
|
die(); |
||||
|
} |
||||
|
return $response_data; |
||||
|
|
||||
|
?> |
||||
|
|||||
Loading…
Reference in new issue