微信小程序JSAPI下单支付PHP前后端教程

这篇具有很好参考价值的文章主要介绍了微信小程序JSAPI下单支付PHP前后端教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

准备数据:

微信支付API证书,微信支付商户号,小程序appid,微信支付API证书序列号

获取微信支付api证书教程:如何下载微信支付证书(API证书)_荒~的博客-CSDN博客_微信支付证书

获取微信支付API证书序列号:点击管理证书即可看到

微信小程序JSAPI下单支付PHP前后端教程

 文章来源地址https://www.toymoban.com/news/detail-503362.html

第一步:生成预支付交易单

参考文档:微信支付-开发者文档 (qq.com)

按照请求参数的需求创建出一个json数据 

数据示例

微信小程序JSAPI下单支付PHP前后端教程

这是前端创建的一个请求参数的对象

微信小程序JSAPI下单支付PHP前后端教程

下面展示PHP后端的文件目录,cert用于上传微信支付API证书

微信小程序JSAPI下单支付PHP前后端教程

这是cert文件夹内容

微信小程序JSAPI下单支付PHP前后端教程开始写PHP端的pay.php文件用于生成签名

参考文档签名生成-接口规则 | 微信支付商户平台文档中心 (qq.com)

下面我们以JSAPI下单接口为例参考文档微信支付-开发者文档 (qq.com)

请求URL:https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi

请求方式:POST

<?php
//微信支付API证书序列号
$serial_no="ABCDEFG";
//你的小程序appid
$appid="123456";
//$body是用于接收前端请求携带的参数
$body=json_decode(file_get_contents("php://input"),true);
//请求接口的请求方式
$http_method=$body['http_method'];
//生成时间戳
$timestamp = time();
//生成随机数
$nonce=randomString(32);
//接收需要给接口发起请求携带的请求体
$data=$body['data'];
//接口url
$url=$body['url'];
$url_parts = parse_url($url);
$canonical_url = ($url_parts['path'] . (!empty($url_parts['query']) ? "?${url_parts['query']}" : ""));
$message = $http_method."\n".
$canonical_url."\n".
$timestamp."\n".
$nonce."\n".
$data."\n";
//获取私钥文件
$mch_private_key = file_get_contents('./cert/apiclient_key.pem');
//生成签名
openssl_sign($message, $raw_sign,$mch_private_key, 'sha256WithRSAEncryption');
$sign =base64_encode($raw_sign);
$token=sprintf('mchid="%s",nonce_str="%s",timestamp="%d",serial_no="%s",signature="%s"',
$appid, $nonce, $timestamp, $serial_no, $sign);
//输出数据
print_r(json_encode(["msg"=>"预订单生成成功","code"=>200,"token"=>$token,"data"=>$data,"timestamp"=>$timestamp,"nonce"=>$nonce]));
// 生成随机字符串函数
function randomString($len = 32)
{
    $string = '';
    $char = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
    for ($i = 0; $i < $len; $i++) {
        $string .= $char[mt_rand(0, strlen($char) - 1)];
    }
    return $string;
}
?>

下面是前端对pay.php文件发起请求

微信小程序JSAPI下单支付PHP前后端教程

请求成功将会得到 timestamp(时间戳),nonce(随机字符串),data(发送给jsapi接口的请求体)

第二步:前端对jsapi下单接口发起请求

请求URL:https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi

请求方式:POST

微信小程序JSAPI下单支付PHP前后端教程

 请求成功后会返回prepay_id,如果没有返回就说明出错了

第三步:写后端sign.php文件

<?php
//你的小程序appid
$appid="wx123";
//用于接收前端发起请求携带的参数
$body=json_decode(file_get_contents("php://input"),true);
//用户对JSAPI下单接口发起请求后得到的prepay_id
$prepay_id=$body['prepay_id'];
//时间戳
$timestamp =$body['timestamp'];
//随机字符串
$nonce=$body['nonce'];
$message = $appid."\n".
$timestamp."\n".
$nonce."\n".
$prepay_id."\n";
//获取私钥文件
$mch_private_key = file_get_contents('./cert/apiclient_key.pem');
// 生成签名
openssl_sign($message, $raw_sign,$mch_private_key, 'sha256WithRSAEncryption');
$sign = base64_encode($raw_sign);
print_r(json_encode(["msg"=>"签名成功","code"=>200,"sign"=>$sign]));
?>

对sign.php文件发起请求

微信小程序JSAPI下单支付PHP前后端教程

请求成功后得到sign,最后调用小程序的拉起支付接口

微信小程序JSAPI下单支付PHP前后端教程这是paysuccess.php文件用于支付成功的通知地址

微信小程序JSAPI下单支付PHP前后端教程 

 

 最后注意:没有对支付做安全处理请自行解决

到了这里,关于微信小程序JSAPI下单支付PHP前后端教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包