'cappay_account', 'type' => 'text', 'value' => ''), array('name' => 'cappay_key', 'type' => 'text', 'value' => ''), array('name' => 'cappay_currency', 'type' => 'select', 'value' => 'USD') ); return; } class cappay { /** * 构造函数 * * @access public * @param * * @return void */ function __construct() { } /** * 生成支付代码 * @param array $order 订单信息 * @param array $payment 支付方式信息 */ function get_code($order, $payment) { $v_rcvname = trim($payment['cappay_account']); $m_orderid = $order['log_id']; $v_amount = $order['order_amount']; $v_moneytype = trim($payment['cappay_currency']);; $v_url = return_url(basename(__FILE__, '.php')); $m_ocomment = '欢迎使用首信易支付'; $v_ymd = date('Ymd',time()); /*易支付平台*/ $MD5Key = $payment['cappay_key']; //<--支付密钥--> 注:此处密钥必须与商家后台里的密钥一致 $v_oid = "$v_ymd-$v_rcvname-$m_orderid"; $sourcedata = $v_moneytype.$v_ymd.$v_amount.$v_rcvname.$v_oid.$v_rcvname.$v_url; $result = $this->hmac_md5($MD5Key,$sourcedata); $def_url = '
'; /*易支付会员通道 $def_url = "'; //易支付手机通道 $def_url = "'; //易支付英文通道 $def_url = "';*/ return $def_url; } /** * 响应操作 */ function respond() { $payment = get_payment(basename(__FILE__, '.php')); $v_tempdate = explode('-', $_REQUEST['v_oid']); //接受返回数据验证开始 //v_md5info验证 $md5info_paramet = $_REQUEST['v_oid'].$_REQUEST['v_pstatus'].$_REQUEST['v_pstring'].$_REQUEST['v_pmode']; $md5info_tem = $this->hmac_md5($payment['cappay_key'],$md5info_paramet); //v_md5money验证 $md5money_paramet = $_REQUEST['v_amount'].$_REQUEST['v_moneytype']; $md5money_tem = $this->hmac_md5($payment['cappay_key'],$md5money_paramet); if ($md5info_tem == $_REQUEST['v_md5info'] && $md5money_tem == $_REQUEST['v_md5money']) { //改变订单状态 order_paid($v_tempdate[2]); return true; } else { return false; } } function hmac_md5($key, $data) { if (extension_loaded('mhash')) { return bin2hex(mhash(MHASH_MD5, $data, $key)); } // RFC 2104 HMAC implementation for php. Hacked by Lance Rushing $b = 64; if (strlen($key) > $b) { $key = pack('H*', md5($key)); } $key = str_pad($key, $b, chr(0x00)); $ipad = str_pad('', $b, chr(0x36)); $opad = str_pad('', $b, chr(0x5c)); $k_ipad = $key ^ $ipad; $k_opad = $key ^ $opad; return md5($k_opad . pack('H*', md5($k_ipad . $data))); } } ?>