php:7.3 .4 Nginx:1.15.11
第一步:
申请appid :微信公众平台获取
商户appkey :微信公众平台获取
商户号:微信商户平台获取
证书序列号:微信商户平台获取
APIV3密钥:微信商户平台获取
配置域名 :微信公众平台操作 微信商户平台 操作
IP白名单配置:微信公众平台操作
关联的AppID账号:微信商户平台 操作
证书下载:证书三个:2个商户的证书在微信商户平台获取,一个平台证书用下载器下载
下载平台证书:1先安装sdk(我用composer安装)
1安装 我使用的compser 安装
omposer require wechatpay/wechatpay-guzzle-middleware
2下载证书
php -f ./vendor/bin/CertificateDownloader.php -- -k APIv3密钥 -m 商户号 -f 商户的私钥文件 -s 商户证书的序列号 -o 下载成功后保存证书的路径
注意:商户的私钥文件 要携带file:// 协议 我是进入到项目根目录 执行的程序 没有携带也可以下载
3准备工作完成,开始构建一个客户端实例
这里看源代码就可以了
4Native支付下单
注意:这里统一下单是生成的url 自己生成 二维码 ,支付完成后,通知是异步的 自己要构建交互逻辑 列入:二维码有效期60秒 在页面写一个定时器 2秒查询一次 查询支付结果(Native支付查询接口),这样就可以解决
5Native支付通知
要先获取到回传信息,在json_decode获取到解密需要的参数 执行解密 可以得到订单支付信息
6,H5支付
这个没有什么难点,返回的是url 打开就行 注意:不能在微信内置浏览器运行,支付宝种好像也屏蔽了
7,JSAPI支付下单
这个注意:先获取prepay_id 再根据prepay_id 与 timeStamp与 nonceStr 与appid获取签名 这个签名和其它的签名不太一样 没有url和$http_method
$message = $body['appId']."\n".
$body['timeStamp']."\n".
$body['nonceStr']."\n".
$body['package']."\n";
openssl_sign($message, $raw_sign, openssl_get_privatekey(file_get_contents( WeChatTwo::$merchantPrivateKeyFilePath )), 'sha256WithRSAEncryption');
调起支付:的参数 时间戳和字符串最好和获取签名的是一样的 ios系统调起时间戳参数要加上 strval函数
WeixinJSBridge.invoke('getBrandWCPayRequest', {
"appId" : result.appId, //公众号ID,由商户传入
"timeStamp": strval(result.timeStamp), //时间戳,自1970年以来的秒数
"nonceStr" : result.nonceStr, //随机串
"package" : result.package,
"signType" : result.signType, //微信签名方式:
"paySign" : result.paySign, //微信签名
},
function (res) {
if (res.err_msg == "get_brand_wcpay_request:ok") {
setTimeout(function(){
window.location.href = "{{route('home.center')}}";
},500);
}else{
alert("支付过失败,请重新支付");
setTimeout(function(){
window.location.href = "{{route('home.index')}}";
},500);
}
});
9就是这三个的回调了 都是一样的 获取到参数 解密 修改订单 就okle
10,退款还没有做 应该和下单一样 注意的就是url和参数