thinkphp对接ping++支付

字号+ 编辑: 国内TP粉 修订: 种花家 来源: ThinkPHP 2023-09-06 我要说两句(0)

ping++支付是上海的一家公司,创始人都是海归,挺靠谱的,不过就是中间要卡些流水费,就看老板愿意不愿意。

代码演示对接ping++支付接口的类库;

首先现在官方phpsdk

https://github.com/PingPlusPlus/pingpp-php

然后把解压代码放到框架的目录的Vendor目录中或者系统类库都可以

控制器调用即可看我的代码,继承的基类根据自己情况改下

这些实现服务端生成凭证

class PingpayAction extends WeixinbaseAction {
    /**
    +----------------------------------------------------------
    * 初始化
    +----------------------------------------------------------
    */
    function _initialize(){
        parent::_initialize();
        //$this->check_auth();
        $this->seo('支付中心');
        vendor( "Pay.init");
    }
    public function index(){
        $input_data = json_decode(file_get_contents('php://input'), true);
        if (empty($input_data['channel']) || empty($input_data['amount'])) {
            echo 'channel or amount is empty';
            exit();
        }
        $channel = strtolower($input_data['channel']);
        $amount = $input_data['amount'];
        $orderNo = substr(md5(time()), 0, 12);
        //$extra 在使用某些渠道的时候,需要填入相应的参数,其它渠道则是 array() .具体见以下代码或者官网中的文档。其他渠道时可以传空值也可以不传。
        $extra = array();
        switch ($channel) {
            case 'alipay_wap':
                $extra = array(
                    'success_url' => 'http://www.yourdomain.com/success',
                    'cancel_url' => 'http://www.yourdomain.com/cancel'
                );
                break;
            case 'alipay_pc_direct':
                $extra = array(
                    'success_url' => 'http://www.yourdomain.com/success'
                );
                break;
            case 'upmp_wap':
                $extra = array(
                    'result_url' => 'http://www.yourdomain.com/result?code='
                );
                break;
            case 'bfb_wap':
                $extra = array(
                    'result_url' => 'http://www.yourdomain.com/result?code=',
                    'bfb_login' => true
                );
                break;
            case 'upacp_wap':
                $extra = array(
                    'result_url' => 'http://www.yourdomain.com/result'
                );
                break;
            case 'upacp_pc':
                $extra = array(
                    'result_url' => 'http://www.yourdomain.com/result'
                );
                break;
            case 'wx_pub':
                $extra = array(
                    'open_id' => 'Openid'
                );
                break;
            case 'wx_pub_qr':
                $extra = array(
                    'product_id' => 'Productid'
                );
                break;
            case 'yeepay_wap':
                $extra = array(
                    'product_category' => '1',
                    'identity_id'=> 'your identity_id',
                    'identity_type' => 1,
                    'terminal_type' => 1,
                    'terminal_id'=>'your terminal_id',
                    'user_ua'=>'your user_ua',
                    'result_url'=>'http://www.yourdomain.com/result'
                );
                break;
            case 'jdpay_wap':
                $extra = array(
                    'success_url' => 'http://www.yourdomain.com',
                    'fail_url'=> 'http://www.yourdomain.com',
                    'token' => 'dsafadsfasdfadsjuyhfnhujkijunhaf'
                );
                break;
        }
        \Pingpp\Pingpp::setApiKey('sk_test_ibbTe5jLGCi5rzfH4OqPW9KC');
        try {
            $ch = \Pingpp\Charge::create(
                array(
                    'subject'   => 'Your Subject',
                    'body'      => 'Your Body',
                    'amount'    => $amount,
                    'order_no'  => $orderNo,
                    'currency'  => 'cny',
                    'extra'     => $extra,
                    'channel'   => $channel,
                    'client_ip' => $_SERVER['REMOTE_ADDR'],
                    'app'       => array('id' => 'app_1Gqj58ynP0mHeX1q')
                )
            );
            echo $ch;
        } catch (\Pingpp\Error\Base $e) {
            header('Status: ' . $e->getHttpStatus());
            echo($e->getHttpBody());
        }
    }
}

然后视图文件中实例 里面的post地址要改你的网址

<!DOCTYPE html>


<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
    <title>测试</title>
    <link rel="stylesheet" type="text/css" href="../styles/pinus.css">
</head>
<body>
<header>
    <div>
        <span></span>
    </div>
</header>
<section>
    <div>
        <div>
            <span><img src="../img/bgpic.jpg" width="100%" height="auto"></span>
            <label>
                <input id="amount" type="text" placeholder="金 额"/>
            </label>

            <div>
                <span ="wap_pay('upacp_pc')">银联 pc</span>
                <span ="wap_pay('alipay_pc_direct')">支付宝 pc</span>
            </div>
        </div>
    </div>
</section>
<script src="pingpp-pc.js" type="text/javascript"></script>
<script>
    function wap_pay(channel) {
        var amount = document.getElementById('amount').value * 100;

        var xhr = new XMLHttpRequest();
        xhr.open("POST", "http://www.xxx.com/Pingpay/index", true);
        xhr.setRequestHeader("Content-type", "application/json");
        xhr.send(JSON.stringify({
            channel: channel,
            amount: amount
        }));

        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                console.log(xhr.responseText);
                pingppPc.createPayment(xhr.responseText, function(result, err) {
                    console.log(result);
                    console.log(err);
                });
            }
        }
    }
</script>
</body>
</html>

剩下的需要到官方申请正式接口拿到key就可以支付了

阅完此文,您的感想如何?
  • 有用

    0

  • 没用

    0

  • 开心

    0

  • 愤怒

    0

  • 可怜

    0

1.如文章侵犯了您的版权,请发邮件通知本站,该文章将在24小时内删除;
2.本站标注原创的文章,转发时烦请注明来源;
3.Q群: 2702237 13835667

相关课文
  • mac开发接入微信公众号接口返回报错 cURL error 56: SSLRead() return error -9806

  • PHP的换行符是什么

  • pecl安装程序时报错Array and string offset access syntax with curly braces is no longer supported

  • 由于商家传入的H5交易参数有误,该笔交易暂时无法完成,请联系商家解决

我要说说
网上嘉宾点评