踩坑太多,不多说,直接上完整后端代码
<?php
header('Content-type:text/html; Charset=utf-8');
ini_set('date.timezone','Asia/Shanghai');
$data_s = file_get_contents('php://input');
$data_s = json_decode($data_s,true);
//统一下单
function wechartAddOrder($name,$ordernumber,$money,$openid,$timeStamp,$noncestr){
$url = "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi";
$urlarr = parse_url($url);
$appid = '小程序APPID';//appID
$mchid = '微信支付商户ID';//商户ID
$xlid = '微信支付公钥序列号';//秘钥序列号 可在这个网址中查询 https://myssl.com/cert_decode.html
$data = array();
$time = $timeStamp;
$data['appid'] = $appid;
$data['mchid'] = $mchid;
$data['description'] = $name;//商品描述
$data['out_trade_no'] = $ordernumber;//订单编号
$data['notify_url'] = "你的域名/你的支付目录路径/notify.php";//回调接口 需根据自己的情况修改
$data['amount']['total'] = intval($money * 1);//金额 单位 分
$data['payer']['openid'] = $openid;//用户openID
$data = json_encode($data);
$key = getSign($data,$urlarr['path'],$noncestr,$time);//签名
$token = sprintf('mchid="%s",serial_no="%s",nonce_str="%s",timestamp="%d",signature="%s"',$mchid,$xlid,$noncestr,$time,$key);//头部信息
$header = array(
'Content-Type:'.'application/json; charset=UTF-8'