微信支付 SDK wechatpay-guzzle-middleware(php),JSAPI+H5+Native开发

武功
2023-12-01

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和参数

 类似资料: