/建立请求
廉江ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!
$alipaySubmit = new AlipaySubmit($alipay_config);
$html_text = $alipaySubmit-buildRequestForm($parameter, 'get', '确认');
echo $html_text;
$html_text其实是一个确认支付请求的链接,支付宝把这货写成自动确认提交的了,可以去lib/alipay_submit.class下的buildRequestForm函数里面把document.forms['alipaysubmit'].submit();删掉就好。
更多问题到问题求助专区
require_once(app_path() . "/Tool/Alipay/alipay.config.php");
require_once(app_path() . "/Tool/Alipay/lib/alipay_submit.class.php");
//返回格式
$format = "xml";
//必填,不需要修改
//返回格式
$v = "2.0";
//必填,不需要修改
//请求号
$req_id = date('Ymdhis');
//必填,须保证每次请求都是唯一
//**req_data详细信息**
//服务器异步通知页面路径
$notify_url = "http://" . $_SERVER['HTTP_HOST'] . '/service/pay/ali_notify';
//需http://格式的完整路径,不允许加?id=123这类自定义参数
//页面跳转同步通知页面路径
$call_back_url = "http://" . $_SERVER['HTTP_HOST'] . '/service/pay/ali_result';
//需http://格式的完整路径,不允许加?id=123这类自定义参数
//
//操作中断返回地址
$merchant_url = "http://" . $_SERVER['HTTP_HOST'] . '/service/pay/ali_merchant';
//用户付款中途退出返回商户的地址。需http://格式的完整路径,不允许加?id=123这类自定义参数
//卖家支付宝帐户
$seller_email = 'ajjnae2770@sandbox.com';
//必填
//商户订单号
$out_trade_no = $_POST['order_no'];
//商户网站订单系统中唯一订单号,必填
Log::info('out_trade_no:' . $out_trade_no);
//订单名称
$subject = $_POST['name'];
//必填
//付款金额
$total_fee = $_POST['total_price'];
//必填
//请求业务参数详细
$req_data = 'direct_trade_create_reqnotify_url' . $notify_url . '/notify_urlcall_back_url' . $call_back_url . '/call_back_urlseller_account_name' . $seller_email . '/seller_account_nameout_trade_no' . $out_trade_no . '/out_trade_nosubject' . $subject . '/subjecttotal_fee' . $total_fee . '/total_feemerchant_url' . $merchant_url . '/merchant_url/direct_trade_create_req';
//必填
/************************************************************/
//构造要请求的参数数组,无需改动
$para_token = array(
"service" = "alipay.wap.trade.create.direct",
"partner" = trim($alipay_config['partner']),
"sec_id" = trim($alipay_config['sign_type']),
"format" = $format,
"v" = $v,
"req_id" = $req_id,
"req_data" = $req_data,
"_input_charset" = trim(strtolower($alipay_config['input_charset']))
);
//建立请求
$alipaySubmit = new \AlipaySubmit($alipay_config);
//报错点
$html_text = $alipaySubmit-buildRequestHttp($para_token);
//URLDECODE返回的信息
$html_text = urldecode($html_text);
//解析远程模拟提交后返回的信息
$para_html_text = $alipaySubmit-parseResponse($html_text);
//获取request_token
$request_token = $para_html_text['request_token'];
/**************************根据授权码token调用交易接口alipay.wap.auth.authAndExecute**************************/
//业务详细
$req_data = 'auth_and_execute_reqrequest_token' . $request_token . '/request_token/auth_and_execute_req';
//必填
//构造要请求的参数数组,无需改动
$parameter = array(
"service" = "alipay.wap.auth.authAndExecute",
"partner" = trim($alipay_config['partner']),
"sec_id" = trim($alipay_config['sign_type']),
"format" = $format,
"v" = $v,
"req_id" = $req_id,
"req_data" = $req_data,
"_input_charset" = trim(strtolower($alipay_config['input_charset']))
);
//建立请求
$alipaySubmit = new \AlipaySubmit($alipay_config);
$html_text = $alipaySubmit-buildRequestForm($parameter, 'get', '确认');
return $html_text;
}
其实主要在Alipay_Notify.aspx这个文件里获得支付宝返给你的状态,然后根据状态来做操作
Request.Form["out_trade_no"].ToString()
这个是获得外部订单(也就是你网站中生成的订单编号)
Request.Form["trade_status"]和Request.Form["refund_status"]这个是获得支付宝返给你的状态
付款成功的逻辑处理在noticy文件里,这个文件不可见,是支付宝付款成功后台调用通知你的页面
return这个文件是付款成功后用户跳回看到的页面,
官方的文档写的很清楚
要看着说明做
生成订单后,调用支付宝的接口,按照要求填写参数(注:他们提供的所谓的接口,也就是一个函数而已,他会告诉需要什么参数,返回什么值,你就当做一个函数调用就行了)
支付成功成功之后,支付宝会返回一个状态,获取这个状态,根据支付宝返回的状态更新数据库中的订单状态,然后再设置跳转到相应的页面
汗,怎么会不能读取session呢?给你粘贴段淘宝技术的解释:
返回页面(return_url文件)工作原理
即:商户系统请求/支付宝响应交互模式
1、 构造请求数据
商户通过提供的接口代码示例,通过代码示例的规则,程序构造与运算得到sign加密结果以及构造后的请求给支付宝的数据集合。get方式下是url地址链接,post方式下是支付宝网关地址及参数集合。
2、 发送请求数据
把构造完成的数据集合,通过页面链接跳转或表单提交的方式传递给支付宝。
3、 请求的交易
支付宝得到这些集合后,会先做安全校验等验证,一系列验证通过后便会处理完成这次发送过来的数据请求。
4、 返回相应数据
支付宝对处理完成的交易,程序上自动进行重新构造成url地址链接,以自动跳转的方式跳回商家在请求时设定好的页面路径地址(参数return_url,商家没设定,则不会跳回)。
5、 对相应的数据进行处理
商家的返回页面(参数return_url指定页面文件)得到支付宝返回的数据,把这些数据结合自身网站情况,进行数据处理(如:订单更新)。
返回页面(notify_url文件)工作原理
即:支付宝主动通知交互模式(支付宝反馈数据)
前提:若要支付宝能主动通知,需商户在请求时设定好通知的页面路径(参数notify_url),且该页面文件完全空白,无任何字符。
1、 发起通知
一旦交易状态发生变更(如:买家已付款,等待卖家发货),支付宝便会根据自动进行数据处理,并主动调用商户在请求时设定好通知的页面路径(参数notify_url)
2、 对通知数据进行处理
商户网站收到支付宝发送过来的通知数据,把这些数据结合自身网站情况,进行数据处理,如:处理返回页(参数return_url)漏掉的订单,做订单更新,即补单措施。
3、 在页面上输出success
商户网站处理完成所有的数据处理以后,即程序运行最后,返回写页面“success”这7个字符(页面上只允许输出success),以表示自己已经成功处理完成自己的业务。
4、 完成处理该次通知,不再发送通知
支付宝得到商户反馈回来的“success”7个字符信息,进行核对与验证,结束此次通知流程。
注意:
如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。一般情况下 25 小时以内完成8 次通知(通知的间隔频率一般是:2m,10m,10m,1h,2h,6h,15h)。