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 * 说明: * 以下代码只是为了 ...
随机推荐
- Spark记录-Scala程序例子(函数/List/match/option/泛型/隐式转换)
object func { def main(args:Array[String]):Unit={ //函数赋值给变量时, 必须在函数后面加上空格和下划线. def sayHello(name: St ...
- tomcat中配置servlet.xml的JNDI或JDBC连接数据库【原】
tomcat中配置servlet.xml的JNDI或JDBC连接数据库 一. JNDI 1. tomcat环境 找到X:\xxx\......\apache-tomcat-6.0.39\conf\se ...
- FASTREPORT COM/ActiveX报表如何保存到C++项目中?
可以的. VC++ : ... IStream * pStream;CreateStreamOnHGlobal(NULL, true, &pStream);pStream->AddRef ...
- 19. SpringBoot_web开发-使用外部Servlet容器&JSP支持
還沒有web.xml,生 配置tomcat 嵌入式Servlet容器:应用打成可执行的jar 优点:简单.便携: 缺点:默认不支持JSP.优化定制比较复杂 使用定制器[ServerPropertie ...
- 第三次实验计算分段函数 第四次计算分段函数和循环NEW 第五次分支+循环加强版 实验报告
一.实验题目,设计思路,实现方法 第四次分支+循环 加强版 (2-2计算个人所得税,2-7 装睡,2-8计算天数) 设计思路:2-2 用if-else的语句,与计算分段函数的题类似的做法:2-7 运用 ...
- Java SE之基本程序设计结构
概述: 0.注释 1.基本数据类型(有且仅有8个): 1.1 整型:int,short,long,byte(表示一个字节,[-128,127]) 1.2 ...
- 第16月第9天 opengl glCltDispatchTable
1.glCltDispatchTable typedef struct _GLTEBINFO { // glCltDispatchTable must be the first field for t ...
- mysql 案例~关于pt-osc工具的用途
简介:今天咱们聊聊PT-OSC的东东一 简单介绍 1 标准组合 pt-online-schema-change --user= --password= --host= D=,t= --sock= ...
- [转]xargs命令详解,xargs与管道的区别
为什么要用xargs,问题的来源 在工作中经常会接触到xargs命令,特别是在别人写的脚本里面也经常会遇到,但是却很容易与管道搞混淆,本篇会详细讲解到底什么是xargs命令,为什么要用xargs命令以 ...
- Docker容器数据卷
⒈Docker容器中数据如何持久化? ①通过commit命令使容器反向为镜像 ②以容器数据卷的方式将数据抽离 ⒉容器数据卷的作用? ①容器数据的持久化 ②容器间继承.共享数据 ⒊能干嘛? 卷就是目录或 ...