支付宝手机网址支付是移动端一个必不可少的功能。支付宝支付的文档还是很清楚的,可以直接看文档进行编写。我写一下我的代码
支付流程:用户点击前端的支付,然后后台生成支付需要的数据,传给支付宝,支付调起输入支付密码 支付成功
代码:
1)生成需要数据的后台方法
// 点击支付 [唤起支付] 【需要修改 已经改变了】
public function goLease(){
require_once(APP_PATH."Business/aliPay/aliPay.php");
$sc=new \Alipay();
echo $sc->aliPayApp($resOrderInfo);
}
- Alipay类下面的方法
<?php
/*
* 支付宝支付主业务模块
*
* author:HK
*/
header("Content-type:text/html;charset=utf-8");
require_once './nuoSystem/Plugin/aliPayPc/lib/alipay_submit.class.php';
class aliPay{
//支付宝手机APP支付
public function aliPayApp($_data) {
$_pcConfig = require 'alipay.config.php';
header("Content-type:text/html;charset=utf-8");
$data["userId"] = isset($_data["userid"]) ? $_data["userid"] : 0;
$data["orderNumber"] = isset($_data["ordernumber"]) ? $_data["ordernumber"] : 0;
$data["orderId"] = isset($_data["orderid"]) ? $_data["orderid"] : 0;
$data["totalLastMoney"] = isset($_data["totallastmoney"]) ? sprintf("%0.2f", $_data["totallastmoney"]) : 0.00; //充值金额
$parameter = array(
"service" => $_pcConfig['service'],
"partner" => $_pcConfig['partner'],
"seller_id" => $_pcConfig['seller_id'],
"payment_type" => $_pcConfig['payment_type'],
"notify_url" => $_pcConfig['notify_url'],
"return_url" => $_pcConfig['return_url'],
"_input_charset" => trim(strtolower($_pcConfig['input_charset'])),
"out_trade_no" => $data["orderNumber"],
"subject" => "支付",
"total_fee" => $data["totalLastMoney"],
// "total_fee" => "0.01",
"show_url" => "http://www.taobao.com/product/113714.html",
"app_pay" => "Y", //启用此参数能唤起钱包APP支付宝
"body" => "支付",
);
//require_once('/Plugin/aliPay/lib/alipay_submit.class.php');
$alipaySubmit = new \AlipaySubmit($_pcConfig);
// var_dump($alipaySubmit);
// exit;
$html_text = $alipaySubmit->buildRequestForm($parameter, "get", "确认");
echo $html_text;
}
}
3)支付完成
4)异步回调处理
//PC支付宝异步回调业务的处理
public function alipayNotify() {
require_once './nuoSystem/Plugin/aliPayPc/lib/alipay_notify.class.php';
$_pcConfig = require 'alipayApp.config.php';
//计算得出通知验证结果
$alipayNotify = new \AlipayNotify($_pcConfig);
// error_log('----'.print_r($alipayNotify,true),3,dirname(__FILE__).'/error_log123.php');
$verify_result = $alipayNotify->verifyNotify();
// error_log('===='.print_r($verify_result,true),3,dirname(__FILE__).'/error_log123.php');
return $verify_result;
}
//支付宝支付PC异步回调
public function alipayNotify() {
require_once(APP_PATH."Business/aliPay/aliPay.php");
$aliPayBusiness = new \aliPay();
$verify_result = $aliPayBusiness->alipayNotify();
if ($verify_result) {
$data["orderNumber"] = $_POST['out_trade_no'];
$data["rechargeChongId"] = $_POST['trade_no']; //支付宝交易号
$data["rechargeContent"] = $_POST['trade_status'];
$data["rechargeMoney"] = $_POST['total_fee'];
//修改当前支付订单的状态
$resCallBackController = new CallbackController();
$resCallBackController -> backThink($data); // 调用事物
echo "success";
} else {
echo "fail";
}
}
支付宝网站支付的配置信息
<?php
return array(
"partner" => "2088xxxxxxxxxxxx",
"seller_id" => "2088xxxxxxxxxxxx",
"key" => "2pfm1oyswob7xxxxxxxxxxxxxxxxxxxxxxxxx",
"notify_url" => 'http://'.$_SERVER["HTTP_HOST"]."/Alipay/alipayNotify",
"return_url" => 'http://'.$_SERVER["HTTP_HOST"]."/Alipay/alipayReturnWap",
"sign_type" => strtoupper('MD5'), // 老版的支付 新版使用 rea2
"input_charset" => strtolower('utf-8'),
"cacert" => getcwd() . '\\cacert.pem',
"transport" => "http",
"payment_type" => "1",
"service" => "alipay.wap.create.direct.pay.by.user",
"anti_phishing_key" => "",
"exter_invoke_ip" => ""
);
?>
支付完成了
*** alipay_submit.php ; alipay_notify.php 这些都是需要进行下载支付宝的sdk进行使用