微信小程序支付 后端PHP(二)

近期改了下PHP代码:

<?php
/**
 * Created by PhpStorm.
 * User: UFO
 * Date: 17/8/21
 * Time: 下午3:16
 * 参考链接:https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=9_1&index=1
 */
require_once "WxPay.ConfigPro.php";
class WxmPayPro  {

     function wx_getPayRequest( $mid, $openid, $orderid, $rmb, $title, $body, $type='1' )
    {

        $tradeid = $mid.$type;//订单号,这个根据自己需求自定义, mid是支付订单里第三方也就是商户我自己的业务逻辑,不写也可以
        $nonce   = $orderid.mt_rand(10000,99999);
        $notify  = 'http://'.Plat_Const::getApiHost().'/pay/miniwxpage.php';//回调地址,自己写,支付成功回调,在回调页面进行更改与用户金钱相关的代码
        $url     = 'https://api.mch.weixin.qq.com/pay/unifiedorder';
        // post data
        $now  = time().'';//时间
        $appid = Plat_PayFunc::getMiniWxSecret( $millid, 'appid' );//小程序ID 写到一个类里面了 方便后期修改 当然也可以在这里直接写
        $mchid = Plat_PayFunc::getMiniWxSecret( $millid, 'mchid' );//商户号 
        $data = array(
            'appid'            => $appid,
            'mch_id'           => $mchid,
            'spbill_create_ip' => CBase_Ip::getLocalIp(),//终端ip   Y
            'nonce_str'        => $nonce,                //随机字符串Y
            'openid'           => $openid,               //用户标识 N
            'body'             => $title,                //商品描述 Y
         // 'detail'           => $body,                 //商品详情 N
            'attach'           => $tradeid,              //附加数据 N
            'out_trade_no'     => $tradeid,              //商户订单号 Y
            'total_fee'        => $rmb,                  //总金额 单位分 int Y
            'notify_url'       => $notify,               //通知地址 Y
            'trade_type'       => 'JSAPI',
        );
  
        $data[ 'sign' ] = self::wx_getPkgSign($millid, $data);
        $ret  = Plat_Net::post( $url, self::wx_toXml($data) );//自己写的网络请求类,这里也可以用其他网络请求
        $json = self::wx_parseXML( $ret );
        if( !$json || !isset($json[ 'prepay_id' ]) )
        {
            return array( 'ret' => 'fail', 'tip' => $json[ 'return_msg' ] );
        }

        // prepare for client
        $prepayid = $json[ 'prepay_id' ];
        $req = array(
            'appId'     => $appid,
            'timeStamp' => $now,
            'nonceStr'  => $nonce,
            'package'   => 'prepay_id='.$prepayid,
            'signType'  => 'MD5',
        );
        $req[ 'paySign' ] = self::wx_getPkgSign( $millid, $req );
        return json_encode($req);
    }

    public function wx_getPkgSign( $millid, $req )
    {
        $pars = '';
        ksort( $req );
        foreach( $req as $k => $v )
        {
            if( 'sign' != $k && $v !== '' )
            {
                $pars .= $k . '=' . $v . '&';
            }
        }
        $mkey = Plat_PayFunc::getMiniWxSecret( $millid, 'key' );
        $pars .= 'key='. $mkey;
        return strtoupper( md5($pars) );
    }

    public  function wx_toXML( $data )
    {
        $xml = '<xml>';
        foreach( $data as $key => $val )
        {
            $xml .= '<' . $key . '><![CDATA[' . $val . ']]></' . $key . '>';
        }
        $xml .= '</xml>';
        return $xml;
    }

    public  function wx_parseXML( $str )
    {
        $rsp = array();
        $xml = @simplexml_load_string( $str );
        if( $xml && $xml->children() )
        {
            foreach( $xml->children() as $node )
            {
                if( $node->children() )
                {
                    $k = $node->getName();
                    $nodeXml = $node->asXML();
                    $v = substr( $nodeXml, strlen($k)+2, strlen($nodeXml)-2*strlen($k)-5 );
                }
                else
                {
                    $k = $node->getName();
                    $v = (string)$node;
                }
                $rsp[ $k ] = $v;
            }
        }
        return $rsp;
    }
}

?>
然后调用:

 $data   = WxmPayPro::wx_getPayRequest( $mid, $openid, $orderid, $prmb, $title, $body, '1' );
 data即为小程序前端支付所需数据



  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 微信小程序php后端搭建,主要分为以下几个步骤: 1. 安装php环境和相关依赖; 2. 配置php环境和相关依赖; 3. 编写后端代码; 4. 部署代码到服务器。 在搭建之前,你需要先确定要使用的php框架和数据库。目前常见的php框架有Laravel、Yii2、ThinkPHP等,而数据库则有MySQL、PostgreSQL等。这里以Laravel和MySQL为例。 1. 安装php环境和相关依赖 这里推荐使用PHP-FPM和NGINX,使用它们可以大大提升php应用的性能和稳定性。在安装完php和 NGINX 后,还需要安装相应的依赖,比如Composer等。 2. 配置php环境和相关依赖 在配置php环境和相关依赖时,需要分别对php、Composer和NGINX进行配置。配置好后就可以进行后端代码的编写。 3. 编写后端代码 使用Laravel框架编写php后端代码,可以利用它丰富的语法和类库,快速地实现业务逻辑。比如,实现用户注册、登录、权限管理等功能。 4. 部署代码到服务器 在开发和测试完成后,需要将php后端代码部署到服务器上。需要将代码和依赖一起打包,上传到服务器上。在服务器上,需要配置好环境、数据库等,然后再启动服务,从而让微信小程序前端可以请求到后端以实现想要的效果。 这是一个较为简单的微信小程序php后端搭建过程,实际操作会因人而异。如果您初次尝试,建议细心阅读相关配置文件和配置文档,以便稳定运行您的小程序。 ### 回答2: 微信小程序后端搭建需要使用到PHP语言,具体操作流程如下: 首先,需要搭建PHP环境,可以使用工具如WAMP、XAMPP或LAMP等。安装完成后,需要新建一个PHP文件。 接下来,需要引入微信官方提供的SDK,代码如下: require_once "{path}/wechat_sdk.php"; 除了SDK以外,还需要配置一些参数,如appId、appSecret、token、encodingAESKey等。 完成以上步骤后,就可以开始开发后端逻辑了。开发过程中需要调用微信官方提供的api,如获取access_token、获取用户信息等。 在开发过程中,需要注意安全问题,如接口的安全保护、防止SQL注入等。同时,需要对接口进行测试,查看返回数据是否符合预期。 最后,将开发好的后端逻辑部署到服务器上,接着就可以与微信小程序前端进行交互了。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值