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

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

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开发报价燚轩科技编辑发布,如需转载请注明原文作者及出处!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值