python做网站开发/子域名大全查询
最近在写个需要简单支付的小项目,用到了支付宝接口,现已完成。把php接入支付宝的流程写在这里供像我一样的小白参考。
1.首先要有一个创建一个应用(选好自己想要的功能,关于支付的功能,貌似都需要签约)
2.下载SDK&Dome(网址https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.CBtzBF&treeId=203&articleId=105910&docType=1)
我选择的是MD5签名方式,下面红框内就是做好的php Demo
lib文件很重要,是整个接口的核心类文件;
alipay.config.php是相关参数的配置文件
alipayapi.php 是支付宝接口入口文件
notify_url.php 是服务器异步通知页面文件;
return_url.php 是页面跳转同步通知文件;
3.打开alipay.config.php
4.配置完成后这个小例子就能直接访问了
通过这个例子,我们就能灵活运用了
开发文档:https://doc.open.alipay.com/docs/doc.htm?treeId=203&articleId=105288&docType=1
**********************************************
嵌入thinkphp3.2.3
我保留了
重新命名为
分别给这五个文件加上命名空间
Alipay.class.php 有改动
<?php
namespace Extend\Alipay;
class Alipay {public function pay($alipay_config,$args){/**************************请求参数**************************///支付类型$payment_type = "1";//必填,不能修改//服务器异步通知页面路径$notify_url = $args['notify_url'];//需http://格式的完整路径,不能加?id=123这类自定义参数//页面跳转同步通知页面路径$return_url = $args['return_url'];//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost///商户订单号$out_trade_no = $args['out_trade_no'];//商户网站订单系统中唯一订单号,必填//订单名称$subject = "测试";//必填//付款金额$total_fee = $args['total'];//必填//订单描述$body = "test";//需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html//防钓鱼时间戳$anti_phishing_key = "";//若要使用请调用类文件submit中的query_timestamp函数//客户端的IP地址$exter_invoke_ip = "";//非局域网的外网IP地址,如:221.0.0.1/************************************************************///构造要请求的参数数组,无需改动$parameter = array("service" => "create_direct_pay_by_user","partner" => trim($alipay_config['partner']),"seller_id" => trim($alipay_config['seller_id']),"payment_type" => $payment_type,"notify_url" => $notify_url,"return_url" => $return_url,"out_trade_no" => $out_trade_no,"subject" => $subject,"total_fee" => $total_fee,"body" => $body,"show_url" => $show_url,"anti_phishing_key" => $anti_phishing_key,"exter_invoke_ip" => $exter_invoke_ip,"_input_charset" => trim(strtolower($alipay_config['input_charset'])));//建立请求$alipaySubmit = new lib\AlipaySubmit($alipay_config);$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(){$out_trade_no = date('YmdHis');$baseurl = 'http://'.$_SERVER['HTTP_HOST'];$args = array('out_trade_no'=>$out_trade_no,'notify_url'=> $baseurl.'/index.php/Home/Text/notifyurl.html','return_url'=> $baseurl.'/index.php/Home/Text/returnurl.html','total'=> $_POST['WIDtotal_fee'],);$s = new Alipays\Alipay();$s->pay(C('alipay'),$args);}// 同步跳转public function returnurl(){$alipay_config = C('alipay');//计算得出通知验证结果$alipayNotify = new Alipays\lib\AlipayNotify($alipay_config);$verify_result = $alipayNotify->verifyReturn();if($verify_result) {//验证成功//商户订单号$out_trade_no = $_GET['out_trade_no'];//支付宝交易号$trade_no = $_GET['trade_no'];//交易状态$trade_status = $_GET['trade_status'];if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {//交易成功 }else {echo "trade_status=".$_GET['trade_status'];} echo "验证成功<br />";}else {//验证失败//如要调试,请看alipay_notify.php页面的verifyReturn函数echo "验证失败";}}// 异步跳转public function notifyurl(){$alipay_config = C('alipay');//计算得出通知验证结果$alipayNotify = new Alipays\AlipayNotify($alipay_config);$verify_result = $alipayNotify->verifyNotify();if($verify_result) {//验证成功$out_trade_no = $_POST['out_trade_no'];//支付宝交易号$trade_no = $_POST['trade_no'];//交易状态$trade_status = $_POST['trade_status'];if($_POST['trade_status'] == 'TRADE_FINISHED'||$_POST['trade_status'] == 'TRADE_SUCCESS') {//交易成功}echo "success"; //请不要修改或删除}else {//验证失败echo "fail";//调试用,写文本函数记录程序运行情况是否正常//logResult("这里写入想要调试的代码变量值,或其他运行的结果记录");}}
}
然后
这样就成功完成简单的支付功能了
小白,共勉!