thinkphp整合系列之支付宝RSA加密方式
上篇博客写的是MD5加密方式;thinkphp整合系列之支付宝MD5加密方式扫码支付http://baijunyao.com/article/75

但是呢;移动支付是没有MD5加密的;只能是RSA加密;

long long ago;支付宝官方是没有给RSA加密的demo的;

这次为了写博客整理代码的时候;竟然发现了官方给了一份demo;

但是;竟然把MD5和RSA分成了2个SDK;

好吧;这里给出的是二合一版的SDK;切换加密方式只需在配置项中设置下即可;

示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

一:导入sdk

/ThinkPHP/Library/Vendor/Alipay

这个sdk和上篇文章中的MD5加密方式的sdk是一套;

二:配置项

/Application/Common/Conf/config.php

    'ALIPAY_CONFIG'          => array(
'partner' => '', // partner 从支付宝商户版个人中心获取
'seller_email' => '', // email 从支付宝商户版个人中心获取
'key' => '', // key 从支付宝商户版个人中心获取
'sign_type' => strtoupper(trim('MD5')), // 可选md5 和 RSA
'input_charset' => 'utf-8', // 编码 (固定值不用改)
'transport' => 'http', // 协议 (固定值不用改)
'cacert' => VENDOR_PATH.'Alipay/cacert.pem', // cacert.pem存放的位置 (固定值不用改)
'notify_url' => 'http://baijunyao.com/Api/Alipay/alipay_notify', // 异步接收支付状态通知的链接
'return_url' => 'http://baijunyao.com/Api/Alipay/alipay_return', // 页面跳转 同步通知 页面路径 支付宝处理完请求后,当前页面自 动跳转到商户网站里指定页面的 http 路径。 (扫码支付专用)
'show_url' => 'http://baijunyao.com/User/Order/index', // 商品展示网址,收银台页面上,商品展示的超链接。 (扫码支付专用)
'private_key_path' => '', //移动端生成的私有key文件存放于服务器的 绝对路径 如果为MD5加密方式;此项可为空 (移动支付专用)
'public_key_path' => '', //移动端生成的公共key文件存放于服务器的 绝对路径 如果为MD5加密方式;此项可为空 (移动支付专用)
),

既然是RSA加密方式;那主要就是来接收移动支付支付成功后的支付结果了;

那么就不需要管return_url、show_url这两个参数了;

RSA私钥及公钥生成方式在这:https://doc.open.alipay.com/doc2/detail?treeId=58&articleId=103242&docType=1

需要强调的是注释中说的;路径要是php可以访问的绝对路径;

三:接收异步通知

我们是需要给移动端开发人员一个接收支付结果通知的url既notify_url;

移动端支付成功后;支付宝的服务器会向我们指定的notify_url发送post通知;

当判断支付成功后;就更改订单状态;

/Application/Api/Controller/AlipayController.class.php

    /**
* notify_url接收页面
*/
public function alipay_notify(){
// 引入支付宝
vendor('Alipay.AlipayNotify','','.class.php');
$config=$config=C('ALIPAY_CONFIG');
$alipayNotify = new \AlipayNotify($config);
// 验证支付数据
$verify_result = $alipayNotify->verifyNotify();
if($verify_result) {
echo "success";
// 下面写验证通过的逻辑 比如说更改订单状态等等 $_POST['out_trade_no'] 为订单号; }else {
echo "fail";
}
}

ok;到这里;支付宝的两种加密方式就整合完成了;

thinkphp整合系列之支付宝RSA加密方式的更多相关文章

  1. ThinkPHP3.2 整合支付宝RSA加密方式

    RSA核心加密验证算法 <?php /** * RSA签名 * @param $data 待签名数据 * @param $private_key 商户私钥字符串 * return 签名结果 */ ...

  2. IOS RSA 加密方式

    采用RSA加密方式,主要是生成公钥和私钥,公钥用来加密,私钥用来解密,至于其中如何实现的,网上有很多原理. 参见如下: https://github.com/jslim89/RSA-objc PS: ...

  3. thinkphp整合系列之极验滑动验证码

    对于建站的筒子们来说:垃圾广告真是让人深恶痛绝:为了清净:搞个难以识别的验证码吧:又被用户各种吐槽:直到后来出现了极验这个滑动的验证码:这真是一个体验好安全高的方案:官网:http://www.gee ...

  4. thinkphp整合系列之phpexcel生成生成excel文件

    在后台管理中会经常需要将数据生成excel表格的: php生成excel有两种方案: 一种是通过phpexcel生成xls格式的表格文件: 另一种则直接通过逗号换行生成csv格式的表格文件: 这里先讲 ...

  5. thinkphp整合系列之微信公众号支付

    <?phperror_reporting(E_ALL);ini_set('display_errors', '1');// 定义时区ini_set('date.timezone','Asia/S ...

  6. 使用RSA加密方式加密文件

    链接:GITHUB 使用RSA对流进行加密并保存到文件中 缺点:速度非常的慢,加密大文件就等着吧 环境 VS2017 + C# 7.0 + .net framwork 4.7.2

  7. thinkphp整合系列之极验滑动验证码geetest

    给一个央企做官网,登录模块用的thinkphp验证码类.但是2019-6-10到12号,国家要求央企检验官网漏洞,防止黑客攻击,正直贸易战激烈升级时期,所以各事业单位很重视官网安全性,于是乎集团总部就 ...

  8. 逆向番茄社区app的rsa加密方式

    Parse RSA public and private key pair from string in Java 逆向某APP,发现其大部分配置文件都是加密的 .所以逆向算法并解密 RSA和AES密 ...

  9. thinkphp整合系列之短信验证码、订单通知

    现在这个短信通知泛滥的年代:应用如果没有个短信注册:你都不敢说你是搞开发的: 这个验证码搞起来是不难的:但是如果刚接触也是有点不知从哪下手的迷茫: 先讲下概念: 要想发送验证码:需要至少三项:appi ...

随机推荐

  1. 在mac中用终端来运行.c文件

    第一步:打开终端,位置在lauchpad中去找搜索. 第二步:建一个.c文件. 第三步: 在终端输入.c路径.用cd命令 第五步:cc -c +tab键.生成.O文件 第六步:cc +tab键.生成. ...

  2. wamp中的httpd.conf文件设置

    ServerName localhost 缺省情况下,并不需要指定这个ServerName参数,服务器将自动通过名字解析过程来获得自己的名字,但如果服务器的名字解析有问题(通常为反向解析不正确),或者 ...

  3. bzoj 1089 [SCOI2003]严格n元树(DP+高精度)

    1089: [SCOI2003]严格n元树 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 1250  Solved: 621[Submit][Statu ...

  4. A Mini Locomotive(动态规划 01)

     /*  题意:选出3个连续的 数的个数  为K的区间,使他们的和最大 分析: dp[j][i]=max(dp[j-k][i-1]+value[j],dp[j-1][i]);   dp[j][i]:从 ...

  5. SRM 504(2-1000pt)

    DIV2 1000pt 题意:对于一个n*m的矩阵,每个格子都有一个颜色B或者W.对矩阵A执行以下程序后变成矩阵B.给出矩阵B,求A.(若有多种情况,输出字典序最小的).(n,m <= 16) ...

  6. Double与BigDecimal 比较

    1] 精确的浮点运算: 在Java里面,有时候为了保证数值的准确性需要精确的数据,先提供一个例子就可以发现问题了: public class FloatNumberTester { public st ...

  7. angularJs $injector

    一 angularJS中几种注入方式 Spring中使用构造注入或者设值注入的方式,还需要做一些额外的操作,但是angular中只需要在需要的地方声明一下即可,类似模块的引用,因此十分方便. angu ...

  8. Spring Boot 入门概念介绍

    使用spring-boot快速开发spring应用 转 http://itindex.net/detail/49108-spring-boot-%E5%BC%80%E5%8F%91 spring多年以 ...

  9. 实现O(1)时间复杂度带有min和max 函数的栈

    仅仅是演示实现.不考虑栈使用的数据结构是vector 还是其它容器. 代码例如以下 #include <iostream> #include <vector> using na ...

  10. 再回首,Java温故知新(六):Java基础之变量

    变量在所有的编程语言中都有,属于最最基础的部分,学习这部分基本不分语言,变量可分为成员变量和局部变量 Java中变量的声明格式如下,修饰符如果不加,默认是default,关于修饰符,我们会在后续讲到, ...