支付宝网页支付

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

2.支付请求连接

 

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

function notify_url() {
		$alipay_config = $this->alipayConfig ();
		$alipayNotify = new AlipayNotify ( $alipay_config );
		$verify_result = $alipayNotify->verifyNotify ();
		$data = array ();
		$data ['oid'] = substr ( strstr ( $_POST ['out_trade_no'], "_" ), 1 );
		$data ['trade_no'] = $_POST ['trade_no'];
		$data ['gmt_time'] = $_POST ['gmt_create'];
		$data ['total_fee'] = $_POST ['total_fee'];
		$data ['seller_email'] = $_POST ['seller_email'];
		$data ['buyer_email'] = $_POST ['buyer_email'];
		$data ['trade_status'] = $_POST ['trade_status'];
		$data ['type'] = 1;
		M ( 'appdb.app_elife_paylog' )->add ( $data );
		if ($verify_result) { //验证成功
			$out_trade_no = $_POST ['out_trade_no']; //商户订单号
			$trade_no = $_POST ['trade_no']; //支付宝交易号
			$out_trade_no = substr ( strstr ( $out_trade_no, "_" ), 1 );
			$trade_status = $_POST ['trade_status']; //交易状态
			$total_fee = $_POST ['total_fee']; //交易金额
			$buyer_email = $_POST ['buyer_email']; //买家支付宝账号
			if ($_POST ['trade_status'] == 'TRADE_FINISHED') {
				//处理订单逻辑操作
			} else if ($_POST ['trade_status'] == 'TRADE_SUCCESS') {
				//处理订单逻辑操作
			}
			echo "success"; //请不要修改或删除
		} else {
			//验证失败
			echo "fail";
		
		//调试用,写文本函数记录程序运行情况是否正常
		}
	
	}
4.同步操作页面

function return_url() {
		$alipay_config = $this->alipayConfig ();
		$alipayNotify = new AlipayNotify ( $alipay_config );
		$verify_result = $alipayNotify->verifyReturn ();
		$code = 1;
		$out_trade_no = $_GET ['out_trade_no']; //商户订单号
		$out_trade_no = substr ( strstr ( $out_trade_no, "_" ), 1 );
		$trade_no = $_GET ['trade_no']; //支付宝交易号
		$data = array ();
		$data ['oid'] = substr ( strstr ( $_GET ['out_trade_no'], "_" ), 1 );
		$data ['trade_no'] = $_GET ['trade_no'];
		$data ['gmt_time'] = $_GET ['gmt_create'];
		$data ['total_fee'] = $_GET ['total_fee'];
		$data ['seller_email'] = $_GET ['seller_email'];
		$data ['buyer_email'] = $_GET ['buyer_email'];
		$data ['trade_status'] = $_GET ['trade_status'];
		$data ['type'] = 1;
		M ( 'appdb.app_elife_paylog' )->add ( $data );
		if ($verify_result) { //验证成功
			$trade_status = $_GET ['trade_status']; //交易状态
			$total_fee = $_GET ['total_fee']; //交易金额
			$buyer_email = $_GET ['buyer_email']; //买家支付宝账号
			logResult ( $out_trade_no . " 交易成功_2  " . $trade_no );
			if ($_GET ['trade_status'] == 'TRADE_FINISHED' || $_GET ['trade_status'] == 'TRADE_SUCCESS') {
				$this->changeFuncOrderStatus ( $out_trade_no, 2, $trade_no, $total_fee );
			} else {
				$code = 2;
				echo "trade_status=" . $_GET ['trade_status'];
			}
		} else {
			$code = 2;
			logResult ( $out_trade_no . " 交易失败_2  " . $trade_no );
		}
		$this->assign ( "code", $code );
		$this->display ();
	}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值