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 * 说明: * 以下代码只是为了 ...
随机推荐
- 机器学习课程-第8周-降维(Dimensionality Reduction)—主成分分析(PCA)
1. 动机一:数据压缩 第二种类型的 无监督学习问题,称为 降维.有几个不同的的原因使你可能想要做降维.一是数据压缩,数据压缩不仅允许我们压缩数据,因而使用较少的计算机内存或磁盘空间,但它也让我们加快 ...
- MVC 部分视图:Partial() 、RenderPartial() 、 Action() 、RenderAction() 、 RenderPage() 区别
在视图里有多种方法可以 加载部分视图,包括: Partial() Action() RenderPartial() RenderAction() RenderPage() 方法. 以下是这些方 ...
- Dom4j工具类源码解析
话不多说,上源码: package com.changeyd.utils;import java.io.File;import java.io.FileNotFoundException;import ...
- buildroot构建项目(一)---buildroot介绍
1.1 什么是buildroot Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和编译Li ...
- 51nod1222 最小公倍数计数
题目来源: Project Euler 基准时间限制:6 秒 空间限制:131072 KB 分值: 640 定义F(n)表示最小公倍数为n的二元组的数量. 即:如果存在两个数(二元组)X,Y(X & ...
- 在window系统下安装Sass
1.Ruby下载 因为Sass依赖于Ruby环境,所以应先在window系统下安装Ruby,Ruby安装包下载链接:http://rubyinstaller.org/downloads/ 2.Ruby ...
- 12章 搜索框架ElasticSearch介绍和整合SpringBoot 4节课
1.搜索引擎知识和搜索框架elasticsearch基本介绍 简介:通过京东电商 介绍什么是搜索引擎,和开源搜索框架ElasticSearch6.x新特性介绍 前言:介绍ES的主要特点和使用场 ...
- Struts2自定义拦截器处理全局异常
今天在整理之前的项目的时候想着有的action层没有做异常处理,于是想着自定义拦截器处理一下未拦截的异常. 代码: package cn.xm.exam.action.safeHat; import ...
- caffe添加自己编写的Python层
由于Python的灵活性,我们在caffe中添加自己定义的层时使用python层会更加方便,开发速速也会比C++更快,现在我就在这儿简单说一下如何在caffe中添加自定义的python层(使用的原网络 ...
- 从Linux内核中获取真随机数【转】
转自:http://www.cnblogs.com/bigship/archive/2010/04/04/1704228.html 内核随机数产生器 Linux内核实现了一个随机数产生器,从理论上说这 ...