对于任何一款软件来说,支付功能都是核心的,那么目前的主流支付接口主要是支付宝、微信和银联卡,而大多数开发技术人员对于如何调用支付宝的支付接口还存在很大的困扰,今天就来跟大家分享一下如何正确调用支付宝支付接口的实现,代码如下所示:

public function zfbpay1(){

require_once './ThinkPHP/Extend/Vendor/alipay1/config.php';

require_once './ThinkPHP/Extend/Vendor/alipay1/pagepay/service/AlipayTradeService.php';

require_once './ThinkPHP/Extend/Vendor/alipay1/pagepay/buildermodel/AlipayTradePagePayContentBuilder.php';

$model=M('zfbpay');

$add['oid']=I('nid');

$add['type']=1;

$add['WIDout_trade_no']=trim($_POST['WIDout_trade_no']);

$add['WIDtotal_amount']=trim($_POST['WIDtotal_amount']);

$add['WIDsubject']=trim($_POST['WIDsubject']);

// dump($_POST);die;

$re=$model->add($add);

if($re){

//商户订单号,商户网站订单系统中唯一订单号,必填

$out_trade_no = trim($_POST['WIDout_trade_no']);

//订单名称,必填

$subject = trim($_POST['WIDsubject']);

//付款金额,必填

// $total_amount = trim($_POST['WIDtotal_amount']);

$total_amount = 0.01;

//商品描述,可空

$body = trim($_POST['WIDbody']);

//构造参数

$payRequestBuilder = new AlipayTradePagePayContentBuilder();

$payRequestBuilder->setBody($body);

$payRequestBuilder->setSubject($subject);

$payRequestBuilder->setTotalAmount($total_amount);

$payRequestBuilder->setOutTradeNo($out_trade_no);

$aop = new AlipayTradeService($config);

/**

* pagePay 电脑网站支付请求

* @param $builder 业务参数,使用buildmodel中的对象生成。

* @param $return_url 同步跳转地址,公网可以访问

* @param $notify_url 异步通知地址,公网可以访问

* @return $response 支付宝返回的信息

*/

$response = $aop->pagePay($payRequestBuilder,$config['return_url'],$config['notify_url']);

$map['nid']=I('nid');

$map['out_trade_no']=$out_trade_no;

M('need')->save($map);

//输出表单

var_dump($response);

}

}

回调

public function updatezfb(){

require_once './ThinkPHP/Extend/Vendor/alipay1/config.php';

require_once './ThinkPHP/Extend/Vendor/alipay1/pagepay/service/AlipayTradeService.php';

$arr=$_POST;

$alipaySevice = new AlipayTradeService($config);

$alipaySevice->writeLog(var_export($_POST,true));

$result = $alipaySevice->check($arr);

/* 实际验证过程建议商户添加以下校验。

1、商户需要验证该通知数据中的out_trade_no是否为商户系统中创建的订单号,

2、判断total_amount是否确实为该订单的实际金额(即商户订单创建时的金额),

3、校验通知中的seller_id(或者seller_email) 是否为out_trade_no这笔单据的对应的操作方(有的时候,一个商户可能有多个seller_id/seller_email)

4、验证app_id是否为该商户本身。

*/

if($result) {//验证成功

/

//请在这里加上商户的业务逻辑程序代

// $add['content']=$_POST['out_trade_no'];

// M('a')->add($add);

// $add['content']=json_encode($_POST);

// M('a')->add($add);

//——请根据您的业务逻辑来编写程序(以下代码仅作参考)——

//获取支付宝的通知返回参数,可参考技术文档中服务器异步通知参数列表

//商户订单号

$out_trade_no = $_POST['out_trade_no'];

//支付宝交易号

$trade_no = $_POST['trade_no'];

//交易状态

$trade_status = $_POST['trade_status'];

if($_POST['trade_status'] == 'TRADE_FINISHED') {

$zfbmodel=M('zfbpay');

$arr=$zfbmodel->where("WIDout_trade_no=$out_trade_no")->find();

if($arr){

$type=$arr['type'];//1购买商品 2充值余额 3做单支付

if($type==1){

//购买商品

$nid=$arr['id'];

$model=M('need');

$orderinfo=$model->where("nid=$nid")->find();

$tuoguan=$orderinfo['tuoguan'];

$province=$orderinfo['province'];

$finish_state=$orderinfo['finish_state'];

$arr1['tuoguan']=1;

if($finish_state==1){

$arr1['finish_state']=2;

}

if ($orderinfo['money']!=0) {

$arr1['money']=$orderinfo['money'];

}else{

$arr1['money']=intval($orderinfo['money'])+intval($arr['WIDtotal_amount']);

}

$arr1['paytype']=1;

$res=$model->save($arr1);

}elseif($type==2){

//余额充值

$rid=$arr['id'];

//获取充值信息

$model=M('recharge');

$usermodel=M('user');

$rechargeinfo=$model->where("rid=$rid")->find();

$paystate=$rechargeinfo['paystate'];

if($paystate==0){

$uid=$rechargeinfo['uid'];

$num=$rechargeinfo['amoney'];

//更新订单状态

$update['paystate']=1;

$res=$model->where("rid=$rid")->save($update);

if($res){

//更新用户余额

$re2=$usermodel->where("id=$uid")->setInc('yue',$num);

}

}

}elseif($type==3){

}

}

//判断该笔订单是否在商户网站中已经做过处理

//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序

//请务必判断请求时的total_amount与通知时获取的total_fee为一致的

//如果有做过处理,不执行商户的业务程序

//注意:

//退款日期超过可退款期限后(如三个月可退款),支付宝系统发送该交易状态通知

}

else if ($_POST['trade_status'] == 'TRADE_SUCCESS') {

$zfbmodel=M('zfbpay');

$arr=$zfbmodel->where("WIDout_trade_no=$out_trade_no")->find();

if($arr){

$type=$arr['type'];//1购买商品 2充值余额 3做单支付

if($type==1){

//购买商品

$oid=$arr['id'];

$model=M('order_goods');

$orderinfo=$model->where("oid=$oid")->find();

$paystate=$orderinfo['paystate'];

if($paystate==0){

$update['paystate']=1;

$res=$model->where("oid=$oid")->save($update);

//更新惠点

$umod=M('user');

$ordersone=$model->where("oid=$oid")->find();

$uid=$ordersone['uid'];

$usertel=$umod->where("id=$uid")->find();

$sys=M('sys')->find();

$mmp['id']=$usertel['id'];

$mmp['money']=$usertel['money']+$ordersone['oprice'];

$mmp['huidian']=floor($mmp['money']/$sys['zshd']);

$userSave=$umod->save($mmp);

}

}elseif($type==2){

//余额充值

$rid=$arr['id'];

//获取充值信息

$model=M('recharge');

$usermodel=M('user');

$rechargeinfo=$model->where("rid=$rid")->find();

$paystate=$rechargeinfo['paystate'];

if($paystate==0){

$uid=$rechargeinfo['uid'];

$num=$rechargeinfo['amoney'];

//更新订单状态

$update['paystate']=1;

$res=$model->where("rid=$rid")->save($update);

if($res){

//更新用户余额

$re2=$usermodel->where("id=$uid")->setInc('yue',$num);

}

}

}elseif($type==3){

}

}

//判断该笔订单是否在商户网站中已经做过处理

//如果没有做过处理,根据订单号(out_trade_no)在商户网站的订单系统中查到该笔订单的详细,并执行商户的业务程序

//请务必判断请求时的total_amount与通知时获取的total_fee为一致的

//如果有做过处理,不执行商户的业务程序

//注意:

//付款完成后,支付宝系统发送该交易状态通知

}

//——请根据您的业务逻辑来编写程序(以上代码仅作参考)——

echo "success"; //请不要修改或删除

}else {

//验证失败

echo "fail";

}

}

好了,看到这里相信各位技术开发人员已经知道自己的问题出现在哪些地方了,那么大家可以赶紧去尝试一下,如果还存在其他方面问题的话,可以留言咨询我们哦。

本文由专业的app开发报价燚轩科技编辑发布,如需转载请注明原文作者及出处!

php开发支付宝支付密码忘记了怎么办_php编程之如何调用支付宝支付接口的实现...相关推荐

  1. php开发支付宝支付密码忘记了怎么办_php支付走过的坑(支付宝篇 注册 秘钥 环境等等配置)...

    支付这东西,说容易也容易,说难也难 代码这玩意还比较好说 但是 如果没有demo 直接去看官方文档 十有八九一脸懵逼 今天就整理一下 支付这块走过的坑 涉及 微信h5支付 支付宝h5支付 (api文档 ...

  2. php开发支付宝支付密码忘记了怎么办_PHP接入支付宝教程

    0.准备工作 支付宝账号验证 签约接口 私钥生成 1. 拼凑订单 1.1 拼装订单 1.2 私钥签名 2 服务器端处理 2.1 支付宝处理流程图 3 代码实现 3.1 开启CURL 3.2 填写配置 ...

  3. php开发支付宝支付密码忘记了怎么办_PHP实现个人支付宝支付开发(一)

    在网站开发过程中,特别是商城类网站,都会要求网站必须能实现在线支付的功能.此时就需要通过第三方的支付平台来实现完整的交易流程.常见的第三方支付平台就比如支付宝,那么网站实现支付宝在线支付功能就需要进行 ...

  4. 华为钱包支付密码忘记了,人也不在,怎么解除

    如果您忘记了华为钱包的支付密码,并且无法联系到账户管理员,您可以尝试以下方法解除: 重置密码:如果您已经绑定了手机号码,您可以通过忘记密码功能重置密码. 通过客服联系:您可以通过华为钱包的客服渠道(如 ...

  5. php编程之如何调用支付宝支付接口的实现

    对于任何一款软件来说,支付功能都是核心的,那么目前的主流支付接口主要是支付宝.微信和银联卡,而大多数开发技术人员对于如何调用支付宝的支付接口还存在很大的困扰,今天就来跟大家分享一下如何正确调用支付宝支 ...

  6. vue支付宝html,vue 解决在微信内置浏览器中调用支付宝支付的情况

    我的思路大概是这样的 1. 验证是否是在微信内置浏览器中调用支付宝 2.给支付页面的url加上调用接口所需的参数(因为在微信里是不能直接调用支付宝的需要调用外部浏览器) 3.在外部浏览器中完成支付跳转 ...

  7. 有源码但后台密码忘记找回通用方法--微信猜骰子大小附带充值接口 html5游戏网站

    1.因为是thinkphp,直接找到并打开这个文件\WWW\Application\Admin\Controller\IndexController.class.php 2.第34行          ...

  8. ios浏览器微信支付回调页面_微信支付:手机系统自带的浏览器,调用微信支付如何实现(非扫码)...

    如果您是使用浏览器的移动网页进行支付,那就是调用微信H5支付,如果是使用APP客户端进行支付,那就要调用微信APP支付. H5支付是指商户在微信客户端外的移动端网页展示商品或服务,用户在前述页面确认使 ...

  9. php开发支付宝支付密码忘记了怎么办_密码箱忘记密码怎么办?密码箱解锁方法大全...

    密码箱忘记密码经常发生,有时候急着赶车赶飞机必须用的证件在密码行李箱,怎么办?破坏? 当你忘记密码的时候千万不要着急,不要试着用暴力破坏密码锁. 操作方法一 此类型的密码箱的开锁方法.把箱子放在光线好 ...

最新文章

  1. IDEA 真牛逼,900 行又臭又长的类重构,几分钟搞定?真香!
  2. Oracle EBS R12 客户表结构
  3. stm32之PVD可编程电压监测器(掉电保存数据)
  4. Linux下VSFTP配置全攻略
  5. dfs时间复杂度_一文吃透时间复杂度和空间复杂度
  6. 网上支付心案例payment
  7. 完成端口可用回射服务器
  8. [转载] Python 递归函数
  9. 圈圈教你学USB第一章
  10. 软件产品功能思维导图
  11. Appscan的下载安装
  12. matlab有限差分法求解温度场,动静压轴承油膜温升MATLABFLuENT有限差分法硕士论文...
  13. ANSI-美国国家标准学会
  14. 高通UEFI研究[三]
  15. scratch python插件_scratch插件开发文档
  16. Dart中类的静态方法,继承,重写父类方法
  17. 星起航:抖音小店怎么设置达人佣金
  18. Java SSM外卖跑腿系统
  19. 查询发明专利的审查和授权结果通知书电子版
  20. 教堂环境风琴-Marcos Ciscar Ethereal Keys Kontakt

热门文章

  1. 可怕!程序员要被革命了,微软推出自己会编程的 “AI 程序员” 插件
  2. java 项目 gbk 转utf-8_[idea]Java的GBK编码项目统一转换成utf-8格式
  3. 怀旧服野外pvp最多的服务器,盘点魔兽世界怀旧服野外的4大PVP战场,又将是一场腥风血雨!...
  4. windows 安装mysql5.7 解决MSVCP120.dll丢失问题
  5. java-php-python-ssm苹果酒店住房管理计算机毕业设计
  6. ASP.NET的三种开发模式
  7. statement用法
  8. java搜狐笔试题_记录一次搜狐面试(包括笔试题)
  9. 瀑布流 gank.io 美女福利
  10. 电压抬升op电路分析