php jsapi支付,支付宝jsapi支付

本文档介绍了如何在PHP中设置和使用支付宝JSAPI支付功能,包括配置参数如APPID、通知回调地址,以及生成支付订单字符串的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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支付

+

+

+

+

+

+

+

+

请使用支付宝扫码打开该网页:

+

api.php?text=<?php%20echo%20getCurrentUrl()?>

+

+

点击以下按钮唤起支付宝支付

+点击调起支付宝支付

+

+

+

+

+

+

+

+

+

+

+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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值