php 微信支付

 微信开发SDK:  文中用的是php_sdk_v3.0.9 :https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=11_1

 

         import("wxpay.lib.AppPay#Config", EXTEND_PATH, ".php");
            import("wxpay.lib.WxPay#Api", EXTEND_PATH, ".php");
            //$this->weixinpay();

            $config = new \AppPayConfig();
            //订单号
            $appId = $config->GetAppId();
            $key = $config->GetKey();
            $money = 0.01 * 100;
            $orderSn = 'M201810241754107557';//订单号;
            $curTime = time();           

            $input = new \WxPayUnifiedOrder();
            $input->SetBody("用户红包");
            $input->SetOut_trade_no($orderSn);
            $input->SetTotal_fee($money);
            $input->SetTrade_type("APP");
            $unifiedOrder = \WxPayApi::unifiedOrder($config, $input);

            if ($unifiedOrder['result_code'] == 'SUCCESS' && $unifiedOrder['return_code'] == 'SUCCESS') {
                /*$unifiedOrder 组成:
                 * ["appid"] => string(18) "wx2xxxx49"
                ["mch_id"] => string(10) "1xxxxxx01"
                ["nonce_str"] => string(16) "1GnEUXTuTcFtJVtb"
                ["prepay_id"] => string(36) "wx241933xxx68fa24ece70611692955"
                ["result_code"] => string(7) "SUCCESS"
                ["return_code"] => string(7) "SUCCESS"
                ["return_msg"] => string(2) "OK"
                ["sign"] => string(32) "7903xxxxx4710E460CB156"
                ["trade_type"] => string(3) "APP"*/

                $curTime = time();

                // 第一部分
                $wxpayResult  = new \WxPayResults();
                $wxpayResult->SetData('appid', $unifiedOrder['appid']);
                $wxpayResult->SetData('partnerid', $unifiedOrder['mch_id']);
                $wxpayResult->SetData('prepayid', $unifiedOrder['prepay_id']);
                $wxpayResult->SetData('noncestr', $unifiedOrder['nonce_str']);
                $wxpayResult->SetData('timestamp',$curTime);
                $wxpayResult->SetData('package',"Sign=WXPay");
                $wxpayResult->SetData('sign',"");
                $wxpayResult->SetSign($config);
                $data = $wxpayResult->GetValues();


                // 第二部分
                $data['appid'] = $unifiedOrder['appid'];
                $data['partnerid'] = $unifiedOrder['mch_id'];
                $data['prepayid'] = $unifiedOrder['prepay_id'];
                $data['noncestr'] = $unifiedOrder['nonce_str'];;
                $data['timestamp'] = $curTime;
                $data['package'] = "Sign=WXPay";
                $data['sign'] = $this->wxappPaySign($key, $data);//$unifiedOrder['sign'];//签名,具体签名方案参见微信公众号支付帮助文档;

                $this->returnSuccess($data);

            } else {
                Log::write(var_export($unifiedOrder, true));
                $this->returnError(300, '微信支付失败');
            }

 

 

private function wxappPaySign($key,$parameters)
{
    $sign = md5(sprintf("appid=%s&noncestr=%s&package=%s&partnerid=%s&prepayid=%s&timestamp=%s&key=%s",
        $parameters['appid'],
        $parameters['noncestr'],
        $parameters['package'],
        $parameters['partnerid'],
        $parameters['prepayid'],
        $parameters['timestamp'],
        $key));
    return strtoupper($sign);
}

第一部分和第二部分功能是相同的。

开发资源

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值