1. PHP微信支付功能示例

     更新时间:2019年03月26日 10:41:13   作者:大脸猫脸大   我要评论

    这篇文章主要介绍了PHP微信支付功能,结合实例形式分析了php微信支付功能相关sdk与使用技巧,需要的朋友可以参考下

    本文实例讲述了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×tamp=%s&key=%s",
        $parameters['appid'],
        $parameters['noncestr'],
        $parameters['package'],
        $parameters['partnerid'],
        $parameters['prepayid'],
        $parameters['timestamp'],
        $key));
      return strtoupper($sign);
    }
    
    

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

    官方开发资源

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《PHP微信开发技巧汇总》、《php curl用法总结》、《PHP网络编程技巧总结》、《php字符串(string)用法总结》、《PHP中json格式数据操作技巧汇总》及《PHP针对XML文件操作技巧总结

    希望本文所述?#28304;?#23478;PHP程序设计?#20852;?#24110;助。

    相关文章

    最新评论

    山东群英会开奖查询
      1. 江西时时彩开奖现场 两年无错平特肖 山东十一选五app快彩 年香港六合彩开奖记录 浙江20选5明天开奖号码是多少 开码结果查询历史 双色球天干排除蓝球法 好运彩3d之家 浙江体彩20选5走式图 彩客网正规吗 2019050双色球蓝球推荐 爱彩乐助手 头数出码规律图 鸟巢国际娱乐官网 广西快乐双彩预测号码