// 微信内置浏览器支付注意细节:
用类型为JSAPI的方式用微信的
统一下单接口( $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";)
返回数据
二位数组
有
appid
prepay_id
还有签名什么的(注意这个签名不是我们后来钓起公众号支付的那个签名配置,我曾在此陷入1天)
等, 我们要用这两个参数进行获得签名
例如我的代码:
// 先获得随机串。这个随机串并不是JSAPI的方式返回的随机串注意,下面是我的代码
// 签名设置中随机字符串
function nonceStr(){
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str ="";
$length = 32;
for ( $i = 0; $i < $length; $i++ ) {
$str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
//随机字符串
return $str;
}
$timeStamp = time();
// 进行生成随机字符串
$nonceStr = nonceStr();
// key值,商户申请的时候约定的key值
$useKey = "xxxxxxxxx";// 这个是支付申请时设置的密码
//这里面只要prepayid和appId是同一下单接口返回的数据
$arrayName = array('appId'=>$appid,'timeStamp'=>$timeStamp,'nonceStr'=>$nonceStr,'package'=>$prepayid,'signType'=>"MD5");
ksort($arrayName);
$string1 = '';
foreach ($arrayName as $key => $value) {
$string1.='&'.$key.'='.$value;
}
$string1 = ltrim($string1,'&');
$string = $string1 . "&key=".$useKey;
$string = md5($string);
$sign = strtoupper($string);//MD5签名处理
------------------------
上面就是把所有的配置数据准备完毕了,微信中有2种微信内置浏览器的支付方式
第一种:使用chooseWxpay,这种方法比较老,而且还需要配置微信的jsdk很不能方便,我们直接讲第二种:不需要配置jsdk
第二种:getBrandWCPayRequest方式进行微信支付方式
//只要把下面的配置,放进去即可使用
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId" :"<?php echo $appid;?>", //公众号名称,由商户传入
"timeStamp":"<?php echo $timeStamp;?>", //时间戳,自1970年以来的秒数
"nonceStr" :"<?php echo $nonceStr;?>" , //随机串
"package" : "<?php echo $prepayid;?>",
"signType" : "MD5", //微信签名方式:
"paySign" : "<?php echo $sign;?>" //微信签名
},
if(res.err_msg == "get_brand_wcpay_request:ok" ){
// 直接进行ajax操作处理把加密的订单号传过去
// 1更改后台状态2,提示更改成功3.进行跳转处理
sd(<?php echo $dataNameId;?>,"<?php echo $order_sn;?>");
//orderSn
} // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
});
}
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}
用类型为JSAPI的方式用微信的
统一下单接口( $url = "https://api.mch.weixin.qq.com/pay/unifiedorder";)
返回数据
二位数组
有
appid
prepay_id
还有签名什么的(注意这个签名不是我们后来钓起公众号支付的那个签名配置,我曾在此陷入1天)
等, 我们要用这两个参数进行获得签名
例如我的代码:
// 先获得随机串。这个随机串并不是JSAPI的方式返回的随机串注意,下面是我的代码
// 签名设置中随机字符串
function nonceStr(){
$chars = "abcdefghijklmnopqrstuvwxyz0123456789";
$str ="";
$length = 32;
for ( $i = 0; $i < $length; $i++ ) {
$str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}
//随机字符串
return $str;
}
$timeStamp = time();
// 进行生成随机字符串
$nonceStr = nonceStr();
// key值,商户申请的时候约定的key值
$useKey = "xxxxxxxxx";// 这个是支付申请时设置的密码
//这里面只要prepayid和appId是同一下单接口返回的数据
$arrayName = array('appId'=>$appid,'timeStamp'=>$timeStamp,'nonceStr'=>$nonceStr,'package'=>$prepayid,'signType'=>"MD5");
ksort($arrayName);
$string1 = '';
foreach ($arrayName as $key => $value) {
$string1.='&'.$key.'='.$value;
}
$string1 = ltrim($string1,'&');
$string = $string1 . "&key=".$useKey;
$string = md5($string);
$sign = strtoupper($string);//MD5签名处理
------------------------
上面就是把所有的配置数据准备完毕了,微信中有2种微信内置浏览器的支付方式
第一种:使用chooseWxpay,这种方法比较老,而且还需要配置微信的jsdk很不能方便,我们直接讲第二种:不需要配置jsdk
第二种:getBrandWCPayRequest方式进行微信支付方式
//只要把下面的配置,放进去即可使用
function onBridgeReady(){
WeixinJSBridge.invoke(
'getBrandWCPayRequest', {
"appId" :"<?php echo $appid;?>", //公众号名称,由商户传入
"timeStamp":"<?php echo $timeStamp;?>", //时间戳,自1970年以来的秒数
"nonceStr" :"<?php echo $nonceStr;?>" , //随机串
"package" : "<?php echo $prepayid;?>",
"signType" : "MD5", //微信签名方式:
"paySign" : "<?php echo $sign;?>" //微信签名
},
function(res){
//出问题调试 //alert(res.err_desc);
// 表明是支付成功的时候的操作处理if(res.err_msg == "get_brand_wcpay_request:ok" ){
// 直接进行ajax操作处理把加密的订单号传过去
// 1更改后台状态2,提示更改成功3.进行跳转处理
sd(<?php echo $dataNameId;?>,"<?php echo $order_sn;?>");
//orderSn
} // 使用以上方式判断前端返回,微信团队郑重提示:res.err_msg将在用户支付成功后返回 ok,但并不保证它绝对可靠。
});
}
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
}
}else{
onBridgeReady();
}
里面的一些问题截图和解释:
1.后台配置很重要23级目录注意
2.web开发者工具不支持支付测试(直接用手机即可)
3.老版本的支付方式
4.新版不需要jsdk的大致代码