文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

怎么用PHP实现支付宝和微信扫码在线支付的功能

2024-04-02 19:55

关注

本篇内容介绍了“怎么用PHP实现支付宝和微信扫码在线支付的功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

PHP支付宝和微信扫码在线支付实例,这是PC端的扫码支付,支付成功后,在回调地址显示支付相关信息。

怎么用PHP实现支付宝和微信扫码在线支付的功能

操作步骤:

1.修改配置文件 Application/common/conf/config.php

$arr = array( 
    'DB_TYPE' => 'mysql', 
    'DB_HOST' => "localhost", 
    'DB_NAME' => 'demo', 
    'DB_USER' => "sucaihuo.com", 
    'DB_PWD' => "sucaihuo.com", 
    'DB_PORT' => 3306, 
    'DB_PREFIX' => '', 
);

2.修改支付宝和微信支付配置信息Application/home/conf/config.php

支  付宝请到支付宝商户官网申请:https://b.alipay.com/?ynsrc=zhuzhanA,微信支付配置申请:https:  //mp.weixin.qq.com/cgi-bin/loginpage?t=wxm2-login&lang=zh_CN

$arr = array( 
    'URL_ROUTER_ON' => true, 
     
    'payment' => array( 
        'alipay' => array( 
            // 收款账号邮箱 
            'email' => 'sucaihuo@126.com', 
            // 加密key,开通支付宝账户后给予 
            'key' => 'ggo084pb84gl43qnw82a39n9b7r1jq2m', 
            // 合作者ID,支付宝有该配置,开通易宝账户后给予 
            'partner' => '2088901006538525', 
            //收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号 
            'seller_id' => '2088901006538525', 
            //签名方式 
            'sign_type' => strtoupper('MD5'), 
            //字符编码格式 目前支持utf-8 
            'input_charset' => strtolower('utf-8'), 
            // 产品类型,无需修改 
            'service' => 'create_direct_pay_by_user', 
            // 支付类型 ,无需修改 
            'payment_type' => '1', 
        ), 
          'alipaywap' => array( 
            // 收款账号邮箱 
            'email' => 'sucaihuo@126.com', 
            // 加密key,开通支付宝账户后给予 
            'key' => 'ggo084pb84gl43qnw82a39n9b7r1jq2m', 
            // 合作者ID,支付宝有该配置,开通易宝账户后给予 
            'partner' => '2088901006538525', 
            //收款支付宝账号,以2088开头由16位纯数字组成的字符串,一般情况下收款账号就是签约账号 
            'seller_id' => '2088901006538525', 
            //签名方式 
            'sign_type' => strtoupper('MD5'), 
            //字符编码格式 目前支持utf-8 
            'input_charset' => strtolower('utf-8'), 
            // 产品类型,无需修改 
            'service' => 'alipay.wap.create.direct.pay.by.user', 
            // 支付类型 ,无需修改 
            'payment_type' => '1', 
        ), 
        'wechatjspai' => array( 
            'APPID' => 'wx422126b0b62bbfcfc', 
            'MCHID' => '1349825901', 
            'KEY' => '2088901006538525', 
            'APPSECRET' => '45843e705995a12106155f4c26f716dc', 
        ), 
    ) 
);

只要操作以上两个步骤,即可调通支付宝和微信在线支付,以下为支付代码教程。

订单生成代码如下: Application\Home\Controller\PayController.class.php

public function submit() { 
        $paytype = I("post.paytype"); 
        $data['order_money'] = I("post.money", 1);//订单金额 
        $data['order_no'] = date("YmdHis") . rand(1000, 9999);//订单号 
        $data['pay_type'] = $paytype; 
        $data['addtime'] = time(); 
        M("order")->add($data); 
        $site_url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; 
        $dir = dirname($site_url); 
        $data['url_notify'] = $dir . "/Notify/pay_alipay";//回调地址 
        $data['url_return'] = $dir . "/Pay/order_detail";//返回地址 
        $data['title'] = "" . $data['order_no']; 
        $data['body'] = "主体内容" . $data['order_no']; 
        if ($paytype == 'alipay') { 
            $this->alipay_jump($data); 
        } elseif ($paytype == 'wechat_code') { 
            $data['url_notify'] = $dir . "/Notify/pay_weixin"; 
            $this->wechat_jump($data); 
        } 
    }

支付成功回调,更改订单状态为已付款: Application\Home\Controller\NotifyController.class.php

public function pay_weixin() { 
        $simple = json_decode(json_encode(simplexml_load_string($GLOBALS['HTTP_RAW_POST_DATA'], 'SimpleXMLElement', LIBXML_NOCDATA)), true); 
 
        $notify_data['order_no'] = $notify_data['trade_no'] = $simple['out_trade_no']; 
        $notify_data['third_id'] = $simple['transaction_id']; 
        $notify_data['pay_money'] = $simple['total_fee']; 
 
        $notify_data['payment_method'] = 'weixin'; 
 
//   $sign = $simple['sign']; 
//        file_put_contents('ac_simple.txt', json_encode($simple)); 
//        file_put_contents('ac_notify_data.txt', json_encode($notify_data)); 
 
        $this->order_pay($notify_data); 
    } 
 
    public function pay_alipay() { 
        $notify_data['order_no'] = $notify_data['trade_no'] = I("post.out_trade_no"); 
        $notify_data['third_id'] = I("post.trade_no"); 
        $notify_data['pay_money'] = I("post.total_fee"); 
        $notify_data['payment_method'] = 'alipay'; 
        $this->order_pay($notify_data); 
        file_put_contents('ac_notify_data.txt', json_encode($_REQUEST)); 
    } 
 
     
    public function order_pay($data_order) { 
 
        $order_no = $data_order['order_no']; 
        if ($order_no == '') { 
            return false; 
        } 
        $order_info = M('order')->where(array("order_no" => $order_no))->find(); 
        if ($order_info['state'] == 0) { 
            $data_order['update_time'] = $_SERVER ['REQUEST_TIME']; 
            $data_order['state'] = 1; // 已付款 
            M('order')->where(array("order_no" => $order_no))->save($data_order); 
        } 
    }

“怎么用PHP实现支付宝和微信扫码在线支付的功能”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯