chinabank支付

分享一个最简单的支付实例,自己写的一个简单的类 chinabank支付,支付是有签名认证的,也就是加密算法,阿里和微信都有公钥和私钥再配上appkey一堆key值 进行加密校验,安全系数是不错的,当然柿子挑软的捏,本文旨在给新手做支付一点思路 启发,首先理解支付的基本流程,找一个支付平台,比如说阿里腾讯网银在线及applepay,paypal等等,申请一个支付的账户,能够收款的(一般企业才能申请到),然后根据给的SDK或者demo进行部署配置,对自己的商品生成订单,做成表单,并对参数按要求加密发送给指定接口,然后支付平台收到货款后,确认支付成功后会回调你填写的URL地址,一般会有状态值,然后你根据支付的成功失败做出不同的响应,如何防止掉单现象呢?如果平台回调你URL地址第一次失败了的话,几分钟之内又会回调一次乃至多次。

先来个简单的支付 ,有最基本的元素,能够吊起支付,切勿支付成功,支付成功没钱退,这个商户是网上招的一个。

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<?php
$v =  '0.01CNY2016040620272562http://iphp.cc'.'%()#QOKFDLS:1*&U';
$v= strtoupper(md5($v));
?>
<form action="https://pay3.chinabank.com.cn/PayGate" method="post">
<p><input type="text" name=v_mid value="20272562"> </p>
<p><input type="text" name=v_oid value="20160406"></p>
<p><input type="text" name=v_amount value="0.01">  </p>
<p><input type="text" name=v_moneytype value="CNY"> </p>
<p><input type="text" name=v_url value="http://iphp.cc"></p>
<p><input type="text" name=v_md5info value="<?php echo $v;?>"> </p>
<input type="submit">
</form>
</body>
</html>


下面来稍微复杂点的支付类

<?php
/**
 * Created by PhpStorm.
 * User: kok
 * Date: 16-4-5
 * Time: 下午11:42
 */

namespace Home\Pay;


class CBPay
{
    protected $v_moneytype = 'CNY';
    protected $v_mid;
    protected $v_url;
    protected $v_key;
    protected $v_oid;
    protected $v_amount;

    public function __construct($v_oid,$v_amount){
        $this->v_mid = C('V_MID');  //填你实际的 这是从TP 配置文件读取
        $this->v_key = C('V_KEY');  //密钥值
        $this->v_url = C('V_URL');   //回调URL填你实际的。
        $this->v_amount = sprintf('%.2f' , $v_amount);
        $this->v_oid = $v_oid;
    }

    public function form(){
        $form = '
            <form action="https://pay3.chinabank.com.cn/PayGate" method="post">
                <p><input type="text" name="v_mid" value="%s"></p>
                <p><input type="text" name="v_oid" value="%s"></p>
                <p><input type="text" name="v_amount" value="%.2f"></p>
                <p><input type="text" name="v_moneytype" value="%s"></p>
                <p><input type="text" name="v_url" value="%s"></p>
                <p><input type="text" name="v_md5info" value="%s"></p>
                <p><input type="submit" value="支付"></p>
            </form>';

        return sprintf($form , $this->v_mid , $this->v_oid , $this->v_amount , $this->v_moneytype , $this->v_url , $this->sign());
    }

    /**
     * 计算签名
     * @return string
     */
    public function sign(){
        $str = $this->v_amount . $this->v_moneytype . $this->v_oid;
        $str .= $this->v_mid .$this->v_url . $this->v_key;
        return strtoupper(md5($str));
    }

}

睡觉了~~

zhcpkg

2016-04-08 22:18:32
USA
nickname
content