您的位置:首页 > 移动开发 > Android开发

iOS、Android支付宝支付 PHP端实现逻辑

2018-03-12 10:51 375 查看
写代码前一定要参照支付宝官方文档,文档地址:https://openhome.alipay.com/platform/appManage.htm
首先去看此应用的APPID啦(如果有多个APP,眼睛注意,千万别看错哦),当然,如果你的APP没有签约APP支付那就坑爹了,赶紧去申请并且签约吧!!!
好,如果一切都没问题了,开始进入正题
public function Enctype() {
        //I() I函数是ThinkPHP框架里面接收前端参数的一个函数
$orderId = I('post.order_id'); //支付订单号(支付宝规定,一条订单号只能支付成功一次)
$payMoney = I('post.payMoney'); //支付的钱 (单位为 元)
$name = I('post.name');
$money = I('post.money');
$passback_params = urlencode("&paymoney=$money"."&redid[]=". substr(I('post.redid'), 1)); //支付宝支付时可以自定义参数,但是一定要urlencode()
        //下面我引入的都是支付宝官方支付包里面的文件
require_once 'Alipay/aop/AopClient.php';
require_once 'Alipay/aop/request/AlipayTradeAppPayRequest.php';

$aop = new \Alipay\aop\AopClient();
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = "应用APPID";
$aop->rsaPrivateKey = '这里面填写 开发者私钥去头去尾去回车的一行字符串(一定要跟下面的alipayrsaPublicKey区分开)';

$aop->format = "json";
$aop->charset = "UTF-8";
$aop->signType = "RSA2";
$aop->alipayrsaPublicKey = '支付宝公钥,一行字符串';

        //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
$request = new \Alipay\aop\request\AlipayTradeAppPayRequest();

        //SDK已经封装掉了公共参数,这里只需要传入业务参数
$bizcontent =
"{\"body\":\"" . $name . "\","
. "\"subject\": \"" . $name . "\","
. "\"out_trade_no\": \"" . $orderId . "\","
. "\"timeout_express\": \"30m\","
. "\"total_amount\": \"" . $payMoney . "\","
. "\"passback_params\": \"" . $passback_params . "\","
. "\"product_code\":\"QUICK_MSECURITY_PAY\""
. "}";
$request->setNotifyUrl("这里是支付成功回调地址,用来处理支付成功的数据的,一定得有");
$request->setBizContent($bizcontent);
        //这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);

$return_info['orderString'] = $response;
$this->ajaxReturn($return_info); //返还给APP支付订单信息

}APP收到后台翻过去的支付信息,调起支付宝便可支付
/**
* 支付成功回调地址
*/
public function notify_url(){ //这里面的处理方法还只是简版,实际上真正意义上的业务处理要比这复杂得多
//Loader::import('alipaydirect.return_url');
$r = new \alipaydirect\return_url();
//商户订单号
// $out_trade_no = $_GET['out_trade_no'];
// //支付宝交易号
// $trade_no = $_GET['trade_no'];
// //交易状态
// $trade_status = $_GET['trade_status'];
if ($r=="fail") {
echo "fail"; //支付宝收到 fail的信号会继续调用此地址
}else{
if($_GET['trade_status'] == 'TRADE_FINISHED' || $_GET['trade_status'] == 'TRADE_SUCCESS') {
//判断该笔订单是否在商户网站中已经做过处理
//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序
//如果有做过处理,不执行商户的业务程序
echo "success"; //支付宝收到success会终止调用此地址
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息