php jsapi支付,支付宝jsapi支付
From 000154b8750aa7d10526197dd1e2931fda839a42 Mon Sep 17 00:00:00 2001
From: dedemao Date: Mon, 18 Jun 2018 13:58:13 +0800
Subject: [PATCH] =?UTF-8?q?jsapi=E6=94=AF=E4=BB=98=EF=BC=88APP=E6=94=AF?=
=?UTF-8?q?=E4=BB=98=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jsapi.php | 242 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 242 insertions(+)
create mode 100644 jsapi.php
diff --git a/jsapi.php b/jsapi.php
new file mode 100644
index 0000000..395c09e
--- /dev/null
+++ b/jsapi.php
@@ -0,0 +1,242 @@
+密钥管理->开放平台密钥,填写添加了电脑网站支付的应用的APPID
+$notifyUrl = 'http://www.xxx.com/alipay/notify.php'; //付款成功后的异步回调地址
+$outTradeNo = uniqid(); //你自己的商品订单号,不能重复
+$payAmount = 0.01; //付款金额,单位:元
+$orderName = '支付测试'; //订单标题
+$signType = 'RSA2';//签名算法类型,支持RSA2和RSA,推荐使用RSA2
+//商户私钥
+$rsaPrivateKey='';
+/*** 配置结束 ***/
+$aliPay = new AlipayService();
+$aliPay->setAppid($appid);
+$aliPay->setNotifyUrl($notifyUrl);
+$aliPay->setRsaPrivateKey($rsaPrivateKey);
+$aliPay->setTotalFee($payAmount);
+$aliPay->setOutTradeNo($outTradeNo);
+$aliPay->setOrderName($orderName);
+$orderStr = $aliPay->getOrderStr();
+?>
+
+
+
+
+
+ 支付宝jsapi支付
+
+
+
+
+
+
+
+
请使用支付宝扫码打开该网页:
+
+
+
点击以下按钮唤起支付宝支付
+点击调起支付宝支付
+
+
+
+
+
+
+
+
+
+
+charset = 'utf8';
+ }
+ public function setAppid($appid)
+ {
+ $this->appId = $appid;
+ }
+ public function setNotifyUrl($notifyUrl)
+ {
+ $this->notifyUrl = $notifyUrl;
+ }
+ public function setRsaPrivateKey($saPrivateKey)
+ {
+ $this->rsaPrivateKey = $saPrivateKey;
+ }
+ public function setTotalFee($payAmount)
+ {
+ $this->totalFee = $payAmount;
+ }
+ public function setOutTradeNo($outTradeNo)
+ {
+ $this->outTradeNo = $outTradeNo;
+ }
+ public function setOrderName($orderName)
+ {
+ $this->orderName = $orderName;
+ }
+ /**
+ * 获取orderStr
+ * @return array
+ */
+ public function getOrderStr()
+ {
+ //请求参数
+ $requestConfigs = array(
+ 'out_trade_no'=>$this->outTradeNo,
+ 'total_amount'=>$this->totalFee, //单位 元
+ 'subject'=>$this->orderName, //订单标题
+ 'product_code'=>'QUICK_MSECURITY_PAY', //销售产品码,商家和支付宝签约的产品码,为固定值QUICK_MSECURITY_PAY
+ 'timeout_express'=>'2h', //该笔订单允许的最晚付款时间,逾期将关闭交易。取值范围:1m~15d。m-分钟,h-小时,d-天,1c-当天(1c-当天的情况下,无论交易何时创建,都在0点关闭)。 该参数数值不接受小数点, 如 1.5h,可转换为 90m。
+// 'store_id'=>'', //商户门店编号。该参数用于请求参数中以区分各门店,非必传项。
+// 'extend_params'=>array(
+// 'sys_service_provider_id'=>'' //系统商编号,该参数作为系统商返佣数据提取的依据,请填写系统商签约协议的PID
+// )
+ );
+ $commonConfigs = array(
+ //公共参数
+ 'app_id' => $this->appId,
+ 'method' => 'alipay.trade.app.pay', //接口名称
+ 'format' => 'JSON',
+ 'charset'=>$this->charset,
+ 'sign_type'=>'RSA2',
+ 'timestamp'=>date('Y-m-d H:i:s'),
+ 'version'=>'1.0',
+ 'notify_url' => $this->notifyUrl,
+ 'biz_content'=>json_encode($requestConfigs),
+ );
+ $commonConfigs["sign"] = $this->generateSign($commonConfigs, $commonConfigs['sign_type']);
+ $result = $this->buildOrderStr($commonConfigs);
+ return $result;
+ }
+ public function generateSign($params, $signType = "RSA") {
+ return $this->sign($this->getSignContent($params), $signType);
+ }
+ protected function sign($data, $signType = "RSA") {
+ $priKey=$this->rsaPrivateKey;
+ $res = "-----BEGIN RSA PRIVATE KEY-----\n" .
+ wordwrap($priKey, 64, "\n", true) .
+ "\n-----END RSA PRIVATE KEY-----";
+ ($res) or die('您使用的私钥格式错误,请检查RSA私钥配置');
+ if ("RSA2" == $signType) {
+ openssl_sign($data, $sign, $res, version_compare(PHP_VERSION,'5.4.0', ' $v) {
+ if (false === $this->checkEmpty($v) && "@" != substr($v, 0, 1)) {
+ // 转换成目标字符集
+ $v = $this->characet($v, $this->charset);
+ if ($i == 0) {
+ $stringToBeSigned .= "$k" . "=" . "$v";
+ } else {
+ $stringToBeSigned .= "&" . "$k" . "=" . "$v";
+ }
+ $i++;
+ }
+ }
+ unset ($k, $v);
+ return $stringToBeSigned;
+ }
+ /**
+ * 转换字符集编码
+ * @param $data
+ * @param $targetCharset
+ * @return string
+ */
+ function characet($data, $targetCharset) {
+ if (!empty($data)) {
+ $fileType = $this->charset;
+ if (strcasecmp($fileType, $targetCharset) != 0) {
+ $data = mb_convert_encoding($data, $targetCharset, $fileType);
+ //$data = iconv($fileType, $targetCharset.'//IGNORE', $data);
+ }
+ }
+ return $data;
+ }
+
+ public function buildOrderStr($data)
+ {
+ return http_build_query($data);
+ }
+}
+// 是否支付宝客户端
+function isInAlipayClient() {
+ if( strpos($_SERVER['HTTP_USER_AGENT'], 'AlipayClient') !== false ) {
+ return true;
+ }
+ return false;
+}
+function getCurrentUrl()
+{
+ $scheme = $_SERVER['HTTPS']=='on' ? 'https://' : 'http://';
+ if($_SERVER['QUERY_STRING']) $_SERVER['QUERY_STRING'] = '?'.$_SERVER['QUERY_STRING'];
+ $baseUrl = urlencode($scheme.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'].$_SERVER['QUERY_STRING']);
+ return $baseUrl;
+}
\ No newline at end of file
php jsapi支付,支付宝jsapi支付相关推荐
- 线上支付支付宝个人支付接入流程详解
一直以为想做线上支付必须要有营业执照,害得我和很多个人开发者一样,绕了很多圈子.尝试过一些第三方的接入(不稳定,担心跑路). 原来支付宝是有个人支付接口的,利用支付宝的"当面付"接 ...
- TP yansongda 支付 支付宝(H5)支付 微信支付(H5)支付
(支付宝H5支付,已经在支付宝弄好商户号) $order = ['out_trade_no' => time(), // 生成订单'total_amount' => '1', 金额'sub ...
- php tp5支付宝app支付,支付宝APP支付 统一下单 php服务端 tp5
{ $data = input('post.'); Loader::import('/alipay/aop/AopClient',EXTEND_PATH); $aop = new \AopClient ...
- 支付--支付宝APP支付
app内集成支付宝支付这块上半年就做完了,一直都比较忙也没时间去整理.马上十一了,最近项目做完空闲时间比较多,想着把之前的坑一填. 先说一下我当时遇到的坑: 一.重要配置参数出错. 这个app项目是在 ...
- vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付
本文仅记录基于vue开发h5项目过程中使用支付宝和微信支付过程中的重点与槽点,仅为前端部分,如有疏漏不正之处,请于文末评论探讨.注意:标红部分灰常重要,仔细阅读官方文档非常重要,耐心非常重要,细心非常 ...
- 微信h5支付和公众号支付、支付宝h5支付
1.微信h5支付: 首先是支付参数的构建,这个需要通过后台进行组装,后台会跟微信进行数据的交互,而你所需要做的是拿到返回的数据,然后传递给微信的JSSDK,由微信的JSSDK进行后续操作,比如说先跳转 ...
- 【支付宝支付】Java实现支付宝APP支付流程
前言 微信登录网页授权与APP授权 微信JSAPI支付 微信APP支付 微信APP和JSAPI退款 支付宝手机网站支付 支付宝APP支付 支付宝退款 以上我都放到个人公众号,搜一搜:JAVA大贼船,文 ...
- aliPay支付宝APP支付操作流程
[TOC] aliPay支付宝APP支付操作流程 1 注册帐号&官方文档解析 在支付宝商家中心注册帐号,已经拥有支付宝帐号的用户,直接登录商家中心即可(同一个支付宝帐号,可以既是买家也是商家) ...
- java实现支付宝接口---支付
java实现实现支付宝接口 蚂蚁沙箱环境 (Beta) 是协助开发者进行接口功能开发及主要功能联调的辅助环境.可以模拟实现支付宝的支付功能. 接下的实现技术是运用到springmvc注解方法实现的支付 ...
最新文章
- Docker基本原理概述
- [19/04/02-星期二] IO技术_字符流分类总结(含字符转换流InputStreamReader/ OutputStreamWriter,实现字节转字符)...
- 大洗牌中的中国服务业:这个冬天远比你想象中寒冷
- 用R语言分析我的fitbit计步数据
- OpenCV android sdk配置OpenCV android NDK开发实例
- scandall pro找不到扫描仪_吉林机箱风扇灯条找哪家
- ofo 辟谣“月盈利百万”;苹果回应向腾讯传输数据;Python 3.8.0 发布 | 极客头条...
- 易宝典——玩转O365中的EXO服务 之四十二 导出就地电子数据展示搜索结果
- 50道经典MySQL练习题(含解答)
- android studio必须装c盘吗,Android Studio不占用c盘配置
- 如何将PDF的单页页面分割成多个页面,如何将PDF页面的四周空白部分裁剪掉
- 电脑常用快捷键与指示灯
- 使用Node.js手撸一个建静态Web服务器,内部CV指南
- pdf压缩工具怎么用?如何压缩pdf
- 成绩忽好忽坏的孩子,往往缺乏良好的学习习惯--一语中的
- 大学计算机阶段考试不及格,大学考试不及格不能毕业吗?
- 求阶乘的和(C++)
- 爬取百度贴吧实战,python教你如何获取
- 计网——14数字传输技术
- 2019年快来了,送给每位程序员一份新年计划清单
热门文章
- 计算机领域的创新点在哪里,关于计算机设计的创新点
- fastadmin实现弹窗
- zsh: corrupt history file /home/floodlight/.zsh_history
- Python selenium插件使用 可刷浏览量
- nahimicsvc64禁用
- 0916文件上传-基础及过滤方式
- stetho 调试数据库_stetho是适用于android应用程序的最佳调试工具
- 让你的英语发音变得好听(转)
- Linux下静态库与动态库的引用关系深入分析
- 一周涨粉2686万,刘畊宏爆火,这2点自媒体运营技巧值得学习