PHP服务端支付宝支付及回调
支付宝支付
(由app端自行调起支付宝/微信)

1 <?php
2
3 define('IN_ECS', true);
4
5 /*App支付 PHP服务端*/
6 /*引入支付宝PHP SDK*/
7 header("Content-type:text/html;charset=utf-8;");
8 require_once('../alipay-sdk-PHP/aop/request/AlipayTradeAppPayRequest.php');
9 require_once('../alipay-sdk-PHP/aop/AopClient.php');
10
11
12 $user_id = isset($_REQUEST['user_id']) ? trim($_REQUEST['user_id']) : 0;
13 $money = isset($_REQUEST['amount']) ? trim($_REQUEST['amount']) : 0;
14
15 if($user_id == 0 || $money ==0){
16 $result = array('code' => 1,'data'=>'缺少参数' );
17 die(json_encode($result));
18 }
19
20
21 $aop = new AopClient;
22 $aop->gatewayUrl = "https://openapi.alipay.com/gateway.do";
23 $aop->appId = "appid";
24 $aop->format = "json";
25 $aop->charset = "utf-8";
26 $aop->signType = "RSA2";
27 $aop->rsaPrivateKey = '开发者私钥';
28
29 $aop->alipayrsaPublicKey = '支付宝公钥';
30
31
32
33 //实例化具体API对应的request类,类名称和接口名称对应,当前调用接口名称:alipay.trade.app.pay
34
35 $request = new AlipayTradeAppPayRequest();
36 //SDK已经封装掉了公共参数,这里只需要传入业务参数
37 $trade_no = chongzhi_sn();
38 //入库信息
39 require(dirname(__FILE__) . '../../includes/init.php');
40 include_once(ROOT_PATH .'includes/lib_clips.php');
41
42 $user_m = get_user_info($user_id);
43
44 $dbcontent = array(
45 'user_id' => $user_id,
46 'amount' => $money,
47 'user_name' => $user_m['user_name'],
48 'payment' => "支付宝",
49 'cz_sn' => $trade_no,
50 'add_time' => gmtime()
51 );
52 //传参信息
53 $bizcontent = array(
54 'body' =>(string)$trade_no,
55 'subject' =>'充值',
56 'total_amount' => $money,
57 'out_trade_no' => (string)$trade_no,
58 'product_code' => 'QUICK_MSECURITY_PAY',
59 'timeout_express'=> '30m'
60 );
61
62 $bizcontent = json_encode($bizcontent);
63 $request->setNotifyUrl("支付回调地址");
64 $request->setBizContent($bizcontent);
65 //这里和普通的接口调用不同,使用的是sdkExecute
66 $response = $aop->sdkExecute($request);
67 //htmlspecialchars是为了输出到页面时防止被浏览器将关键参数html转义,实际打印到日志以及http传输不会有这个问题
68 //echo htmlspecialchars($response);//就是orderString 可以直接给客户端请求,无需再做处理。
69
70 if($response){
71 if($GLOBALS['db']->autoExecute($ecs->table('user_chongzhi'), $dbcontent, 'INSERT'))
72 {
73 $result = array('code'=>0,'data'=>$response);
74 }else{
75 $result = array('code'=>1,'data'=>'意外出错,请联系客服。');
76 }
77 die(json_encode($result));
78 }
79
80 function chongzhi_sn()
81 {
82 /* 选择一个随机的方案 */
83 mt_srand((double) microtime() * 1000000);
84 return date('Ymd') . str_pad(mt_rand(1, 99999), 5, '0', STR_PAD_LEFT);
85 }
86
87 ?>

回调

<?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服务端支付宝支付及回调的更多相关文章
- day114:MoFang:基于支付宝沙箱测试环境完成创建充值订单接口&服务端处理支付结果的同步通知和异步通知
目录 1.基于支付宝提供的沙箱测试环境开发支付接口 1.后端提供创建充值订单接口 2.前端调用AlipayPlus发起支付 3.注意:自定义APPLoader完成接下来的开发 4.下载支付宝沙箱钱包A ...
- 支付宝PC端单笔支付同步回调session失效问题
一次调用支付宝PC场景下单笔支付之后同步回调遇到的session失效问题记录 问题描述: 调用支付宝接口:alipay.trade.page.pay,该接口请求参数中有两个返回地址需要设置,retur ...
- 电脑端支付宝支付 -前端获取支付宝返回的form 以及submit 调用支付扫码页面
前端调取支付宝支付接口(后台进行封装,没有直接调取支付宝接口),调用返回的数据中,将会有一串的form表单数据返回,我们需要将此表单在当前调用页面submit下,以跳转到支付扫码页: 支付宝返回的fo ...
- PHP APP端支付宝支付
应业务需求,做了支付宝支付和微信支付,今天分享一下手机端app支付宝支付对接流程,实际开发过程是前后端分离,前端调用后端API接口,实现功能返回数据,我所用的跨挤啊为TP5,大致可以分为四步: 1.在 ...
- 微信端支付宝支付,iframe改造,解决微信中无法使用支付宝付款和弹出“长按地址在浏览器中打开”
微信对支付宝的链接屏蔽了, https://mapi.alipay.com/gateway.do?_input_charset=utf-8¬ify_url=http%3A%2F%2Fzh ...
- 支付宝支付后回调通知中responseTxt=true isSign=False可能的问题
在做支付宝的二维码扫码支付功能,生成二维码成功,扫描后也能付款,付款后也能回调通知到我的页面,但是验证签名的时候出错,找了好久终于找到是什么原因: 引用 1. 用的RSA签名验证,默认密钥纯字符,并不 ...
- DELPHI移动端支付宝支付
Delphi XE7 Android 应用接入支付宝SDK的方法 1 应用场景和准备工作: 采用XE系列开发的android apps. apps中需要集成支付宝的支付能力. 支付到指定的商 ...
- Ali OSS 服务端签名并设置回调,客户端上传文件
一.最近做阿里云oss文件上传开发,一点收获分享给大家,帮助大家绕过一些坑.关于阿里云oss服务的介绍,我这里不做赘述了,可以查看阿里云OSS开发api文档. 在这里我主要介绍下,文件上传流程比较复杂 ...
- ecshop移动端支付宝支付对接
初始页,提交基本信息到api页面, <?php /* * * 功能:支付宝手机网站支付接口接口调试入口页面 * 版本:3.4 * 修改日期:2016-03-08 * 说明: * 以下代码只是为了 ...
随机推荐
- javascript 小清新颜色翻页效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- UVA 10382 Watering Grass(区间覆盖)
n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each spri ...
- postgresql 常用速查
中文资料 中文资料 /**gp中的基本sql语法**/ --删除表 drop table testtb; --创建表 CREATE TABLE testtb ( id integer, "n ...
- prompt更改MySQL登陆后的提示符
临时生效 mysql> prompt \u@standby \r:\m:\s > PROMPT set to '\u@standby \r:\m:\s >' root@standby ...
- 旅行商问题(TSP)、最长路径问题与哈密尔顿回路之间的联系(归约)
一,旅行商问题与H回路的联系(H回路 定义为 哈密尔顿回路) 旅行商问题是希望售货员恰好访问每个城市一次,最终回到起始城市所用的费用最低,也即判断图中是否存在一个费用至多为K的回路.(K相当于图中顶点 ...
- datetimepicker bootstrap的时间插件显示位置问题及其他配置
位置问题: 在bootstrap中用 datetimepicker 时默认是在输入框下面弹出的, 但是遇到输入框在屏幕最下面时,日期选择框会有一部分在屏幕下面,显示不了,因此需要能够从上面弹出. 可以 ...
- luogu 1026 统计单词个数
此题 字符串匹配+dp 确实我的kmp,哈希需要练一练了,忘干净可咋办 补救用下string,十分方便 e.g: 1.询问a[i]是否是x子串,可以截取并判断前缀 x为截取串 x.find(a[i]) ...
- Oracle——环比增长率
首先,了解什么是:环比增长率? 环比增长率=(本期数-上期数)÷上期数×100% 如:2014年2月的工资为:5000,2014年1月的工资为4000,则2月份的环比增长率为: (5000-4000) ...
- js委托事件和代理事件
转载出处:https://www.cnblogs.com/liugang-vip/p/5616484.html js中的事件委托或是事件代理详解 起因: 1.这是前端面试的经典题型,要去找工作的小伙伴 ...
- 让 IE9 以下的浏览器支持 Media Queries
1. 如何让 IE9 以下的浏览器支持 css3 的media query 需要用到的 min-width/max-width 属性 css3 的媒体查询 IE 浏览器的支持程度是从 IE9开始支持, ...