支付宝2017年新版本支付基本业务逻辑算法

服务端生成字符串 交给客户端,express

客户端调用接口,将这段字符串str传过去 调用起支付界面。json

其中字符串str包含了全部请求参数,以及请求参数和用户本身生成的私钥进行加密处理生成sign服务器

(全部请求参数按照键值顺序排序。而后以rsa2加密手段和用户生成的私钥2048的那种进行加密)app

下面上代码。找到支付宝skd里的 AopClient.php文件 填上以下配置异步

public $appId = "20170925123213213"; //记得是appid 不是之前的pid

//私钥值 2048的那种私钥 用户本身生成的

public $rsaPrivateKey="MIIEugIBADANBgkqhkiG9w0BAQEFAASCBKQwggSgAgEAAoIBAQCCeAyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxNHXwZJYxCjy6QVgsw6uyz0IQx0Hq5NAn99jk5OfYVpfnyFOZwqF4xwG9LA9CAK/BYUSc/yGN2I9e/2hxkIcKpwBUmdecCQjW7L0hXXVoOP4d9I5EUNAvlwUYWkxZNlblZ3akir17JCcRyS99HpaU37RP+Tu+RqPk/ZtJh4KlT5uS0Y760bBUvSLMitFcVMJ+Gnt7GbLqRNAoGAO7NL+MUFu64Q+s+g1z9kwq5S1CbI3YbUfSDP1Uq3PJ4cEiwPB93fQew3hyQ9NKs+QkTNah90/n8zlhypIUsrUAsR/uBjbgs39jGGxfFwPWvjHyQiT6z2H9YCcgOHi2yWZchJIbTF0RP6qeJyZV02FOauvyFEcFxBA+NukI1wcCE=";//支付宝公钥(非生成私钥对应的那个公钥,生成的公钥叫应用公钥。上传到支付宝后台后会生成支付公钥)

public $alipayrsaPublicKey="MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqx1N29eEAkv+InFjskPXo0CsJEidvm6dTLA13TXWfj8OvoMVag5Cim7byZCbI4JpGBRgNP7OnTeTsYesPx8QBBxxxxxxxxxxxxxfOW8i9RND48p0DxZ1SkGvQwnUQ8eJcy0CePH7SzQIDAQAB";//签名类型

public $signType = "RSA2";

服务端生成字符串str网站

require_once "/core/public/plugin/alipay20171012/AopSdk.php";$c = newAopClient;$request = newAlipayTradeAppPayRequest();/**业务参数**/

//$content['body'] = "Iphone6 16G"; //对一笔交易的具体描述信息。若是是多种商品,请将商品描述字符串累加传给body。非必填参数

$content['subject'] = "给用户充值10000钻石";//商品的标题/交易标题/订单标题/订单关键字等。

$content['out_trade_no'] = $out_trade_no;//商户网站惟一订单号

// $content['timeout_express'] = "30m";//该笔订单容许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的状况下,不管交易什么时候建立,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。注:若为空,则默认为15d。

$content['total_amount'] =number_format($money,2,".","");//订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000],

$content['product_code'] = "QUICK_MSECURITY_PAY";//销售产品码,商家和支付宝签约的产品码,为固定值QUICK_MSECURITY_PAY

// $content['goods_type'] = "0";// 商品主类型:0—虚拟类商品,1—实物类商品注:虚拟类商品不支持使用花呗渠道 非必填参数

$con = json_encode($content);//$content是biz_content的值,将之转化成字符串

/**业务参数**/

/**公共参数**/

$param = array();$param['app_id'] = $c->appId;//支付宝分配给开发者的应用ID

$param['method'] = 'alipay.trade.app.pay';//接口名称

$param['charset'] = 'utf-8';//请求使用的编码格式

$param['sign_type'] = 'RSA2';//商户生成签名字符串所使用的签名算法类型

$param['timestamp'] = date("Y-m-d H:i:s");//发送请求的时间,格式"yyyy-MM-dd HH:mm:ss"

$param['version'] = '1.0';//调用的接口版本,固定为:1.0

$param['notify_url'] = WEBHOST.'/pay/alinotify';//支付宝服务器主动通知地址

$param['biz_content'] = $con;//业务请求参数的集合,长度不限,json格式

/**公共参数**/

//生成签名

$paramStr = $c->getSignContent($param);$sign = $c->alonersaSign($paramStr,$c->rsaPrivateKey,'RSA2');$param['sign'] = $sign;$str = $c->getSignContentUrlencode($param);//返回给客户端

异步通知处理ui

异步通知主要就是 验证签名是否合法。编码

代码很简单

require_once dirname(dirname(dirname(__FILE__)))."/core/public/plugin/alipay20171012/AopSdk.php";$c = newAopClient;$result = $c->rsaCheckV1($_POST,$c->alipayrsaPublicKey,$_POST['sign_type']);

这里若是校验成功 $result 返回true 注意必定校验的公钥是支付宝公钥,非本身生成的那个公钥

校验成功后

一、商户须要验证该通知数据中的out_trade_no是否为商户系统中建立的订单号;二、判断total_amount是否确实为该订单的实际金额(即商户订单建立时的金额);三、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据对应的操做方(有的时候,一个商户可能有多个seller_id/seller_email);四、验证app_id是否为该商户自己。上述一、二、三、4有任何一个验证不经过,则代表同步校验结果是无效的,只有所有验证经过后,才能够认定买家付款成功。

这些都简单。没什么好说的。 后面就本身业务处理上的了

支付宝app支付回调php,php 支付宝新版本app支付以及回调相关推荐

  1. 支付宝sdk java对接_java后台支付宝app支付调用sdk进行支付

    支付宝sdk 创建一个支付宝的util类 public class AlipayUtil { public static final String APP_ID = "20160911004 ...

  2. 支付宝:APP支付接口2.0(alipay.trade.app.pay)

    本章是跟支付宝进行签约对接商户服务端(也就是自行开发的JAVA后端),做此记录. 文献基本都来源于支付宝,详情请看支付宝官方文档:APP支付 目录 系统交互图 服务端demo 配置参数 获取APPID ...

  3. 自用的把自己微信和支付宝收款信息回调到服务器的安卓app

    给大家分享一个自用的把自己微信和支付宝收款信息回调到服务器的安卓app app界面就这么这么多东西,只需要设置一下回调地址就搞定了,傻瓜式操作!!! 下边上代码: <?php namespace ...

  4. 基于spring-boot+uni-app实现app支付功能(微信/支付宝)服务端

    基于spring-boot+uni-app实现app支付功能(微信/支付宝)服务端 支付宝支付 1 准备工作 申请支付能力 接口加签方式 2代码 依赖 支付宝支付配置类 支付宝控制层 异步通知 微信支 ...

  5. java app支付_【支付宝支付】Java实现支付宝APP支付流程

    前言 官方文档 开放能力文档: APP支付接口API 开发准备工作 后端代码实现 参数配置 application.yml # 支付宝相关 ALIPAY: # 应用ID APP_ID: # 应用私钥 ...

  6. 支付宝当面付扫码支付支付后不回调_对接支付宝当面付进行电脑网站和手机网站收款教程...

    对接支付宝当面付进行电脑网站和手机网站收款教程 第一步:风铃自动卡密发卡平台前端搭建 第二步:对接支付宝当面付进行电脑网站和手机网站收款 项目地址:https://github.com/Tai7sy/ ...

  7. uniapp开发app项目对接微信、支付宝支付

    1.在manifest.json - App模块权限选择 中勾选 payment(支付) 2.在 manifest.json - App SDK配置 中,勾选需要的支付平台 async submitF ...

  8. 支付宝支付——统一wap和支付宝钱包回调

    一.前言 用过支付宝支付的都知道,支付宝支付有两个回调,一个是wap支付回调,一个是支付宝钱包回调,简单来说就是,一个是有支付宝app的回调,一个是没有安装支付宝的回调 /*** 处理钱包或者独立快捷 ...

  9. 【支付宝支付】Java实现支付宝APP支付流程

    前言 微信登录网页授权与APP授权 微信JSAPI支付 微信APP支付 微信APP和JSAPI退款 支付宝手机网站支付 支付宝APP支付 支付宝退款 以上我都放到个人公众号,搜一搜:JAVA大贼船,文 ...

  10. 单个APP接入多个微信支付宝支付的一种解决方案

    背景 最近在对接微信支付宝支付的时候出现了一个需求,由于我们公司在不同的地区有分公司,为了实现财务对账方便,不同公司的客户需要打款到相应的公司的账户,也就是要实现接口分账,一听到这个需求,我一脸懵逼, ...

最新文章

  1. C语言每日一题之No.9
  2. 深度学习在CTR预估中的应用 | CTR深度模型大盘点
  3. c++11 Type Alias
  4. python笔记之序列(set的基本使用和常用操作)
  5. gwt格式_GWT HTTP请求替代方案
  6. 为什么年轻人挣得很多还是穷?北上广深挑战指数报告~
  7. 作为一个女程序员,无奈!
  8. 《spring-boot学习》-07-spring data jpa
  9. DNS无法解析IP_通过YouTube的封杀窥视DNS原理
  10. linux php zend load,在Linux系统中为PHP5.3安装Zend Guard Loader
  11. 卷积神经网络(TextCNN)在句子分类上的实现
  12. oppok3如何刷机_OPPO K3(6GB/64GB/全网通)手机密码忘记怎么刷机?
  13. 马哥linux视频笔记,马哥linux学习笔记(示例代码)
  14. echar生成雷达图
  15. Thoughtworks笔试作业
  16. 2023郑州大学计算机考研信息汇总
  17. P1713 麦当劳叔叔的难题(90分)
  18. Inflate使用小结
  19. 阿里云服务器遭到DDOS攻击怎么解决
  20. MathType中输入破折号的教程

热门文章

  1. mysql 查询自取一条_数据库常用命令个人汇总(自用,有爱自取)
  2. 项目1- C/C++语言中函数参数传递的三种方式
  3. pg修改表的owner
  4. 360度相机(全景图片)中的卷积(一):Equirectangular Convolutions
  5. 作图:plt.scatter() “x and y must be the same size“
  6. php 多版本开发环境,「开发环境」让 Valet 支持多个本地项目使用不同 PHP 版本...
  7. Tensorflow2.2.0-cpu安装教程
  8. 地图着色问题课程设计
  9. Qt:63---QStyle类设置窗口样式(QStyleFactory、QApplication)
  10. 在前端培训期间做的笔记,Js全栈之路