【PHP】PHP服务端支付宝支付及回调
支付宝支付
(由app端自行调起支付宝/微信)
1.下载PHP版SDK
<?phpdefine('IN_ECS', true);/*App支付 PHP服务端*/
/*引入支付宝PHP SDK*/
header("Content-type:text/html;charset=utf-8;");
require_once('../alipay-sdk-PHP/aop/request/AlipayTradeAppPayRequest.php');
require_once('../alipay-sdk-PHP/aop/AopClient.php');$user_id = isset($_REQUEST['user_id']) ? trim($_REQUEST['user_id']) : 0;
$money = isset($_REQUEST['amount']) ? trim($_REQUEST['amount']) : 0;if($user_id == 0 || $money ==0){$result = array('code' => 1,'data'=>'缺少参数' );die(json_encode($result));
}$aop = new AopClient;
$aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
$aop->appId = "appid";
$aop->format = "json";
$aop->charset = "utf-8";
$aop->signType = "RSA2";
$aop->rsaPrivateKey = '开发者私钥';$aop->alipayrsaPublicKey = '支付宝公钥';//实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay$request = new AlipayTradeAppPayRequest();
//SDK已经封装掉了公共参数,这里只需要传入业务参数
$trade_no = chongzhi_sn();
//入库信息
require(dirname(__FILE__) . '../../includes/init.php');
include_once(ROOT_PATH .'includes/lib_clips.php');$user_m = get_user_info($user_id);$dbcontent = array('user_id' => $user_id,'amount' => $money,'user_name' => $user_m['user_name'],'payment' => "支付宝",'cz_sn' => $trade_no,'add_time' => gmtime()
);
//传参信息
$bizcontent = array('body' =>(string)$trade_no,'subject' =>'充值','total_amount' => $money,'out_trade_no' => (string)$trade_no,'product_code' => 'QUICK_MSECURITY_PAY','timeout_express'=> '30m'
);$bizcontent = json_encode($bizcontent);
$request->setNotifyUrl("支付回调地址");
$request->setBizContent($bizcontent);
//这里和普通的接口调用不同,使用的是sdkExecute
$response = $aop->sdkExecute($request);
//htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
//echo htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。if($response){if($GLOBALS['db']->autoExecute($ecs->table('user_chongzhi'), $dbcontent, 'INSERT')){$result = array('code'=>0,'data'=>$response);}else{$result = array('code'=>1,'data'=>'意外出错,请联系客服。');}die(json_encode($result));
}function chongzhi_sn()
{/* 选择一个随机的方案 */mt_srand((double) microtime() * 1000000);return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
}?>
回调
<?php
define('IN_ECS', true);require_once('../alipay-sdk-PHP/aop/request/AlipayTradeAppPayRequest.php');
require_once('../alipay-sdk-PHP/aop/AopClient.php');$aop = new AopClient;
$aop->alipayrsaPublicKey = '支付宝公钥';
$flag = $aop->rsaCheckV1($_POST, NULL, "RSA2");$myfile = fopen("testfile.txt", "a");
fwrite($myfile, "\r\n");
fwrite($myfile, json_encode($_POST));if($_POST['trade_status'] == 'TRADE_SUCCESS' ){//业务处理echo 'success';}else{echo 'fail';
}
fclose($myfile);
?>
所需的私钥公钥获取地址
1.私钥 (下载rsa签名验签工具)https://docs.open.alipay.com/291/105971/
2.支付宝公钥
通过上传私钥,由支付宝生成公钥 https://docs.open.alipay.com/291/105972/
3.支付宝联调日志排查 https://openmonitor.alipay.com/acceptance/cloudparse.htm
【PHP】PHP服务端支付宝支付及回调相关推荐
- 支付宝手机网站支付,app支付,PC端支付流程以及服务端php支付下单,回调流程详解
一.支付宝支付相关文档地址: 支付宝支付相关的文档地址:https://open.alipay.com/api 电脑网站支付:https://opendocs.alipay.com/open/270/ ...
- 魔坊APP项目-18-种植园,基于支付宝提供的沙箱测试环境开发支付接口、服务端, 处理支付结果的同步通知和异步通知、修复页面底部菜单无法被点击的BUG
种植园 一.基于支付宝提供的沙箱测试环境开发支付接口 沙箱环境: https://openhome.alipay.com/platform/appDaily.htm?tab=info 开发文档: ht ...
- 服务端支付宝App支付对接笔记
支付宝在2016年12月份开始将以前的App支付改为移动支付,而现在的App支付则是全新的支付,而功能和以前的App支付并没有太大的差别,但申请现在的App支付需要先废除掉以前的移动支付(控制台显示的 ...
- java 支付宝服务端,支付宝app支付服务端的实现-Java版
前言 最近在工作中需要使用支付宝app支付,在初次使用过程中也不可避免的出现了一些问题,那么本次随笔主要是概述支付宝app支付服务端的整个实现过程以及就服务端出现的一些问题做一些总结. 1.准备工作 ...
- VIVO小游戏支付以及服务端php支付流程
VIVO小游戏支付流程如下: 1.前端拉起商品列表 用户登录app后,进入商品购买页面,前端请求app商品列表api接口,获取商品列表信息并展示 2.下单 用户点击'购买'操作,发送给服务端一条当前商 ...
- 手机网页端支付宝支付
手机网页端支付开发文档:https://docs.open.alipay.com/203/105285/ 第一步:进入蚂蚁金服(https://openhome.alipay.com),创建应用,提交 ...
- 支付宝回调地址index.php,支付宝支付成功回调地址怎么不改变当前页面?
手机端支付宝支付成功后 会有一个回调地址"http://pay.xxx.com/channel/alipayWap/return_url.php?is_success=T¬if ...
- 支付宝支付同步回调url中携带参数的两种方法
我的个人博客:逐步前行STEP 1. 如果要传递的参数是my_data,可以先将该参数添加到回调的url上: $return_url = "http://abcdefg.com/return ...
- android支付宝支付成功后调其他界面,支付宝支付成功回调地址怎么不改变当前页面?...
手机端支付宝支付成功后 会有一个回调地址"http://pay.xxx.com/channel/alipayWap/return_url.php?is_success=T¬if ...
最新文章
- 单片机练习-RC-5红外遥控器程序及简单制造DIY PC遥控器
- Python标准库的强大功能的相关介绍
- 简单表单提交php教程,PHP 表单数据提交与接收 超级简单《SSS教程 10》
- stomp 连接错误: Whoops! Lost connection to http://localhost:8080/spring13/stomp 的解决方法
- C语言 int** 二重指针的理解
- 百度SEO最新小某云商城系统源码 免授权V1.61版
- asp.net mvc 发布问题
- 文本编辑器Notepad++使用技巧
- 理解之软件需求说明书
- 阿里副总裁玄难:藏经阁计划首次在阿里应用落地
- COMS门电路的设计及其优化--以异或门为例
- 你知道怎么在solidworks工程图中插入表格吗?
- 想要轻松玩转Markdown?goldmark帮你实现!
- 在 angular6 中自定义 webpack 配置
- LSTM对股票的收益进行预测(Keras实现)
- Java面试通关要点汇总集【终极版】
- 什么是生命周期函数?
- 如何搭建属于自己的一个网站网址-----亲测有效
- 【读书2】【2014】基于MATLAB的雷达信号处理基础(第二版)——多普勒频移(1)
- 解决div比里面包含的img图片高度大的问题