ThinkPHP整合支付宝担保交易

ThinkPHP整合支付宝担保交易本代码参考大神 http://www.thinkphp.cn/code/240.html 的思路 1.登陆支付宝后台,下载担保交易的集成包。 2.下载完成后的文件说明: 纯担保交易接口-create_partner_trade_by_buyer(2

ThinkPHP整合支付宝担保交易
本代码参考大神 http://www.thinkphp.cn/code/240.html 的思路

1.登陆支付宝后台,下载担保交易的集成包。

2.下载完成后的文件说明:

纯担保交易接口-create_partner_trade_by_buyer(20151015)
确认发货接口-send_goods_confirm_by_platform(20150312)
根据自己需要去选择,需要说明下,先担保整合完成后才回去处理确认发货,因为确认发货时需要担保交易的支付宝交易编号

对应的代码文件结构

  1. ───────
  2. create_partner_trade_by_buyer-php-UTF-8
  3.   │
  4.   ├lib┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈类文件夹
  5.   │  │
  6.   │  ├alipay_core.function.php ┈┈┈┈┈┈支付宝接口公用函数文件
  7.   │  │
  8.   │  ├alipay_notify.class.php┈┈┈┈┈┈┈支付宝通知处理类文件
  9.   │  │
  10.   │  ├alipay_submit.class.php┈┈┈┈┈┈┈支付宝各接口请求提交类文件
  11.   │  │
  12.   │  └alipay_md5.function.php┈┈┈┈┈┈┈支付宝接口MD5函数文件
  13.   │
  14.   ├log.txt┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈日志文件
  15.   │
  16.   ├alipay.config.php┈┈┈┈┈┈┈┈┈┈┈┈基础配置类文件
  17.   │
  18.   ├alipayapi.php┈┈┈┈┈┈┈┈┈┈┈┈┈┈支付宝接口入口文件
  19.   │
  20.   ├notify_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈服务器异步通知页面文件
  21.   │
  22.   ├return_url.php ┈┈┈┈┈┈┈┈┈┈┈┈┈页面跳转同步通知文件
  23.   │
  24.   ├cacert.pem ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈用于CURL中校验SSL的CA证书文件
  25.   │
  26.   └readme.txt ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈使用说明文本

复制

这里我们先处理代码

3.核心处理代码

把lib目录文件下的4个核心文件放入 ThinkPHP/Library/Vendor/Alipay 下

修改文件名为:

  1. alipay_core.function.php       ->        Corefunction.php
  2. alipay_notify.class.php        ->        Notify.php
  3. alipay_submit.class.php        ->        Submit.php
  4. alipay_md5.function.php        ->        Md5function.php
  5. 其中 Notify.php 和 Md5function.php 需要删除前面引入的两行代码

复制

require_once("alipay_core.function.php");
require_once("alipay_md5.function.php");
因为在使用TP第三方扩展类的时候会自动引入他需要的这两个文件

核心框架整合完成之后我们来整理逻辑代码。

4.逻辑代码整理

首先我们把 签名文件 cacert.pem 放在网站的跟目录,其他目录也行,不过需要有访问权限的

然后在公共配置文件conf.php中添加 支付宝配置

  1.     //支付宝配置参数
  2. ‘alipay_config‘=>array(
  3.     ‘partner‘ =>‘2088**********************‘,   //这里是你在成功申请支付宝接口后获取到的PID;
  4.     ‘key‘=>‘ob4x7k0*************************‘,//这里是你在成功申请支付宝接口后获取到的Key
  5.     ‘sign_type‘=>strtoupper(‘MD5‘),
  6.     ‘input_charset‘=> strtolower(‘utf-8‘),
  7.     ‘cacert‘=> getcwd().‘\\cacert.pem‘,//liunx这里需要注意 \\ 和 / 在liunx的区别
  8.     ‘transport‘=> ‘http‘,
  9.     ‘seller_email‘=>‘[email protected]‘,// 这里是你的收款账号,
  10. ),
  11. //以上配置项,是从接口包中alipay.config.php 文件中复制过来,进行配置;
  12.     ‘alipay‘   =>array(
  13. //这里是异步通知页面url,提交到项目的Pay控制器的notifyurl方法;
  14. ‘notify_url‘=>‘http://www.loveteemo.com/Pay/notifyurl‘, 
  15. //这里是页面跳转通知url,提交到项目的Pay控制器的returnurl方法;
  16. ‘return_url‘=>‘http://www.loveteemo.com/Pay/returnurl‘,
  17. ),

复制

然后去创建一个 Key 控制器,然后处理代码:

  1. <?php
  2. namespace Home\Controller;
  3. use Think\Controller;
  4. class KeyController extends Controller {
  5.     //利用构造函数引入核心文件
  6.     public function _initialize() {
  7.         vendor(‘Alipay.Corefunction‘);
  8.         vendor(‘Alipay.Md5function‘);
  9.         vendor(‘Alipay.Notify‘);
  10.         vendor(‘Alipay.Submit‘);    
  11.     }
  12.   //首页,用来展示商品页
  13.     public function index(){
  14.         $this->display();
  15.     }
  16.     //订单页,我写死了的,可以根据自己需要进行修改
  17.     public function order(){
  18.         $type = I(‘get.type‘);
  19.         if($type==1){
  20.         $date = array(‘type‘=>1,"price"=>‘0.01‘,"name"=>"《火星救援》");
  21.         }elseif($type==2){
  22.         $date = array(‘type‘=>2,"price"=>‘0.01‘,"name"=>"《死神的精确度》");
  23.         }elseif($type==3){
  24.         $date = array(‘type‘=>3,"price"=>‘0.01‘,"name"=>"《寂寞是毒,也是解药》");
  25.         }elseif($type==4){
  26.         $date = array(‘type‘=>4,"price"=>‘0.01‘,"name"=>"《只要不忘了回家的路》");
  27.         }elseif($type==5){
  28.         $date = array(‘type‘=>5,"price"=>‘0.01‘,"name"=>"《异想星球 hello,我是托比小黑》");
  29.         }elseif($type==6){
  30.         $date = array(‘type‘=>6,"price"=>‘0.01‘,"name"=>"《张鸣说历史:大国的虚与实》");
  31.         }
  32.         $this->time = time();
  33.         $this->assign("data",$date);
  34.         $this->display();
  35.     }
  36.     //订单页点击提交,传递必要参数后开始支付,可自行修改
  37.     public function payorder(){
  38.         //传递数组配置
  39.         $alipay_config=C(‘alipay_config‘);
  40.         /**************************请求参数**************************/
  41.             //支付类型
  42.         $payment_type = "1";        //必填,不能修改
  43.         //服务器异步通知页面路径
  44.         $notify_url = C(‘alipay.notify_url‘);        //需http://格式的完整路径,不能加?id=123这类自定义参数
  45.         //页面跳转同步通知页面路径
  46.         $return_url = C(‘alipay.return_url‘);         //需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/
  47.         //商户订单号
  48.         $out_trade_no = $_POST[‘orderid‘];        //商户网站订单系统中唯一订单号,必填
  49.         //订单名称
  50.         $subject = $_POST[‘ordername‘];        //必填
  51.         //付款金额
  52.         $price = $_POST[‘orderprice‘];        //必填
  53.         //商品数量
  54.         $quantity = "1";        //必填,建议默认为1,不改变值,把一次交易看成是一次下订单而非购买一件商品
  55.         //物流费用
  56.         $logistics_fee = "0.00";        //必填,即运费
  57.         //物流类型
  58.         $logistics_type = "EXPRESS";        //必填,三个值可选:EXPRESS(快递)、POST(平邮)、EMS(EMS)
  59.         //物流支付方式
  60.         $logistics_payment = "SELLER_PAY";        //必填,两个值可选:SELLER_PAY(卖家承担运费)、BUYER_PAY(买家承担运费)
  61.         //订单描述
  62.         $body = $_POST[‘orderbody‘];
  63.             //商品展示地址
  64.         $show_url = $_POST[‘ordershow‘];        //需以http://开头的完整路径,如:http://www.商户网站.com/myorder.html
  65.         //收货人姓名
  66.         $receive_name = $_POST[‘user_name‘];        //如:张三
  67.         //收货人地址
  68.         $receive_address = $_POST[‘user_address‘];        //如:XX省XXX市XXX区XXX路XXX小区XXX栋XXX单元XXX号
  69.         //收货人邮编
  70.         $receive_zip = $_POST[‘user_zip‘];        //如:123456
  71.         //收货人电话号码
  72.         $receive_phone = $_POST[‘user_phone‘];        //如:0571-88158090
  73.         //收货人手机号码
  74.         $receive_mobile = $_POST[‘user_mobile‘];        //如:13312341234
  75.         /************************************************************/
  76.     
  77.         //构造要请求的参数数组,无需改动
  78.             $parameter = array(
  79.             "service" => "create_partner_trade_by_buyer",
  80.             "partner" => trim($alipay_config[‘partner‘]),
  81.             "seller_email" => trim($alipay_config[‘seller_email‘]),
  82.             "payment_type"=> $payment_type,
  83.             "notify_url"=> $notify_url,
  84.             "return_url"=> $return_url,
  85.             "out_trade_no"=> $out_trade_no,
  86.             "subject"=> $subject,
  87.             "price"=> $price,
  88.             "quantity"=> $quantity,
  89.             "logistics_fee"=> $logistics_fee,
  90.             "logistics_type"=> $logistics_type,
  91.             "logistics_payment"=> $logistics_payment,
  92.             "body"=> $body,
  93.             "show_url"=> $show_url,
  94.             "receive_name"=> $receive_name,
  95.             "receive_address"=> $receive_address,
  96.             "receive_zip"=> $receive_zip,
  97.             "receive_phone"=> $receive_phone,
  98.             "receive_mobile"=> $receive_mobile,
  99.             "_input_charset"=> trim(strtolower($alipay_config[‘input_charset‘]))
  100.             );
  101.             //存入数据库订单信息 static为99是无效订单
  102.             M(‘test‘)->add(array("orderid"=>$out_trade_no,"addtime"=>time(),"ordername"=>$subject,"orderprice"=>$price,"static"=>99));
  103.             //建立请求
  104.             $alipaySubmit = new \AlipaySubmit($alipay_config);
  105.             //dump($alipaySubmit);die;
  106.             $html_text = $alipaySubmit->buildRequestForm($parameter,"get", "确认");
  107.             echo $html_text;
  108.             }
  109.     /******************************    服务器异步通知页面方法    *******************************/
  110.     public function notifyurl(){
  111.         //防止乱码
  112.         header("Content-Type:text/html;charset=utf-8");
  113.         //计算得出通知验证结果
  114.         $alipay_config=C(‘alipay_config‘);
  115.         $alipayNotify = new \AlipayNotify($alipay_config);
  116.         $verify_result = $alipayNotify->verifyNotify();
  117.         if($verify_result) {//验证成功
  118.         //商户订单号
  119.         logResult("订单编号:".$_POST[‘out_trade_no‘].",状态".$_POST[‘trade_status‘]."");
  120.         $out_trade_no = $_POST[‘out_trade_no‘];
  121.         //支付宝交易号
  122.         $trade_no = $_POST[‘trade_no‘];
  123.         //交易状态
  124.         $trade_status = $_POST[‘trade_status‘];
  125.         if($_POST[‘trade_status‘] == ‘WAIT_BUYER_PAY‘) {
  126.         //该判断表示买家已在支付宝交易管理中产生了交易记录,但没有付款
  127.         //判断该笔订单是否在商户网站中已经做过处理
  128.         //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
  129.         //如果有做过处理,不执行商户的业务程序
  130.                 echo "success";//请不要修改或删除
  131.                 //调试用,写文本函数记录程序运行情况是否正常
  132.                 //获取支付宝的订单号后写入数据库,修改订单状态为0 待支付
  133.                M(‘test‘)->where(array("orderid"=>$out_trade_no))->save(array("static"=>0,"lasttime"=>time(),‘payid‘=>$trade_no));
  134.                //文本日志文件,这里的日志文件会在网站根目录生成一个log.txt文件
  135.                 logResult("这里是等待付款");
  136.             }
  137.         else if($_POST[‘trade_status‘] == ‘WAIT_SELLER_SEND_GOODS‘) {
  138.         //该判断表示买家已在支付宝交易管理中产生了交易记录且付款成功,但卖家没有发货
  139.         //判断该笔订单是否在商户网站中已经做过处理
  140.         //买家支付后,修改状态为已支付代发货
  141.         M(‘test‘)->where(array("orderid"=>$out_trade_no))->save(array("static"=>1,"lasttime"=>time()));
  142.         //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
  143.         //如果有做过处理,不执行商户的业务程序
  144.                 echo "success";//请不要修改或删除
  145.                 //调试用,写文本函数记录程序运行情况是否正常
  146.                 logResult("支付完成!订单编号:".$out_trade_no.",状态".$_POST[‘trade_status‘]."");
  147.             }
  148.         else if($_POST[‘trade_status‘] == ‘WAIT_BUYER_CONFIRM_GOODS‘) {
  149.         //该判断表示卖家已经发了货,但买家还没有做确认收货的操作
  150.         //判断该笔订单是否在商户网站中已经做过处理
  151.         //发货完成后会修改状态
  152.         M(‘test‘)->where(array("orderid"=>$out_trade_no))->save(array("static"=>2,"lasttime"=>time()));
  153.         //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
  154.         //如果有做过处理,不执行商户的业务程序
  155.                 echo "success";//请不要修改或删除
  156.                 //调试用,写文本函数记录程序运行情况是否正常
  157.                 logResult("发货完成,等待买家收货");
  158.             }
  159.         else if($_POST[‘trade_status‘] == ‘TRADE_FINISHED‘) {
  160.         //该判断表示买家已经确认收货,这笔交易完成
  161.         //判断该笔订单是否在商户网站中已经做过处理
  162.         //买家收货后订单完成
  163.         M(‘test‘)->where(array("orderid"=>$out_trade_no))->save(array("static"=>3,"lasttime"=>time()));
  164.         //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
  165.         //如果有做过处理,不执行商户的业务程序
  166.                 echo "success";//请不要修改或删除
  167.                 //调试用,写文本函数记录程序运行情况是否正常
  168.                 logResult("交易完成!");
  169.             }
  170.             else {
  171.         //其他状态判断
  172.                 echo "success";
  173.                 //调试用,写文本函数记录程序运行情况是否正常
  174.                 logResult ("错误");
  175.             }
  176.         }
  177.         else {
  178.             //验证失败
  179.             echo "fail";
  180.             //调试用,写文本函数记录程序运行情况是否正常
  181.             logResult("验证失败");
  182.         }
  183.     }
  184.     
  185.     /*        页面跳转处理方法;        */
  186.     public function returnurl(){
  187.         $alipay_config=C(‘alipay_config‘);
  188.          //计算得出通知验证结果
  189.         $alipayNotify = new \AlipayNotify($alipay_config);
  190.         $verify_result = $alipayNotify->verifyReturn();
  191.         if($verify_result) {//验证成功
  192.         //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
  193.             //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
  194.         //商户订单号
  195.         $out_trade_no = $_GET[‘out_trade_no‘];
  196.         //支付宝交易号
  197.         $trade_no = $_GET[‘trade_no‘];
  198.         //交易状态
  199.         $trade_status = $_GET[‘trade_status‘];
  200.             if($_GET[‘trade_status‘] == ‘WAIT_SELLER_SEND_GOODS‘) {
  201.         //判断该笔订单是否在商户网站中已经做过处理
  202.         //如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
  203.         //如果有做过处理,不执行商户的业务程序
  204.             }
  205.         //
  206.             else {
  207.               echo "trade_status=".$_GET[‘trade_status‘];
  208.             }
  209.         $this->assign("payid",$trade_no);
  210.         }
  211.         else {
  212.             //验证失败
  213.             //如要调试,请看alipay_notify.php页面的verifyReturn函数
  214.             echo "验证失败";
  215.         }
  216.         $this->display();
  217. }
  218. //自动发货 利用隐藏表单传递必须数据过来
  219.        public function sendgoods(){
  220.             $alipay_config=C(‘alipay_config‘);
  221.              /**************************请求参数**************************/
  222.         //支付宝交易号
  223.         $trade_no = $_POST[‘WIDtrade_no‘];
  224.         //必填
  225.         //物流公司名称
  226.         $logistics_name = $_POST[‘WIDlogistics_name‘];
  227.         //必填
  228.         //物流发货单号
  229.         $invoice_no = $_POST[‘WIDinvoice_no‘];
  230.         //物流运输类型
  231.         $transport_type = $_POST[‘WIDtransport_type‘];
  232.         //三个值可选:POST(平邮)、EXPRESS(快递)、EMS(EMS)
  233.         /************************************************************/
  234.         //构造要请求的参数数组,无需改动
  235.         $parameter = array(
  236.         "service" => "send_goods_confirm_by_platform",
  237.         "partner" => trim($alipay_config[‘partner‘]),
  238.         "trade_no"=> $trade_no,
  239.         "logistics_name"=> $logistics_name,
  240.         "invoice_no"=> $invoice_no,
  241.         "transport_type"=> $transport_type,
  242.         "_input_charset"=> trim(strtolower($alipay_config[‘input_charset‘]))
  243.         );
  244.         //建立请求
  245.         $alipaySubmit = new \AlipaySubmit($alipay_config);
  246.         $html_text = $alipaySubmit->buildRequestHttp($parameter);
  247.         //解析XML
  248.         //注意:该功能PHP5环境及以上支持,需开通curl、SSL等PHP配置环境。建议本地调试时使用PHP开发软件
  249.         $doc = new \DOMDocument();
  250.         $doc->loadXML($html_text);
  251.         //请在这里加上商户的业务逻辑程序代码
  252.         //——请根据您的业务逻辑来编写程序(以下代码仅作参考)——
  253.         //获取支付宝的通知返回参数,可参考技术文档中页面跳转同步通知参数列表
  254.         //解析XML
  255.         if( ! empty($doc->getElementsByTagName( "alipay" )->item(0)->nodeValue) ) {
  256.         $alipay = $doc->getElementsByTagName( "alipay" )->item(0)->nodeValue;
  257.         //echo $alipay;
  258.         //M(‘test‘)->where(array("orderid"=>$out_trade_no))->save(array("static"=>2,"lasttime"=>time()));
  259.         $this->success("自动发货完成!","/Home/Key/lists");
  260.         }
  261. }
  262.     //筛选无效订单后展示
  263.     public function lists(){
  264.         $lists = M(‘test‘)->where("static != 99")->limit(20)->order("id desc")->select();
  265.         $this->assign("lists",$lists);
  266.         $this->display();
  267.     }
  268. }[code]到这里基本的业务逻辑就完成了,附带测试的数据库给大家分享下[code]CREATE TABLE `web_test` (
  269.   `id` int(11) NOT NULL AUTO_INCREMENT,
  270.   `orderid` varchar(16) NOT NULL,
  271.   `ordername` varchar(128) NOT NULL,
  272.   `orderprice` varchar(16) NOT NULL,
  273.   `static` int(11) NOT NULL COMMENT ‘0为未支付,1为已支付未发货,2为发货为确认收,3为确认收,4为取消‘,
  274.   `addtime` int(11) NOT NULL,
  275.   `lasttime` int(11) NOT NULL,
  276.   `payid` varchar(32) NOT NULL,
  277.   PRIMARY KEY (`id`),
  278.   UNIQUE KEY `orderid` (`orderid`)
  279. ) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

复制

5.需要注意的地方:

签名的目录,上面有说过,签名的目录在liunx和windows是有区别的,liunx需要改成

  1. ‘cacert‘=> getcwd().‘/cacert.pem‘,

复制

不然会报错说签名没找到

在部署完成后测试的时候会遇到有些浏览器乱码,谷歌正常

这里需要注意的是TP在异步的时候会出现,在urldecode的时候中文出现乱码,所以在这里我在前面加一行代码防止乱码

  1. header("Content-Type:text/html;charset=utf-8");

复制

本地测试异步中写操作数据库是没任何意义的

因为异步需要服务器上测试才行的。

时间: 2024-10-07 22:39:07

ThinkPHP整合支付宝担保交易的相关文章

Discuz 3.2接入支付宝担保交易

支付宝双功能收款,已经不再支持,取而代之的是支付宝担保交易.而Discuz 3.2仅支持双功能收款,这种已经不再支持的服务 那么我们就该修改支付代码吧,希望你用的是VIM输入命令替换所有的trade_create_by_buyer,为create_partner_trade_by_buyer :%s/trade_create_by_buyer/create_partner_trade_by_buyer/

支付宝担保交易接口

根据支付宝方面的政策调整,自2014年12月份起,不再签署相关双接口协议,目前仍在生效的,到期日后不再续签.,因此新的支付宝插件,按照即时到账和担保交易分别设计,以适应相关客户的具体需求. 关于担保交易接口 所谓担保交易,是由买家先付款到支付宝,支付宝收到买家付款后即时通知卖家发货,买家收到货物满意后通知支付宝付款给卖家.这样买家就不用担心把款直接付给卖家,卖家不给发货的问题,大大的降低了网上购物的风险.安装此接口后,买家在下单后付款时,可以选择这种支付方式来支付货款. 本支付插件是支付宝担保交

ThinkPHP整合支付宝即时到账接口调用

首先是在支付宝的蚂蚁金服开放平台下载PHP的demo: 1 https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&docType=1 下载地址如上,里面有个MD5加密方式UTF8的PHP的demo可以拿来用,可以直接在localhost上跑,传入合适的参数即使体验支付一次,这点和微信支付接口调用的demo相同. 现在我们尝试将其中demo的lib类文件整合到thinkphp之中去. 将四个lib改名放入Vend

thinkPHP 接支付宝及时到账接口

支付宝及时到帐接口,现在整理以下: 1.先将支付宝提供的公共类库函数库文件防盗thinkPHP的Vender目录下建的一个alipay文件下,以便之后的调用. //四个文件我分别给他们改了下名字,因为由于thinkphp Vender目录下,调用路径的问题,如Vender("Alipay.Core.function")这样的结果的Alipay目录下的Core目录下function.php 文件 7 |~Alipay/ 8 | |-Corefunction.php* 9 | |-Md5f

ThinkPHP整合百度Ueditor图文教程

ThinkPHP整合百度Ueditor图文教程 ThinkPHP整合百度Ueditor,基于黄永成老师的视频说明的申明:最好大家都能写绝对路径的都写好绝对路径比如:window.UEDITOR_HOME_URL 他在教程里面已经说了的,我就不再次说了啊,就一笔带过,好了不废话! 在调用编辑器的时候首先先初始化一些值: <script type="text/javascript" charset="utf-8"> window.UEDITOR_HOME_U

thinkphp整合系列之phpexcel生成生成excel文件

在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲解thinkphp整合phpexcel的过程: 示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin 一:导入phpexcel /ThinkPHP/Library/Vendor/PHPExcel 二:生成excel的函数 /** * 数组

ThinkPHP整合百度Ueditor

ThinkPHP整合百度Ueditor,基于黄永成老师的视频说明的申明:最好大家都能写绝对路径的都写好绝对路径比如:window.UEDITOR_HOME_URL他在教程里面已经说了的,我就不再次说了啊,就一笔带过,好了不废话!在调用编辑器的时候首先先初始化一些值: 1 <script type="text/javascript" charset="utf-8"> 2 window.UEDITOR_HOME_URL = "/Public/ued

thinkphp整合系列之微信公众号支付

thinkphp整合系列之微信公众号支付 白俊遥 2016-07-17 11:26:52 PHP thinkphp 公众号支付是指在微信app中访问的页面通过js直接调起微信支付:因此页面必须是在微信中打开的:示例项目:https://github.com/baijunyao/thinkphp-bjyadmin一:设置域名登录微信公众平台:微信支付中设置支付授权目录:把域名改为自己的:注意最后是有一个斜线的 / 设置授权域名:二:导入sdk/ThinkPHP/Library/Vendor/Wei

API开发第五篇:服务端整合支付宝快捷移动支付接口

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="white-space:pre"> </span>在开发中需要使用支付宝的快捷移动支付接口,通过文档知道,当完成客户端请求完成后,支付宝服务器会异步通知客户端的服务器.这里的关键是提供给支付宝的这个用于异步通知的con