class Fastpay {
protected $conf = [
'appkey'=>'',//appkey
'key'=>'',//秘钥
];
protected $http_type='http'; public function __construct($payInfo=[]){
if($payInfo)
{
foreach ($payInfo as $field => $val) {
$this->config[$field]=$val['val'];
}
}
}
public function index($data)
{
$data = array(
'appkey'=>$this->config['appkey'],//你的appkey
'uid'=>$data['attach'],//你的用户id
'total_fee'=>$data['total'],//你的金额
'order_no'=>$data['pay_sn'],//你的订单号
'pay_title'=>$data['subject'],//你的订单号
'me_param'=>$data['attach'],//其他参数,可返回回调里面
'notify_url'=>$data['notify_url'],//异步回调地址
'me_back_url'=>$data['return_url'],//支付成功后返回
'me_eshop_openid'=>'',//付款用户openid
'me_party'=>'',//根据其他支付插件,异步回调返回同样参数,比如填写codepay,码支付,我们异步回调的时候就按码支付的回调参数返回
'sign'=>''//签名
);
$checkRes=$this->checkData($data);
if($checkRes['code']==0)
{
return $checkRes;
}
$data=$checkRes['data'];
$url_quer=http_build_query($data);
$url=($this->http_type=='https') ? "/fastpay/fpay/pays.php?{$url_quer}" : "/fastpay/fpay/pay.php?{$url_quer}" ;
return ['code'=>1,'msg'=>'success','data'=>['payurl'=>$url]];
} // 检测数据
public function checkData($data)
{
extract($data);
if (empty($appkey)) {
return ['code'=>0,'msg'=>'appkey没有填写'];
}
if (empty($total_fee)) {
return ['code'=>0,'msg'=>'金额不能为空'];
}
if (empty($uid)) {
return ['code'=>0,'msg'=>'付款用户id不能为空'];
}
if (empty($order_no)) {
return ['code'=>0,'msg'=>'请输入支付编号'];
}
if (!empty($me_back_url)) {
$data['me_back_url']=urlencode($me_back_url);
}
if (!empty($notify_url)) {
$data['notify_url']=urlencode($notify_url);
} // 直接将金额精确到两位数
$data['total_fee']=bcadd($total_fee, 0, 2);
if (empty($sign)) {
$data['sign']=$this->pay_sign($data);
} return ['code'=>1,'msg'=>'success','data'=>$data];
} //支付下单计算签名
public function pay_sign($paydata)
{
$str_sign="appkey={$paydata['appkey']}&order_no={$paydata['order_no']}&secretkey=".$this->config['key']."&total_fee={$paydata['total_fee']}&uid={$paydata['uid']}&";
$sign=md5($str_sign);
return $sign;
} function notify_sign($paydata)
{
$str_sign="appkey={$paydata['appkey']}&order_no={$paydata['order_no']}&secretkey=".SECRET_KEY."&me_pri={$paydata['me_pri']}&uid={$paydata['uid']}&";
$sign=md5($str_sign);
return $sign;
} }

第四方 fast快捷支付封装的更多相关文章

  1. (转载)Android支付宝支付封装代码

    Android支付宝支付封装代码 投稿:lijiao 字体:[增加 减小] 类型:转载 时间:2015-12-22我要评论 这篇文章主要介绍了Android支付宝支付封装代码,Android支付的时候 ...

  2. Android-支付宝快捷支付

    支付宝的快捷支付Android版业务流程比較麻烦,出现的意外情况比較多.在此,简单说下开发流程以及出现错误的解决方式; 1.注冊支付业务.这里不在赘述.建立数据安全传输所须要的私钥公钥,这里採用的是R ...

  3. 「美团外卖APP签约快捷支付」流程体验

    §1 添加银行卡 新用户在美团外卖APP订餐支付时,首先要绑定银行卡.如下是“添加银行卡”页,输入卡号后,系统自动调用卡bin库校验卡号的有效性,如果有效会显示发卡行和卡类型(借记卡/贷记卡).  这 ...

  4. java如何集成支付宝移动快捷支付功能

    项目需要,需要在客户端集成支付宝接口.第一次集成,过程还是挺简单的,不过由于支付宝官方文档写的不够清晰,也是走了一些弯路,下面把过程写出来分享给大家.就研究了一下:因为使用支付宝接口,就需要到支付宝官 ...

  5. Android学习笔记_69_android 支付宝之网页支付和快捷支付

    参考资料: https://b.alipay.com/order/productDetail.htm?productId=2013080604609654 https://b.alipay.com/o ...

  6. 移动APP 支付宝快捷支付开发流程

    [代码] [Java]代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ...

  7. 使用OpenSSL做RSA签名验证 支付宝移动快捷支付 的server异步通知

    因为业务须要.我们须要使用支付宝移动快捷支付做收款.支付宝给了我们<移动快捷支付应用集成接入包支付接口>见支付宝包<WS_SECURE_PAY_SDK>. 支付宝给的serve ...

  8. phonegap支付宝2.0移动快捷支付插件IOS版

    坑爹的支付宝,一两年都没有更新sdk了,这两天突然更新sdk,而且更新的变化特别大,所以只能对之前的支付宝快捷支付插件重新写了一遍. 这样既顺应了支付宝的更新,同时也支持了ios8. 废话少说,集成过 ...

  9. 农业银行快捷支付php版说明和实例代码

    接入的是shopnc,代码改改就可以用了,虽然不是一个完善的类,也可以按照类的方法直接调用,省得再去扣开发文档 农行在接收返回信息也会验证一次,还有一点就是页面通知返回结果 一定要用服务器通知,不然会 ...

随机推荐

  1. Android线性布局和帧布局

    第二次,本牛崽十分从容,今天咱们来讲讲Android Q之布局,我遇到的问题与自己学到的,大牛不要嘲笑哈,有错误可以指出来,本牛崽看到就改了. 今天我的学长跟我们开始了布局,布局看资料说好像有5种,又 ...

  2. Ubuntu16.04忘记用户登录密码以及管理员密码,重置密码的解决方案

    1. 问题现象: 密码遗忘 2. 问题原因 问题原因,搞不懂,只是修改了/etc/shadow和/etc/sudoers这俩文件 3. 解决方案 在系统开机前常按shift键进入grub界面,如下: ...

  3. Python自动化爬取App数据

    基本环境配置 版本:Python3 系统:Windows 需要安装: 1.JDK - Download JDK,Appium要求用户必须配置JAVA环境, 否则启动Seesion报错. 很多人学习py ...

  4. JavaFX桌面应用-为什么应用老是“未响应”

    日常使用软件的过程中,偶尔会遇到软件突然卡住,再点击几次就变成"未响应"的情况. 在JavaFX应用中同样也会出现这种情况,在开发过程中应该尽量避免这种情况的出现. >> ...

  5. keil 5.29 无法找到 flash的算法文件

    安装5.29之后,发现编译文件可以,但是Debuger下的flash download找不到对应的flash文件 解决, 重新 安装keil5.29时,PACK的目录选择安装在Keil同级目录下的AR ...

  6. 个性探测综述阅读笔记——Recent trends in deep learning based personality detection

    目录 abstract 1. introduction 1.1 个性衡量方法 1.2 应用前景 1.3 伦理道德 2. Related works 3. Baseline methods 3.1 文本 ...

  7. jQuery的小测试

    1.在div元素中,包含了一个<span>元素,通过has选择器获取<div>元素中的<span>元素的语法是? $('div:has(span)'); 2.在&l ...

  8. JS实现call,apply,bind函数

    实现之前的预备知识 ...用作展开 ...用作剩余参数 Object.create()的作用 原型链与构造函数 这些有时间补上吧 call函数实现 Function.prototype.myCall ...

  9. 单元测试报错:Mybatis中数据库语句错误

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.Persiste ...

  10. 【算法•日更•第十二期】信息奥赛一本通1585:【例 1】Amount of Degrees题解

    废话不多说,直接上题: 1585: [例 1]Amount of Degrees 时间限制: 1000 ms         内存限制: 524288 KB提交数: 130     通过数: 68 [ ...