php接入支付宝的流程写在这里供像我一样的小白参考。
1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约)
我选择的是MD5签名方式,下面红框内就是做好的php Demo
lib文件很重要,是整个接口的核心类文件;
alipay.config.php是相关参数的配置文件
alipayapi.php 是支付宝接口入口文件
notify_url.php 是服务器异步通知页面文件;
return_url.php 是页面跳转同步通知文件;
3.打开alipay.config.php
4.配置完成后这个小例子就能直接访问了


通过这个例子,我们就能灵活运用了
**********************************************
嵌入thinkphp3.2.3
我保留了

重新命名为

分别给这五个文件加上命名空间
这四个文件的命名空间改为

Alipay.class.php 有改动
<?php
namespace Extend\Alipay;
class Alipay {
    public function pay(alipayconfig,𝑎𝑙𝑖𝑝𝑎𝑦𝑐𝑜𝑛𝑓𝑖𝑔,args){
        /**************************请求参数**************************/
        //支付类型
    paymenttype="1";////𝑝𝑎𝑦𝑚𝑒𝑛𝑡𝑡𝑦𝑝𝑒="1";////notify_url = args[notifyurl];//http://?id=123//𝑎𝑟𝑔𝑠[𝑛𝑜𝑡𝑖𝑓𝑦𝑢𝑟𝑙];//𝑡𝑡𝑝://?𝑖𝑑=123//return_url = args[returnurl];//http://?id=123http://localhost///𝑎𝑟𝑔𝑠[𝑟𝑒𝑡𝑢𝑟𝑛𝑢𝑟𝑙];//𝑡𝑡𝑝://?𝑖𝑑=123𝑡𝑡𝑝://𝑙𝑜𝑐𝑎𝑙𝑜𝑠𝑡///out_trade_no = args[outtradeno];////𝑎𝑟𝑔𝑠[𝑜𝑢𝑡𝑡𝑟𝑎𝑑𝑒𝑛𝑜];////subject = "测试";
    //必填
    //付款金额
    totalfee=𝑡𝑜𝑡𝑎𝑙𝑓𝑒𝑒=args['total'];
    //必填
    //订单描述
    body="test";//http://http://www..com/myorder.html//𝑏𝑜𝑑𝑦="𝑡𝑒𝑠𝑡";//𝑡𝑡𝑝://𝑡𝑡𝑝://𝑤𝑤𝑤..𝑐𝑜𝑚/𝑚𝑦𝑜𝑟𝑑𝑒𝑟.𝑡𝑚𝑙//anti_phishing_key = "";
    //若要使用请调用类文件submit中的query_timestamp函数
    //客户端的IP地址
    exterinvokeip="";//IP221.0.0.1////𝑒𝑥𝑡𝑒𝑟𝑖𝑛𝑣𝑜𝑘𝑒𝑖𝑝="";//𝐼𝑃221.0.0.1////parameter = array(
        "service" => "create_direct_pay_by_user",
        "partner" => trim(alipayconfig[partner]),"sellerid"=>trim(𝑎𝑙𝑖𝑝𝑎𝑦𝑐𝑜𝑛𝑓𝑖𝑔[𝑝𝑎𝑟𝑡𝑛𝑒𝑟]),"𝑠𝑒𝑙𝑙𝑒𝑟𝑖𝑑"=>𝑡𝑟𝑖𝑚(alipay_config['seller_id']),
        "payment_type"  => paymenttype,"notifyurl"=>𝑝𝑎𝑦𝑚𝑒𝑛𝑡𝑡𝑦𝑝𝑒,"𝑛𝑜𝑡𝑖𝑓𝑦𝑢𝑟𝑙"=>notify_url,
        "return_url"    => returnurl,"outtradeno"=>𝑟𝑒𝑡𝑢𝑟𝑛𝑢𝑟𝑙,"𝑜𝑢𝑡𝑡𝑟𝑎𝑑𝑒𝑛𝑜"=>out_trade_no,
        "subject"       => subject,"totalfee"=>𝑠𝑢𝑏𝑗𝑒𝑐𝑡,"𝑡𝑜𝑡𝑎𝑙𝑓𝑒𝑒"=>total_fee,
        "body"  => body,"showurl"=>𝑏𝑜𝑑𝑦,"𝑠𝑜𝑤𝑢𝑟𝑙"=>show_url,
        "anti_phishing_key"     => antiphishingkey,"exterinvokeip"=>𝑎𝑛𝑡𝑖𝑝𝑖𝑠𝑖𝑛𝑔𝑘𝑒𝑦,"𝑒𝑥𝑡𝑒𝑟𝑖𝑛𝑣𝑜𝑘𝑒𝑖𝑝"=>exter_invoke_ip,
        "_input_charset"        => trim(strtolower(alipayconfig[inputcharset])));//𝑎𝑙𝑖𝑝𝑎𝑦𝑐𝑜𝑛𝑓𝑖𝑔[𝑖𝑛𝑝𝑢𝑡𝑐𝑎𝑟𝑠𝑒𝑡])));//alipaySubmit = new lib\AlipaySubmit(alipayconfig);𝑎𝑙𝑖𝑝𝑎𝑦𝑐𝑜𝑛𝑓𝑖𝑔);html_text = alipaySubmit>buildRequestForm(𝑎𝑙𝑖𝑝𝑎𝑦𝑆𝑢𝑏𝑚𝑖𝑡>𝑏𝑢𝑖𝑙𝑑𝑅𝑒𝑞𝑢𝑒𝑠𝑡𝐹𝑜𝑟𝑚(parameter,"get", "确认");
        echo $html_text;
    }
}

在config.php配置文件里配置参数

然后新建控制器TextController.class.php
<?php
namespace Home\Controller;
use Think\Controller;
use \Extend\Alipay as Alipays;
class TextController extends Controller {
    public function index(){
        $this->display();
    }
    public function dobuy(){
        outtradeno=date(YmdHis);𝑜𝑢𝑡𝑡𝑟𝑎𝑑𝑒𝑛𝑜=𝑑𝑎𝑡𝑒(𝑌𝑚𝑑𝐻𝑖𝑠);baseurl = 'http://'.SERVER[HTTPHOST];𝑆𝐸𝑅𝑉𝐸𝑅[𝐻𝑇𝑇𝑃𝐻𝑂𝑆𝑇];args = array(
            'out_trade_no'=>outtradeno,notifyurl=>𝑜𝑢𝑡𝑡𝑟𝑎𝑑𝑒𝑛𝑜,𝑛𝑜𝑡𝑖𝑓𝑦𝑢𝑟𝑙=>baseurl.'/index.php/Home/Text/notifyurl.html',
            'return_url'=> baseurl./index.php/Home/Text/returnurl.html,total=>𝑏𝑎𝑠𝑒𝑢𝑟𝑙./𝑖𝑛𝑑𝑒𝑥.𝑝𝑝/𝐻𝑜𝑚𝑒/𝑇𝑒𝑥𝑡/𝑟𝑒𝑡𝑢𝑟𝑛𝑢𝑟𝑙.𝑡𝑚𝑙,𝑡𝑜𝑡𝑎𝑙=>_POST['WIDtotal_fee'],
            );
        s=newAlipays\Alipay();𝑠=𝑛𝑒𝑤𝐴𝑙𝑖𝑝𝑎𝑦𝑠\Alipay();s->pay(C('alipay'),$args);
    }
    // 同步跳转
    public function returnurl(){
        alipayconfig=C(alipay);//𝑎𝑙𝑖𝑝𝑎𝑦𝑐𝑜𝑛𝑓𝑖𝑔=𝐶(𝑎𝑙𝑖𝑝𝑎𝑦);//alipayNotify = new Alipays\lib\AlipayNotify(alipayconfig);𝑎𝑙𝑖𝑝𝑎𝑦𝑐𝑜𝑛𝑓𝑖𝑔);verify_result = alipayNotify>verifyReturn();if(𝑎𝑙𝑖𝑝𝑎𝑦𝑁𝑜𝑡𝑖𝑓𝑦>𝑣𝑒𝑟𝑖𝑓𝑦𝑅𝑒𝑡𝑢𝑟𝑛();𝑖𝑓(verify_result) {//验证成功
            //商户订单号
            outtradeno=𝑜𝑢𝑡𝑡𝑟𝑎𝑑𝑒𝑛𝑜=_GET['out_trade_no'];
            //支付宝交易号
            tradeno=𝑡𝑟𝑎𝑑𝑒𝑛𝑜=_GET['trade_no'];
            //交易状态
            tradestatus=𝑡𝑟𝑎𝑑𝑒𝑠𝑡𝑎𝑡𝑢𝑠=_GET['trade_status'];
            if(GET[tradestatus]==TRADEFINISHED||𝐺𝐸𝑇[𝑡𝑟𝑎𝑑𝑒𝑠𝑡𝑎𝑡𝑢𝑠]==𝑇𝑅𝐴𝐷𝐸𝐹𝐼𝑁𝐼𝑆𝐻𝐸𝐷||_GET['trade_status'] == 'TRADE_SUCCESS') {
                //交易成功                
            }else {
              echo "trade_status=".$_GET['trade_status'];
            }   
            echo "验证成功<br />";
            }else {
            //验证失败
            //如要调试,请看alipay_notify.php页面的verifyReturn函数
            echo "验证失败";
        }
    }
    // 异步跳转
    public function notifyurl(){
        alipayconfig=C(alipay);//𝑎𝑙𝑖𝑝𝑎𝑦𝑐𝑜𝑛𝑓𝑖𝑔=𝐶(𝑎𝑙𝑖𝑝𝑎𝑦);//alipayNotify = new Alipays\AlipayNotify(alipayconfig);𝑎𝑙𝑖𝑝𝑎𝑦𝑐𝑜𝑛𝑓𝑖𝑔);verify_result = alipayNotify>verifyNotify();if(𝑎𝑙𝑖𝑝𝑎𝑦𝑁𝑜𝑡𝑖𝑓𝑦>𝑣𝑒𝑟𝑖𝑓𝑦𝑁𝑜𝑡𝑖𝑓𝑦();𝑖𝑓(verify_result) {//验证成功
            outtradeno=𝑜𝑢𝑡𝑡𝑟𝑎𝑑𝑒𝑛𝑜=_POST['out_trade_no'];
            //支付宝交易号
            tradeno=𝑡𝑟𝑎𝑑𝑒𝑛𝑜=_POST['trade_no'];
            //交易状态
            tradestatus=𝑡𝑟𝑎𝑑𝑒𝑠𝑡𝑎𝑡𝑢𝑠=_POST['trade_status'];
            if(POST[tradestatus]==TRADEFINISHED||𝑃𝑂𝑆𝑇[𝑡𝑟𝑎𝑑𝑒𝑠𝑡𝑎𝑡𝑢𝑠]==𝑇𝑅𝐴𝐷𝐸𝐹𝐼𝑁𝐼𝑆𝐻𝐸𝐷||_POST['trade_status'] == 'TRADE_SUCCESS') {
              //交易成功
            }
            echo "success";     //请不要修改或删除
            
        }
        else {
            //验证失败
            echo "fail";
            //调试用,写文本函数记录程序运行情况是否正常
            //logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");
        }
    }
}
然后

这样就成功完成简单的支付功能了
 
手机端:参考
http://www.sucaihuo.com/php/1948.html
 
原文出处:http://blog.csdn.net/sangjinchao/article/details/54987999

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部