• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >微信公众号 > 微信支付统一下单,用PHP怎么实现?(代码全)

微信支付统一下单,用PHP怎么实现?(代码全)

作者:匿名 字体:[增加 减小] 来源:互联网

匿名通过本文主要向大家介绍了php,微信,微信支付等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
H5支付时出现“签名错误”怎么办?注意调用微信“统一下单”接口后返回pre_pay_id后,需要用户再次进行签名返回给HTML; “支付目录没有授权”,进入微信商家管理后台设置即可。

一、Model层,Wxpay.php

<?php
namespace app\common\model;
class Wxpay
{
    private $appid = 'wxe8*****d4';                            //微信公众号appid
    private $secret = '37c4*******5f0';                        //微信公众号appsecret               
    private $mchid = '13******02';                             //商家号
    private $key = '5363e******49e8';                          //支付密钥
    private $sslcert_path = 'apiclient_cert.pem';              //证书所在绝对路径
    private $sslkey_path = 'apiclient_key.pem';                //证书所在绝对路径
    
    public function __construct($appid = '', $secret = '', $mchid = '', $key = '')
    {
        if(!empty($appid))     $this->appid = $appid;
        if(!empty($secret))    $this->secret = $secret;
        if(!empty($mchid))     $this->mchid  = $mchid;
        if(!empty($key))       $this->key= $key;
    }
    /*
     * 微信内H5调起支付
     * @params string $openid : 微信用户openid
     * @params string $out_trade_no : 商家生成的订单号(唯一性)
     * @params int $total_fee : 支付金额,单位分
     * return array $ret : 返回支付时所需要的数据
     * */
    public function payForWeixin($openid,$out_trade_no,$total_fee,$attach='微信支付',$body='微信支付')
    {
        //支付数据
        $data['openid'] = $openid;
        $data['out_trade_no'] = $out_trade_no;
        $data['total_fee'] = $total_fee*100;
        $data['spbill_create_ip'] = $_SERVER["REMOTE_ADDR"];
        $data['attach'] = $attach;
        $data['body'] = $body;
        $data['appid'] = $this->appid;
        $data['mch_id'] = $this->mchid;
        $data['nonce_str'] = random(12);
        $data['trade_type'] = "JSAPI";
        $data['notify_url'] = "http://****.com/home/wxpaynofiy/notify.html";

        $sign = $this->getParam($data);
        $dataXML = "<xml>
           <appid>".$data['appid']."</appid>
           <attach>".$data['attach']."</attach>
           <body>".$data['body']."</body>
           <mch_id>".$data['mch_id']."</mch_id>
           <nonce_str>".$data['nonce_str']."</nonce_str>
           <notify_url>".$data['notify_url']."</notify_url>
           <openid>".$data['openid']."</openid>
           <out_trade_no>".$data['out_trade_no']."</out_trade_no>
           <spbill_create_ip>".$data['spbill_create_ip']."</spbill_create_ip>
           <total_fee>".$data['total_fee']."</total_fee>
           <trade_type>".$data['trade_type']."</trade_type>
           <sign>".$sign."</sign>
        </xml>";
        $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
        $result =  $this->https_post($url,$dataXML);
        $ret = $this->xmlToArray($result);
        
        if($ret['return_code'] == 'SUCCESS' && $ret['return_msg'] == 'OK') {
            return array(
                'appId'     => $this->appid,
                'timeStamp' => time(),
                'nonceStr'  => $data['nonce_str'],
                'package'   => 'prepay_id='.$ret['prepay_id'],
                'signType'  => 'MD5',
                'paySign'   => $sign
            );
        } else {
            $this->errorLog("微信支付失败,",$ret);
            return null;
        }
    }
     /*
     *   微信二维码支付
     *   @params string $openid : 用户的openid
     *   @params string $out_trade_no : 商户订单号
     *   @params number $total_fee : 订单金额,单位分
     *   return string $code_url : 二维码URL链接
     */
    public function payForQrcode($out_trade_no,$total_fee,$body="魔盒CMS",$attach="微信支付")
    {
        //支付数据
        $data['out_trade_no'] = $out_trade_no;
        $data['total_fee'] = $total_fee*100;
        $data['spbill_create_ip'] = $_SERVER["REMOTE_ADDR"];
        $data['attach'] = $attach;
        $data['body'] = $body;
        $data['appid'] = $this->appid;
        $data['mch_id'] = $this->mchid;
        $data['nonce_str'] = random(12);
        $data['trade_type'] = "NATIVE";
        $data['notify_url'] = "http://****.com/home/wxpaynofiy/notify.html";

        $sign = $this->getParam($data);
        $dataXML = "<xml>
           <appid>".$data['appid']."</appid>
           <attach>".$data['attach']."</attach>
           <body>".$data['body']."</body>
           <mch_id>".$data['mch_id']."</mch_id>
           <nonce_str>".$data['nonce_str']."</nonce_str>
           <notify_url>".$data['notify_url']."</notify_url>
           <out_trade_no>".$data['out_trade_no']."</out_trade_no>
           <spbill_create_ip>".$data['spbill_create_ip']."</spbill_create_ip>
           <total_fee>".$data['total_fee']."</total_fee>
           <trade_type>".$data['trade_type']."</trade_type>
           <sign>".$sign."</sign>
        </xml>";
        $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
        $result =  $this->https_post($url,$dataXML);
        $ret = $this->xmlToArray($result);
        if($ret['return_code'] == 'SUCCESS' && $ret['return_msg'] == 'OK') {
            return $ret['code_url'];
        } else {
            $this->errorLog("获取微信支付二维码失败,",$ret);
            return null;
        }
    }

    /*
     * 订单查询
     * @params string $transaction_id : 微信订单号
     * @params string $out_trade_no : 商家订单号(与微信订单号二选一)
     * */
    public function findOrder($out_trade_no)
    {
        $data['appid'] = $this->appid;
        $data['mch_id'] = $this->mchid;
        $data['nonce_str'] = random(12);
        $data['out_trade_no'] = $out_trade_no;
        $sign = $this->getParam($data);
        $dataXML = "<xml>
            <appid>".$data['appid']."</appid>
            <mch_id>".$data['mch_id']."</mch_id>
            <nonce_str>".$data['nonce_str']."</nonce_str>
            <out_trade_no>".$data['out_trade_no']."</out_trade_no>
            <sign>".$sign."</sign>
         </xml>";
        $url = 'https://api.mch.weixin.qq.com/pay/orderquery';
        $result =  $this->https_post($url,$dataXML);
        $ret = $this->xmlToArray($result);
        if($ret['return_code'] == 'SUCCESS' && $ret['return_msg'] == 'OK') {
            return $ret;
        } else {
            $this->errorLog("查询微信支付订单失败,",$ret);
            return null;
        }
    }
    /*
    * 退款订单查询
    * @params stri



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 微信支付统一下单,用PHP怎么实现?(代码全)
  • 还是代码好用,几步就能判断用户是否已关注公众号
  • 终于整理出来了,用微信第三方平台授权小程序业务
  • php 实现微信开发获取用户信息
  • PHP实现微信扫码支付功能
  • php实现微信sdk分享接口
  • 通过PHP来实现APP微信支付的实例分析
  • php实现微信跳一跳小游戏
  • Thinkphp整合微信支付功能详解
  • 检索kintone记录信息的方法

相关文章

  • 微信开发vs远程调试
  • 微信公众平台开发在线点歌功能介绍
  • 利用java开发微信实现微信主动推送消息实例
  • 微信开发实战之顶部导航栏(选项卡)
  • 微信开发—带参数二维码的使用
  • 分享一篇基于.NET的微信SDK
  • .net微信公众号函数定义与用法汇总
  • 使用.NET微信公众号开发之准备工作步骤介绍
  • 微信公众平台开发入门教程(图文详解)
  • PHP实现微信网页授权开发的步骤

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 微信公众平台开发:Web代理功能
    • 分享3款微信开发开源框架
    • 微信开发需要注意哪些事项?
    • 详解微信开发微信jsapi与java初步接入方法
    • ajax 实现微信网页授权登录的方法介绍
    • 用.net开发微信如何获取AccessToken介绍
    • C#开发微信门户及应用微信企业号的通讯录管理开发之成员管理
    • .NET微信公众号获取OpenID和用户信息实例解析
    • 微信JS-SDK之图像接口开发
    • C#微信开发系列-获取接口调用凭据

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有