tp5对接支付宝支付简单集成
对于每个刚开始工作的新手来说,无论支付宝支付还是微信支付都是跑不掉的一个小门槛。
在加上本人比较技术比较渣(比较懒导致的),不太喜欢引用那么大的SDK,于是就简单集成了一下支付宝的支付。
但也只是只有支付而已哦,其他的一些功能还是自己用自己在集成吧,嘻嘻(#^.^#)还是懒。
废话不多说了,直接上代码:
/**
* 支付宝支付
*/
class Alipay
{
private $config =[
"app_id" => "************", //支付宝APPid
"rsaPrivateKey" => "************", //支付宝私钥
"rsaPublicKey" => "************", //支付宝公钥
"charset" => "utf-8",
"sign_type" => "RSA2",
"version" => "1.0",
];
private $submitUrl = "https://openapi.alipay.com/gateway.do" ;//提交地址
public $calltype = "app";//pc电脑端 app 手机和app端公用
public $submit_auto=true; public function index($data)
{
$calltype=$this->calltype;
return $this->$calltype($data);
}
public function app($data)
{
$return_url=$data['return_url'];
$notify_url=$data['notify_url'];
$subject=$data['subject'];
$order_sn=$data['order_sn'];
$total=$data['total']; $biz_content=[
'body'=>'',
'subject'=>$subject,
'out_trade_no'=>$order_sn,
'timeout_express'=>'30m',
'total_amount'=>$total,
'product_code'=>'QUICK_MSECURITY_PAY',
];
$postdata=[
'app_id'=>$this->config['app_id'],
'method'=>'alipay.trade.app.pay',
'format'=>'json',
'charset'=>$this->config['charset'],
'sign_type'=>$this->config['sign_type'],
'sign'=>'',
'timestamp'=>date('Y-m-d H:i:s'),
'version'=>'1.0',
'notify_url'=>$notify_url,
'biz_content'=>json_encode($biz_content),
]; $signdata=$this->alisign($postdata);
$str=$this->keyandvalStr($signdata,1);
//返回链接不能带官方https链接
return $str; }
public function pc($data)
{
$return_url=$data['return_url'];
$notify_url=$data['notify_url'];
$biz_content=[
"total_amount"=>$data['total'],
"product_code"=>"FAST_INSTANT_TRADE_PAY",
"subject"=>$data['subject'],
"out_trade_no"=>$data['order_sn'],
"goods_type"=>1,//商品类型 0虚拟商品 1实物商品
]; $post=[
'app_id'=>$this->config['app_id'],
'method'=>'alipay.trade.page.pay',
'format'=>'JSON',
'return_url'=>$return_url,
'charset'=>$this->config['charset'],
'sign_type'=>$this->config['sign_type'],
// 'sign'=>$sign,
'timestamp'=>date('Y-m-d H:i:s'),
'version'=>$this->config['version'],
'notify_url'=>$notify_url,
'biz_content'=>json_encode($biz_content),
]; $signdata=$this->alisign($post); $html=$this->formsubmithtml($this->submitUrl,$signdata); return $html;
}
public function mobile($data)
{
$return_url=$data['return_url'];
$notify_url=$data['notify_url'];
$biz_content=[
"total_amount"=>$data['total'],
"product_code"=>"QUICK_WAP_WAY",
"subject"=>$data['subject'],
"out_trade_no"=>$data['order_sn'],
"goods_type"=>1,//商品类型 0虚拟商品 1实物商品
]; $post=[
'app_id'=>$this->config['app_id'],
'method'=>'alipay.trade.wap.pay',
'format'=>'JSON',
'return_url'=>$return_url,
'charset'=>$this->config['charset'],
'sign_type'=>$this->config['sign_type'],
// 'sign'=>$sign,
'timestamp'=>date('Y-m-d H:i:s'),
'version'=>$this->config['version'],
'notify_url'=>$notify_url,
'biz_content'=>json_encode($biz_content),
]; $signdata=$this->alisign($post);
$str=$this->keyandvalStr($signdata,1); $url="https://openapi.alipay.com/gateway.do?".$str; return $url;
}
public function alisign($data)
{
$rsaPrivateKey=$this->config['rsaPrivateKey'];
$buff = "";
ksort($data);
$buff=$this->keyandvalStr($data);
$str = chunk_split($rsaPrivateKey, 64, "\n");
$res = "-----BEGIN RSA PRIVATE KEY-----\n$str-----END RSA PRIVATE KEY-----\n"; $sign=$this->ras2Sign($buff,$res);
$data['sign']=$sign;
return $data;
}
function keyandvalStr($data,$flg=0)
{
$buff="";
foreach ($data as $k => $v) {
if($flg!=0 && $v != "" && !is_array($v))
{
$v=urlencode($v);
$buff .= $k . "=" . $v . "&";
}else{
if($k != "sign" && $v != "" && !is_array($v)){
$buff .= $k . "=" . $v . "&";
}
}
}
$buff = trim($buff, "&");
return $buff;
}
function ras2Sign($buff,$res)
{
$sign='';
openssl_sign($buff, $sign, $res, OPENSSL_ALGO_SHA256);
$sign = base64_encode($sign);
return $sign;
}
function formsubmithtml($action,$data)
{
$sHtml = "<form id='alipaysubmit' name='alipaysubmit' action='".$action."' method='POST'>";
foreach ($data as $key => $value) {
$val = str_replace("'","'",$value);
$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
}
$sHtml = $sHtml."<input type='submit' class='paysubmit' value='ok' ></form>";
if($this->submit_auto==true)
{
$sHtml = $sHtml."<script>document.forms['alipaysubmit'].submit();</script>";
} return $sHtml;
} }
调用方法:
use pay\Alipay; $callD=[
'return_url' => '支付完成跳转路径',
'notify_url' => '回调路径',
'total' => '支付总额',
'subject' => '支付说明',
'order_sn' => '生成订单号',
];
$url=$this->Alipay($callD); public function Alipay($data,$flg=true)
{
$pay = new Alipay();
$pay->calltype='app';
$pay->submit_auto=$flg;
$pay=$pay->index($data);
return $pay;
}
以上即是本次分享的内容。
感谢您的观看。
2019年05月10日
tp5对接支付宝支付简单集成的更多相关文章
- Python对接支付宝支付自实现
Python对接支付宝支付自实现 # -*- coding: utf-8 -*- import base64 import json import urllib.parse from datetime ...
- Django 对接 支付宝支付, 回调
平台 点击这里进入 蚂蚁金服开放平台 沙箱 点击这里进入 沙箱环境 初始界面 设置公钥 下载创建秘钥工具 1. 进入文档中心 这里 2. 选中 电脑网站支付 3. 进入后选中 API 列表 中的 统 ...
- springboot项目对接支付宝支付
支付宝对接文档 一.准备工作 1. 首先要到 蚂蚁金服开发者中心 https://openhome.alipay.com/platform/home.htm 注册商家账户,并认证. 2.下载java版 ...
- Thinkcmf对接支付宝支付和获取用户信息
一. 登录支付宝开放平台 平台地址:https://open.alipay.com/ 二. 创建应用并申请上线 登录后,[进入我的开放平台],依次点击[开发者中心]-& ...
- iOS:集成支付宝支付
一.介绍 支付宝的集成还是比较简单的,按照文档来一步步操作,基本上很顺利.不过,仍然有两个地方会是坑.这里我集成成功了,在此整理一下.说先说一下我遇到的坑如下: 第一个坑:下载的SDK文件AliPay ...
- 李洪强iOS开发支付集成之支付宝支付
iOS开发支付集成之支付宝支付 下载支付宝SDK 首先是开发包下载,还是比较难发现的,网上以前文章中的链接都打不开,我找了好久才找到的.最新的地址在这里(注意的是下载出来的SDK包里面并没有传说中的开 ...
- android app 集成 支付宝支付 微信支付
项目中部分功能点需要用到支付功能,移动端主要集成支付宝支付和微信支付 支付宝sdk以及demo下载地址:https://doc.open.alipay.com/doc2/detail.htm?spm= ...
- App对接支付宝移动支付功能
前段时间看了下app对接支付宝移动支付的功能,并自己总结了下支付宝移动支付的实现流程 一.申请流程 前提是已有现成的应用. 1. 申请地址 https://b ...
- iOS开发支付集成之支付宝支付
项目中要用到支付功能,需要支付宝,微信,银联三大支付,所以打算总结一下,写两篇文章,方便以后的查阅, 大家在做的时候也能稍微参考下,用到的地方避免再次被坑.这是第二篇支付宝集成,第一篇银联支付在这里. ...
随机推荐
- unity3d easytouch教程
http://www.taikr.com/group/6/thread/1987 说一说easytouch的简单使用方法,和移动平台上的rpg游戏一样,我们肯定也不陌生,我们经常玩游戏的时候用的都是虚 ...
- [Xcode 实际操作]二、视图与手势-(4)给图像视图添加边框效果
目录:[Swift]Xcode实际操作 本文将演示给图片添加颜色相框 import UIKit class ViewController: UIViewController { override fu ...
- [Xcode 实际操作]九、实用进阶-(1)隐藏顶部的状态栏
目录:[Swift]Xcode实际操作 本文将演示隐藏顶部的状态栏. 在项目导航区,打开项目配置文件[Info.plist] 每个程序都拥有自己的项目配置文件,用来存储各种配置信息. 鼠标右键[Add ...
- Pycharm2018.3.1永久激活
Pycharm Professional 2018.3.1 版已正式发布,新版本添加对Python3.7的支持.作为强大的开发工具,但每次注册让人头疼,本着分享的心态,提供以下解决方案,亲测有效!本方 ...
- SpringMvc源码入门
servlet httpServletRequest httpServlet
- math(2018.10.27)
20%的数据直接暴搜就行,接下来我们考虑哪些数不能够出现在同一个集合中,就连一 条边,我们会发现前
- DRF教程1-序列化
序列化类 要建立web API,要做的第一件事就是对实例进行序列化,比如以json方式显示.我们可以生命序列化,它和django的forms很相似.在app目录下创建serializers.py fr ...
- [软件工程基础]PhyLab 技术规格说明书
由于暂不对后端有所改变,因此该部分技术规格说明书复用 Default 的技术规格说明书. 由于现阶段对于 Laravel 框架不熟悉,以及对于是否使用已有的轮子或者造轮子实现预想的功能还不清晰,因此暂 ...
- Elasticsearch之探索集群信息
REST API 启动并运行了节点和集群,下一步是了解如何与它进行通信.elasticsearch提供了一个非常全面和强大的REST API,可以使用它与集群进行交付. 使用API完成以下: • 检查 ...
- Tomcat固定的目录结构
1. /work Tomcat把由Jsp生成的Servlet放于此目录下. 2. /webapps 当发布Web应用时,默认情况下把Web应用文件放于此目录下. 3. /logs 存放Tomcat的日 ...