Thinkphp6接入打通微信小程序支付功能

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

要实现微信小程序的支付功能,首先必须要有订单支撑。

一 、小程序通过请求接口创建平台订单,订单创建成功后返回小程序拉起支付需要的数据。

Db::startTrans();
//这个是自己平台的订单信息
$orderInfo=[];
//通过JSAPI下单
// 1、请求参数
$postJson = [
    "appid" => '小程序appid',
    "mchid" => '商户号',
    "description" => '商品信息',
    "out_trade_no" => '自己平台的订单号',
    "notify_url" => '用于接收微信支付结果的回调接口',
    "amount" => [
        "total" => 100 //付款金额,单位为分
    ],                    
    "payer" => [
        "openid" => '付款用户的openid',
    ]
];
$time = time();
// 2、头部签名
$url = "https://api.mch.weixin.qq.com/v3/pay/transactions/jsapi";
$urlarr = parse_url($url);
$data = json_encode($postJson);
$noncestr = $time;
$key = $this->getSign($data, $urlarr['path'], $noncestr, $time);//签名
$token = sprintf('mchid="%s",serial_no="%s",nonce_str="%s",timestamp="%d",signature="%s"', '商户号', '微信支付API证书序列号', $noncestr, $time, $key);//头部信息
$header = [
    'Content-Type:' . 'application/json; charset=UTF-8',
    'Accept:application/json',
    'User-Agent:*/*',
    'Authorization: WECHATPAY2-SHA256-RSA2048 ' . $token
];
$resp = http_post($url,$postJson,$header);
$resp = json_decode($resp,true);
if(isset($resp['prepay_id'])){
    $return = [
        "appId"=>'小程序appid',
        "timeStamp"=>$time,
        'package' => 'prepay_id=' . $resp['prepay_id'],
        'paySign' => $this->getWechartSign('小程序appid', $time, $noncestr, 'prepay_id=' . $resp['prepay_id']),//微信支付(小程序)签名
        "nonceStr"=>$time
    ];
    Db::commit();
    return self::jsonStr(['code'=>1,'msg'=>'下单成功','data'=>$return]);
}else{
    Db::rollback();
    return self::jsonStr(['code'=>0,'msg'=>'支付订单创建失败!','data'=>$resp]);
}

代码中用到的签名方法如下

//微信支付签名
public function getSign($data = [], $url, $randstr, $time) {
    $str = "POST" . "\n" . $url . "\n" . $time . "\n" . $randstr . "\n" . $data . "\n";
    $key = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/cert/apiclient_key.pem');//在商户平台下载的秘钥
    $str = $this->getSha256WithRSA($str, $key);
    return $str;
}
//调起支付的签名
public function getWechartSign($appid, $timeStamp, $noncestr, $prepay_id) {
    $str = $appid . "\n" . $timeStamp . "\n" . $noncestr . "\n" . $prepay_id . "\n";
    $key = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/cert/apiclient_key.pem');
    $str = $this->getSha256WithRSA($str, $key);
    return $str;
}
public function getSha256WithRSA($content, $privateKey) {
    $binary_signature = "";
    $algo = "SHA256";
    openssl_sign($content, $binary_signature, $privateKey, $algo);
    $sign = base64_encode($binary_signature);
    return $sign;
}

二、微信小程序获取到上一步返回的调起微信支付的配置信息,然后通过wx.requestPayment调起支付界面。文章来源地址https://www.toymoban.com/news/detail-714872.html

wx.requestPayment({
    "timeStamp": timeStamp+'',//必须字符串类型
    "nonceStr":  nonceStr+'',//必须字符串类型
    "package": package,
    "signType": "RSA",
    "paySign": paySign,
    "success":function(res){
        if (res.errMsg === 'requestPayment:ok') {
            wx.showModal({
            title: '支付成功',
            showCancel:false,
            complete: (res) => {
                //支付成功后的操作
            })
        }else{
            wx.showToast({
                icon:"none",
                title: '支付失败',
            })
        }
    },
    "fail":function(res){
        if(res.errMsg == 'requestPayment:fail cancel'){
            wx.showToast({
                icon:"none",
                title: '支付已取消',
            })
        }else{
            wx.showToast({
                icon:"none",
                title: res.errMsg
            })
        }
    }
});

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

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

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

相关文章

  • 微信公众号程序或微信小程序接入微信支付流程(前后端程序示例)

      微信公众号程序或微信小程序项目中基本都要有微信支付。支付场景基本就是点击支付,然后手机底部拉起输入微信支付密码弹窗,密码输入正确后,支付完成。但是无论是微信小程序或微信公众号程序都是在后端调用微信api接口进行统一下单,将接口返回数据回传前端

    2024年02月09日
    浏览(62)
  • 原生PHP及thinkphp6接入阿里云短信

    申请accesskey 获取到Accesskey ID和Accesskey Secret保存下来,一会要用到 添加测试手机号,在接口测试能否正常发送 下载阿里云短信sdk,使用composer下载,没有安装请先安装 安装可以安装到任意文件夹下,后面代码写好后,直接复制到tp项目内就行,最新版本安装可能composer查找不

    2024年02月05日
    浏览(49)
  • JAVA接入小程序微信支付

    1、在 微信公众平台 注册应用,并保存好appId和appSecret 2、在微信支付商户平台 注册一个商户,保存好mchId(商户id)、api_key(支付密钥)、以及商户证书序列号。还需要将支付商户密钥文件下载放到项目resources目录中 (结构中包含的其他内容与支付无关) 1、导入jar包 2、在y

    2024年04月14日
    浏览(41)
  • h5 小程序 公众号 接入微信支付开发

    ps:一般公司开发不需要确认 流程:下单-调起支付-返回结果跳回本页面 开发准备: 1: 配置并授权项目地址(地址需要是完整的)(配置的是点击支付调起微信的那个本项目地址) 2: 获取code(为获取openid做准备) window.location.href= = \\\'https://open.weixin.qq.com/connect/oauth2/authorize?

    2024年02月15日
    浏览(62)
  • 【微信小程序支付功能】uniapp实现微信小程序支付功能

    场景 :要实现公司微信小程序的电商模块微信支付功能 一.实现步骤和思路 在登录状态,登录的时候获取到code,利用code获取到 openid: https://blog.csdn.net/weixin_45308405/article/details/128868377?spm=1001.2014.3001.5501 在manifest.json文件“App模块配置”项的“Payment(支付)”下,勾选“微信支付

    2024年02月11日
    浏览(55)
  • 【独立版】喵喵测评小程序,一款基于ThinkPHP6框架开发的抖音快手测评小程序

    喵喵测评是一款基于ThinkPHP6框架开发的抖音快手测评小程序,支持微信小程序、字节小程序、快手小程序、QQ小程序、H5端等。 五大项盈利方式: 第一项:流量主赚钱模式(流量抽红收入+流量加成收入) 第二项:测评单项支付赚钱模式(测评支付抽点收入) 第三项:会员套

    2024年02月09日
    浏览(47)
  • ThinkPHP 5 支付宝微信支付(支付宝H5,微信H5、APP支付、公众号支付)

     Pay.php支付控制器 模型:Weixin.php Weixin.php Alipay.php 支付宝需要的submit文件: 点击下载 wx.html在使用微信客户端支付时需要的页面    

    2024年02月08日
    浏览(47)
  • 【微信支付】java-微信小程序支付-V3接口

    最开始需要在微信支付的官网注册一个商户; 在管理页面中申请关联小程序,通过小程序的 appid 进行关联;商户号和appid之间是多对多的关系 进入微信公众平台,功能-微信支付中确认关联 具体流程请浏览官方文档:接入前准备-小程序支付 | 微信支付商户平台文档中心 流程走

    2024年02月06日
    浏览(53)
  • 微信小程序——支付

    小程序支付是专门被定义使用在小程序中的支付产品。目前在小程序中能且只能使用小程序支付的方式来唤起微信支付。 先判断协议字段返回,再判断业务返回,最后判断交易状态 除被扫支付场景以外,商户系统先调用统一下单接口在微信支付服务后台生成预支付交易单,

    2024年02月07日
    浏览(90)
  • 微信小程序支付流程

    申请微信支付,配置小程序秘钥,设置秘钥和下载证书,配置HTTPS服务器即可。 具体步骤 1、申请微信支付。小程序认证以后,可以在小程序后台,微信支付菜单栏,申请微信支付。填写企业信息和对公账户,微信支付会打一笔随机金额到对公账户,输入金额完成验证后,在

    2024年02月13日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包