支付宝网页支付

  1. 1.填写配置信息  
[php]  view plain  copy
  1. function alipayConfig() {  
  2.         //合作身份者id,以2088开头的16位纯数字  
  3.         $alipay_config ['partner'] = '';  
  4.         //收款支付宝账号,一般情况下收款账号就是签约账号  
  5.         $alipay_config ['seller_email'] = '';  
  6.         //安全检验码,以数字和字母组成的32位字符  
  7.         $alipay_config ['key'] = ';  
  8.         //签名方式 不需修改  
  9.         $alipay_config ['sign_type'] = strtoupper ( 'MD5' );  
  10.         //字符编码格式 目前支持 gbk 或 utf-8  
  11.         $alipay_config ['input_charset'] = strtolower ( 'utf-8' );  
  12.         //ca证书路径地址,用于curl中ssl校验  
  13.         //请保证cacert.pem文件在当前文件夹目录中  
  14.         //$alipay_config['cacert']    = getcwd().'\\cacert.pem';  
  15.         //访问模式,根据自己的服务器是否支持ssl访问,若支持请选择https;若不支持请选择http  
  16.         $alipay_config ['transport'] = 'http';  
  17.         return $alipay_config;  
  18.     }  

2.支付请求连接

 

[php]  view plain  copy
  1. function alipayapi() {  
  2.         $alipay_config = $this->alipayConfig ();  
  3.         $payment_type = "1"//支付类型//必填,不能修改  
  4.         //http://shop/index.php?m=&c=index&a=index#  
  5.         $notify_url = "http://notify_url"; //服务器异步通知页面路径//需http://格式的完整路径,不能加?id=123这类自定义参数  
  6.         $return_url = "http://return_url"; //页面跳转同步通知页面路径//需http://格式的完整路径,不能加?id=123这类自定义参数,不能写成http://localhost/  
  7.         $oid = $_GET ['oid'];  
  8.         $out_trade_no = "lsd" . time () . "_" . $_GET ['oid']; //商户网站订单系统中唯一订单号,必填  
  9.         $funcLog = M ( "appdb.app_elife_order" )->where ( "id=$oid" )->find ();  
  10.         $mname = $funcLog ['item_name'];  
  11.         $subject = "购买功能({$mname})付费"//订单名称,必填  
  12.         if (! $funcLog)  
  13.             exit ();  
  14.         $total_fee = round ( $funcLog ['sale_amount'], 2 ); //付款金额,必填  
  15.         $body = $_GET ['desc'] ? $_GET ['desc'] : ''//订单描述(暂无)  
  16.         $show_url = $_GET ['url'] ? $_GET ['url'] : ''//商品展示地址(暂无)//需以http://开头的完整路径,例如:http://www.商户网址.com/myorder.html  
  17.         $anti_phishing_key = ""//防钓鱼时间戳//若要使用请调用类文件submit中的query_timestamp函数  
  18.         $exter_invoke_ip = ""//客户端的IP地址//非局域网的外网IP地址,如:221.0.0.1  
  19.         //构造要请求的参数数组,无需改动  
  20.         //dump($funcLog);die();  
  21.         $parameter = array ("service" => "create_direct_pay_by_user""partner" => trim ( $alipay_config ['partner'] ), "seller_email" => trim ( $alipay_config ['seller_email'] ), "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'] ) ) );  
  22.         //建立请求  
  23.         $alipaySubmit = new AlipaySubmit ( $alipay_config );  
  24.         $html_text = $alipaySubmit->buildRequestForm ( $parameter"post""" );  
  25.         echo $html_text;  
  26.     }  
3.异步通知

[php]  view plain  copy
  1. function notify_url() {  
  2.         $alipay_config = $this->alipayConfig ();  
  3.         $alipayNotify = new AlipayNotify ( $alipay_config );  
  4.         $verify_result = $alipayNotify->verifyNotify ();  
  5.         $data = array ();  
  6.         $data ['oid'] = substr ( strstr ( $_POST ['out_trade_no'], "_" ), 1 );  
  7.         $data ['trade_no'] = $_POST ['trade_no'];  
  8.         $data ['gmt_time'] = $_POST ['gmt_create'];  
  9.         $data ['total_fee'] = $_POST ['total_fee'];  
  10.         $data ['seller_email'] = $_POST ['seller_email'];  
  11.         $data ['buyer_email'] = $_POST ['buyer_email'];  
  12.         $data ['trade_status'] = $_POST ['trade_status'];  
  13.         $data ['type'] = 1;  
  14.         M ( 'appdb.app_elife_paylog' )->add ( $data );  
  15.         if ($verify_result) { //验证成功  
  16.             $out_trade_no = $_POST ['out_trade_no']; //商户订单号  
  17.             $trade_no = $_POST ['trade_no']; //支付宝交易号  
  18.             $out_trade_no = substr ( strstr ( $out_trade_no"_" ), 1 );  
  19.             $trade_status = $_POST ['trade_status']; //交易状态  
  20.             $total_fee = $_POST ['total_fee']; //交易金额  
  21.             $buyer_email = $_POST ['buyer_email']; //买家支付宝账号  
  22.             if ($_POST ['trade_status'] == 'TRADE_FINISHED') {  
  23.                 //处理订单逻辑操作  
  24.             } else if ($_POST ['trade_status'] == 'TRADE_SUCCESS') {  
  25.                 //处理订单逻辑操作  
  26.             }  
  27.             echo "success"//请不要修改或删除  
  28.         } else {  
  29.             //验证失败  
  30.             echo "fail";  
  31.           
  32.         //调试用,写文本函数记录程序运行情况是否正常  
  33.         }  
  34.       
  35.     }  
4.同步操作页面

[php]  view plain  copy
  1. function return_url() {  
  2.         $alipay_config = $this->alipayConfig ();  
  3.         $alipayNotify = new AlipayNotify ( $alipay_config );  
  4.         $verify_result = $alipayNotify->verifyReturn ();  
  5.         $code = 1;  
  6.         $out_trade_no = $_GET ['out_trade_no']; //商户订单号  
  7.         $out_trade_no = substr ( strstr ( $out_trade_no"_" ), 1 );  
  8.         $trade_no = $_GET ['trade_no']; //支付宝交易号  
  9.         $data = array ();  
  10.         $data ['oid'] = substr ( strstr ( $_GET ['out_trade_no'], "_" ), 1 );  
  11.         $data ['trade_no'] = $_GET ['trade_no'];  
  12.         $data ['gmt_time'] = $_GET ['gmt_create'];  
  13.         $data ['total_fee'] = $_GET ['total_fee'];  
  14.         $data ['seller_email'] = $_GET ['seller_email'];  
  15.         $data ['buyer_email'] = $_GET ['buyer_email'];  
  16.         $data ['trade_status'] = $_GET ['trade_status'];  
  17.         $data ['type'] = 1;  
  18.         M ( 'appdb.app_elife_paylog' )->add ( $data );  
  19.         if ($verify_result) { //验证成功  
  20.             $trade_status = $_GET ['trade_status']; //交易状态  
  21.             $total_fee = $_GET ['total_fee']; //交易金额  
  22.             $buyer_email = $_GET ['buyer_email']; //买家支付宝账号  
  23.             logResult ( $out_trade_no . " 交易成功_2  " . $trade_no );  
  24.             if ($_GET ['trade_status'] == 'TRADE_FINISHED' || $_GET ['trade_status'] == 'TRADE_SUCCESS') {  
  25.                 $this->changeFuncOrderStatus ( $out_trade_no, 2, $trade_no$total_fee );  
  26.             } else {  
  27.                 $code = 2;  
  28.                 echo "trade_status=" . $_GET ['trade_status'];  
  29.             }  
  30.         } else {  
  31.             $code = 2;  
  32.             logResult ( $out_trade_no . " 交易失败_2  " . $trade_no );  
  33.         }  
  34.         $this->assign ( "code"$code );  
  35.         $this->display ();  
  36.     }  

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值