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支付相关推荐

  1. 线上支付支付宝个人支付接入流程详解

    一直以为想做线上支付必须要有营业执照,害得我和很多个人开发者一样,绕了很多圈子.尝试过一些第三方的接入(不稳定,担心跑路). 原来支付宝是有个人支付接口的,利用支付宝的"当面付"接 ...

  2. TP yansongda 支付 支付宝(H5)支付 微信支付(H5)支付

    (支付宝H5支付,已经在支付宝弄好商户号) $order = ['out_trade_no' => time(), // 生成订单'total_amount' => '1', 金额'sub ...

  3. php tp5支付宝app支付,支付宝APP支付 统一下单 php服务端 tp5

    { $data = input('post.'); Loader::import('/alipay/aop/AopClient',EXTEND_PATH); $aop = new \AopClient ...

  4. 支付--支付宝APP支付

    app内集成支付宝支付这块上半年就做完了,一直都比较忙也没时间去整理.马上十一了,最近项目做完空闲时间比较多,想着把之前的坑一填. 先说一下我当时遇到的坑: 一.重要配置参数出错. 这个app项目是在 ...

  5. vue 微信公众号支付接口_基于vue的h5项目之支付宝支付与微信支付

    本文仅记录基于vue开发h5项目过程中使用支付宝和微信支付过程中的重点与槽点,仅为前端部分,如有疏漏不正之处,请于文末评论探讨.注意:标红部分灰常重要,仔细阅读官方文档非常重要,耐心非常重要,细心非常 ...

  6. 微信h5支付和公众号支付、支付宝h5支付

    1.微信h5支付: 首先是支付参数的构建,这个需要通过后台进行组装,后台会跟微信进行数据的交互,而你所需要做的是拿到返回的数据,然后传递给微信的JSSDK,由微信的JSSDK进行后续操作,比如说先跳转 ...

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

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

  8. aliPay支付宝APP支付操作流程

    [TOC] aliPay支付宝APP支付操作流程 1 注册帐号&官方文档解析 在支付宝商家中心注册帐号,已经拥有支付宝帐号的用户,直接登录商家中心即可(同一个支付宝帐号,可以既是买家也是商家) ...

  9. java实现支付宝接口---支付

    java实现实现支付宝接口 蚂蚁沙箱环境 (Beta) 是协助开发者进行接口功能开发及主要功能联调的辅助环境.可以模拟实现支付宝的支付功能. 接下的实现技术是运用到springmvc注解方法实现的支付 ...

最新文章

  1. Docker基本原理概述
  2. [19/04/02-星期二] IO技术_字符流分类总结(含字符转换流InputStreamReader/ OutputStreamWriter,实现字节转字符)...
  3. 大洗牌中的中国服务业:这个冬天远比你想象中寒冷
  4. 用R语言分析我的fitbit计步数据
  5. OpenCV android sdk配置OpenCV android NDK开发实例
  6. scandall pro找不到扫描仪_吉林机箱风扇灯条找哪家
  7. ofo 辟谣“月盈利百万”;苹果回应向腾讯传输数据;Python 3.8.0 发布 | 极客头条...
  8. 易宝典——玩转O365中的EXO服务 之四十二 导出就地电子数据展示搜索结果
  9. 50道经典MySQL练习题(含解答)
  10. android studio必须装c盘吗,Android Studio不占用c盘配置
  11. 如何将PDF的单页页面分割成多个页面,如何将PDF页面的四周空白部分裁剪掉
  12. 电脑常用快捷键与指示灯
  13. 使用Node.js手撸一个建静态Web服务器,内部CV指南
  14. pdf压缩工具怎么用?如何压缩pdf
  15. 成绩忽好忽坏的孩子,往往缺乏良好的学习习惯--一语中的
  16. 大学计算机阶段考试不及格,大学考试不及格不能毕业吗?
  17. 求阶乘的和(C++)
  18. 爬取百度贴吧实战,python教你如何获取
  19. 计网——14数字传输技术
  20. 2019年快来了,送给每位程序员一份新年计划清单

热门文章

  1. 计算机领域的创新点在哪里,关于计算机设计的创新点
  2. fastadmin实现弹窗
  3. zsh: corrupt history file /home/floodlight/.zsh_history
  4. Python selenium插件使用 可刷浏览量
  5. nahimicsvc64禁用
  6. 0916文件上传-基础及过滤方式
  7. stetho 调试数据库_stetho是适用于android应用程序的最佳调试工具
  8. 让你的英语发音变得好听(转)
  9. Linux下静态库与动态库的引用关系深入分析
  10. 一周涨粉2686万,刘畊宏爆火,这2点自媒体运营技巧值得学习