微信小程序支付

微信小程序支付配置


 /**
     * 微信支付
     * @return [type] [description]
     */
    private function wxPay($ordernumber,$totalamount,$goodstitle='商品描述',$openid,$orderid)
    {
        Vendor('wxpay.WxPayApi');
        $wxOrderData = new \WxPayUnifiedOrder();
        // 自己生成的订单编号
        $wxOrderData->SetOut_trade_no($ordernumber);
        // 必须是JSAPI
        $wxOrderData->SetTrade_type('JSAPI');
        //点单价格
        $totalamount = $totalamount*100;
        // $totalamount = 1;
        $wxOrderData->SetTotal_fee($totalamount);
        // 
        $wxOrderData->SetBody($goodstitle);


        $wxOrderData->SetOpenid($openid); 
        $wxOrderData->SetNotify_url("https://www.xxxxx.com/xxx/orderQuery"); 
        return $this->getPaySignature($wxOrderData,$orderid);
    }
    /**
     * 随机字符串
     */
    private function randString()
    {
        $str = '0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
        $sing = '';
        for($i=0;$i<32;$i++){
            $sing.=$str[rand(0,strlen($str)-1)];
        }
        return $sing;
    }
    /**
     * 生成签名
     */
    private function getPaySignature($wxOrderData,$orderid)
    {
        Vendor('wxpay.WxPayApi');
        $wxOrder = \WxPayApi::unifiedOrder($wxOrderData);  
        // 失败时不会返回result_code  
        if($wxOrder['return_code'] != 'SUCCESS' || $wxOrder['result_code'] !='SUCCESS'){  
            res('error','错误原因',$wxOrder);
        }  
        $signature = $this->sign($wxOrder);
        $signature['orderid']=$orderid;  
        return $signature;   
    }
    /**
     *  生成签名
     * @param  object $wxOrder 生成签名用到的数据
     * @return [type]          [description]
     */
    private function sign($wxOrder)  
    {  
        Vendor('wxpay.WxPayApi');
        $jsApiPayData = new \WxPayJsApiPay();  
        //传入小程序appid  
        $appid = appid;
        $jsApiPayData->SetAppid($appid);  
        //按照文档,要求是字符串类型  
        $jsApiPayData->SetTimeStamp((string)time());  
        //生成随机字符串  
        $rand = $this->randString();
        $jsApiPayData->SetNonceStr($rand);  
        //拼接prepay_id,要注意拼接  
        $jsApiPayData->SetPackage('prepay_id='.$wxOrder['prepay_id']);  
        //签名方式md5  
        $jsApiPayData->SetSignType('MD5');  
        //然后调用sdk自带的MakeSign方法生成签名  
        $sign = $jsApiPayData->MakeSign();  
        //然后在使用sdk自带方法获取到上面的我们赋值到成员属性生成的数组  
        $rawValues = $jsApiPayData->GetValues();  
        //然后我们在数组上加上生成的签名  
        $rawValues['paySign'] = $sign;  
        //删除appid,因为返回给客户端没有用,所以消除  
        unset($rawValues['appId']);  
        //返回  
        return $rawValues;  
    } 
    /**
     * 支付回调接口
     * 订单状态修改
     * @return [type] [description]
     */
    public function orderQuery()
    {
        $xml = $GLOBALS['HTTP_RAW_POST_DATA'];
        $data = simplexml_load_string($xml,'SimpleXMLElement', LIBXML_NOCDATA);

        $xmljson= json_encode($data);

        $xmlarray=json_decode($xmljson,true);

        // file_put_contents(__DIR__.'/log3.txt',$xmlarray,FILE_APPEND);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值