• PHP支付第3方接口使用方法。


    去年写过一遍博客文章。 

    网站申请不到支付宝接口、微信接口,免接口收款实现方式。

    网络在发展,支付宝也好,微信也好,技术在进步,这种方式已经不能使用了,明显的一个问题是,支付宝的刷新工具,会定时退出,必须人工输入才能再次登录。。

    由于客户需要,想到了另外一种方法。

    客户用正规的公司申请支付宝接口,微信接口,建立一个正规的网上商城类网站,这个网站只是一个中间网站,没有实际作用,当然所有功能都是正常的。

    重点来了,,

    我们可以在申请不到接口的网站,通过跳转到正规网站来完成支付,支付结果,也通过远程的方式反馈给调用支付的网站。

    好像很多第3方集成支付工具,应该也是类似的用法。

    上微信支付的代码。

    header("Content-Type:text/html;charset=utf-8");
    date_default_timezone_set('PRC');

    require_once 'config.php';
    require_once WX_CLASS;
    require_once 'api/'.UGL_CLASS;
    require_once 'api/'.SESSION_CLASS;
    require_once 'api/libs/WxPay.Api.php';
    require_once 'api/libs/WxPay.JsApiPay.php';
    error_reporting(0);

    $get = $_GET;
    $strArr = explode('x',$get['n']);
    // http://meng.qiankk.com/demo/getOpenid.php?n=99x1x29191xyzd 贷款网站的支付格式
    $type = (int)$strArr[0];
    $num = (int)$strArr[1];


    $wx=new WX_LC(ID,WX_APPID,WX_SECRET);
    $code=$_GET['code'];
    if($code==''){
    $wx->getCode('snsapi_base');
    exit('code empty');
    }else{
    $data=$wx->getOpenid($code);
    if($data->errcode == 40029 || $data->errcode == 40163) {
    $wx->getCode();
    return;
    }
        if($type != 99){
            $s = new S(ID);
            $user = $s->getUser();
            // echo '<pre>';
            // print_r($user);
            // die;
            $user->openid = $data->openid;
            $s->setUser($user);
        }else {
            $user = new stdClass();
            $user->id = mt_rand(1000,99999);
            $user->openid = $data->openid;
        }

    }

    $feeArr1 = array(
        array('day'=>30,'money'=>48000),
    array('day'=>1,'money'=>3300),
    array('day'=>30,'money'=>48000),
    array('day'=>90,'money'=>99900),
    array('day'=>180,'money'=>180000),
    array('day'=>365,'money'=>320000)
    );
    $feeArr2 = array(
        array('day'=>30,'money'=>12000),
    array('day'=>1,'money'=>2300),
    array('day'=>30,'money'=>15000),
    array('day'=>90,'money'=>30000),
    array('day'=>180,'money'=>55000),
    array('day'=>365,'money'=>98000)
    );

    if($user && $user->id>0) {
        $uid = $user->id;
    } else {
        exit(json_encode(array('result'=>0, 'msg'=>'user error!')));
    }


    if($type == 99){ //如果是贷款网站      重点在这里,,,,如果是从外站跳转过来的支付,,,,这里重新定义一些支付参数,发起微信支付,,,在回调页面,也做同样的判断就可以了
        $order = (int)$strArr[2];
        $dai = $strArr[3];//来源
        $orderId = $dai.'_'.date('ymdHis').'_'.$order;
     
        $fee = $num * 1;
        $pid = $orderId;
        pay($orderId,$fee,$user,$uid,$order ,$dai);
        die;
    }


    $orderId = WxPayConfig::MCHID.date("YmdHis").rand(10, 99);
    $now = time();
    $arr=array(
        'p_id'=>null,
        'p_uid'=>$uid,
        'p_type'=>$type,
        'p_num'=>$num,
        'p_trade_no'=>$orderId,
        'p_transaction_id'=>'',
        'p_buy'=>'',
        'p_create'=>$now,
        'p_update'=>$now,
        'p_more'=>''
    );
    $pid = $ugl->insert(DB_PREFIX.'pay_log',$arr);




    if($pid>0) {
        if($type==1) {
            $fee = $feeArr1[$num]['money'];
        } else {
            $fee = $feeArr2[$num]['money'];
        }
        //$fee = 10000;//($fee/1000)<0.01?0.1:($fee/1000);
        pay($orderId,$fee,$user,$uid,$pid );
    }else{
        exit('pid error');
    }






    function pay($orderId,$fee,$user,$uid = 0,$pid = 0,$dai = ''){
        $ugl = new UGL_v2();
        
        $tools = new JsApiPay();
        $input = new WxPayUnifiedOrder();

        $input->SetBody("12");
        $input->SetAttach("123");
        $input->SetOut_trade_no($orderId);
        $input->SetTotal_fee($fee);
        $input->SetTime_start(date("YmdHis"));
        $input->SetTime_expire(date("YmdHis", time() + 600));
        $input->SetGoods_tag("test");
        $input->SetNotify_url(SHAREURL."demo/api/notify_b.php");
        $input->SetTrade_type("JSAPI");
        $input->SetOpenid($user->openid);
        $order = WxPayApi::unifiedOrder($input);
        $jsApiParameters = $tools->GetJsApiParameters($order);
        $str = json_encode($order);
        $ugl->addLog($uid,'201',$str,'下单'.$pid);
        $ec = "var jsApiParameters=$jsApiParameters; var myPid=$pid;";
    echo "<script>$ec</script>";
    include_once 'callpay_b.html';
    }
  • 相关阅读:
    Windows 7 远程协助
    Windows 7 帮助和支持资源—第三方网站
    Windows 7 帮助和支持资源—第三方软件
    数据结构-队列
    数据结构-栈
    pycharm每日技巧-2
    数据结构-链表
    时间处理-1
    二维数组的排序
    《疯狂的简洁》书摘
  • 原文地址:https://www.cnblogs.com/fuyifan/p/7550961.html
Copyright © 2020-2023  润新知