热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用方法_PHP支付第3方接口使用方法。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了PHP支付第3方接口使用方法。相关的知识,希望对你有一定的参考价值。去年写过一遍博客文章。&nbs

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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 \'
\';

        // 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 "";

include_once \'callpay_b.html\';

}



推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • Servlet多用户登录时HttpSession会话信息覆盖问题的解决方案
    本文讨论了在Servlet多用户登录时可能出现的HttpSession会话信息覆盖问题,并提供了解决方案。通过分析JSESSIONID的作用机制和编码方式,我们可以得出每个HttpSession对象都是通过客户端发送的唯一JSESSIONID来识别的,因此无需担心会话信息被覆盖的问题。需要注意的是,本文讨论的是多个客户端级别上的多用户登录,而非同一个浏览器级别上的多用户登录。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • JSP内置对象之application的作用范围和获取方式
    本文介绍了JSP内置对象之application的作用时间范围、可以在不同浏览器获取的特点,以及获取application对象的方法。通过示例代码展示了在JSP中设置和在servlet中获取application对象的步骤。对于学习JSP内置对象的读者来说,本文具有一定的参考价值。摘要长度为163字。 ... [详细]
  • GreenDAO快速入门
    前言之前在自己做项目的时候,用到了GreenDAO数据库,其实对于数据库辅助工具库从OrmLite,到litePal再到GreenDAO,总是在不停的切换,但是没有真正去了解他们的 ... [详细]
  • 微信官方授权及获取OpenId的方法,服务器通过SpringBoot实现
    主要步骤:前端获取到code(wx.login),传入服务器服务器通过参数AppID和AppSecret访问官方接口,获取到OpenId ... [详细]
  • AFNetwork框架(零)使用NSURLSession进行网络请求
    本文介绍了AFNetwork框架中使用NSURLSession进行网络请求的方法,包括NSURLSession的配置、请求的创建和执行等步骤。同时还介绍了NSURLSessionDelegate和NSURLSessionConfiguration的相关内容。通过本文可以了解到AFNetwork框架中使用NSURLSession进行网络请求的基本流程和注意事项。 ... [详细]
  • 安装oracle软件1创建用户组、用户和目录bjdb节点下:[rootnode1]#groupadd-g200oinstall[rootnode1]#groupad ... [详细]
author-avatar
cfn7831325
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有