zoukankan      html  css  js  c++  java
  • 小程序微信支付

    实现前布置

    1:下载官方微信支付SDK(‘https://pay.weixin.qq.com/wiki/doc/api/index.html’)

    2:引入开发框架(我写的是微信小程序支付)

    话不多说直接上代码

    3:控制器方法

    public function getPayOrder(){
    try{
    $tools = new JsApiPay();
    // $openId = $tools->GetOpenid();
    $openId = $open_id;
    //②、统一下单
    $input = new WxPayUnifiedOrder();
    $input->SetBody("");
    $input->SetAttach("");
    $input->SetOut_trade_no("");
    $input->SetTotal_fee("");
    $input->SetTime_start(date("YmdHis"));
    $input->SetTime_expire(date("YmdHis", time() + 600));
    $input->SetGoods_tag("");
    $input->SetNotify_url("你的回调方法");
    $input->SetTrade_type("JSAPI");
    $input->SetOpenid("");
    $config = new WxPayConfig();
    $order = WxPayApi::unifiedOrder($config, $input);
    $printf_info = $this->printf_info($order);
    $jsApiParameters = $tools->GetJsApiParameters($order);
    return $jsApiParameters;
    } catch(Exception $e) {
    Log::ERROR(json_encode($e));
    }
    }

    不清除的参数可以查看SDJ的源代码

    4:回调方法
     public function index(Request $request)
    {
        //可以先查看日志
        // file_put_contents('notify.txt', "---------------------------------------- ", FILE_APPEND);
        // $data = file_get_contents('php://input');
        // file_put_contents('notify.txt', '收到异步通知:' . json_encode($data) . " ", FILE_APPEND);

    $testxml = file_get_contents("php://input");
    $jsonxml = json_encode(simplexml_load_string($testxml, 'SimpleXMLElement', LIBXML_NOCDATA));
    $result = json_decode($jsonxml, true);//转成数组,
    //如果成功返回了
    if($result['return_code'] == 'SUCCESS' && $result['result_code'] == 'SUCCESS'){
    //告诉微信服务器,我已经接收到成功的通知了,你不要再发送了
    echo '<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>';
    //处理自己的业务逻辑
    }
    }
    5:微信小程序代码
    wx.request({
            url: '请求的地址',
            data:product,
            method:'POST',
            success:res=>{
              wx.hideLoading()
              var data = res.data;
              wx.requestPayment({
                nonceStr: data.nonceStr,
                package: data.package,
                paySign: data.paySign,
                timeStamp: data.timeStamp,
                signType:data.signType,
                success (res) {
                  wx.hideLoading()
                  wx.switchTab({
                    url: '../personal/index/index',
                  })
                },
                fail (err) {
                  wx.showLoading({
                    title: '已取消支付',
                  })
                  wx.hideLoading()
                  wx.switchTab({
                    url: '../personal/index/index',
                  })
                }
              })
            },
            fail:res=>{
              wx.showToast({
                title: '网络异常',
                icon: 'loading',
                duration: 1000
              })
            }
          })



  • 相关阅读:
    完美解决HTML5无法上传大文件方法
    完美解决jquery无法上传大文件方法
    Word图片上传控件+整合富文本
    ckeditor粘贴word文档图片的讨论
    python之理解super及MRO列表 ( 示例版 )
    JavaXXX成长直通车_汇总
    P75 验证码识别原理分析
    P74 复习
    P73 卷积神经网络识别手写数字
    P71 激活层与池化层
  • 原文地址:https://www.cnblogs.com/sunny20/p/15532502.html
Copyright © 2011-2022 走看看