/** * 生成支付代码 * @param array $order 订单信息 * @param array $payment 支付方式信息 */ function pay_from($order, $payment) { //dump($payment); if (!defined('EC_CHARSET')) { $charset = 'utf-8'; } else { $charset = EC_CHARSET; } $extra_common_param = $order['text1']; $parameter = array('extra_common_param' => $extra_common_param, 'service' => 'create_direct_pay_by_user', 'partner' => $payment['cfg_id'], '_input_charset' => $charset, 'notify_url' => BG_return_url(basename(__FILE__, '.php')), 'return_url' => return_url(basename(__FILE__, '.php')), 'subject' => $order['order_sn'], 'out_trade_no' => $order['order_sn'], 'price' => $order['order_amount'], 'quantity' => 1, 'payment_type' => 1, 'logistics_type' => 'EXPRESS', 'logistics_fee' => 0, 'logistics_payment' => 'BUYER_PAY_AFTER_RECEIVE', 'seller_email' => $payment['cfg_value'], "paymethod" => 'bankPay', "defaultbank" => $order['pay_num']); ksort($parameter); reset($parameter); $param = ''; $sign = ''; foreach ($parameter as $key => $val) { $param .= "{$key}=" . urlencode($val) . "&"; $sign .= "{$key}={$val}&"; } $param = substr($param, 0, -1); $sign = substr($sign, 0, -1) . $payment['cfg_key']; //$sign = substr($sign, 0, -1). ALIPAY_AUTH; $button = '<div style="text-align:center"><input type="button" onclick="window.open(\'' . $payment['cfg_gate'] . '?' . $param . '&sign=' . md5($sign) . '&sign_type=MD5\')" value="' . $GLOBALS['_LANG']['pay_button'] . '" /></div>'; //dump(htmlentities($button)); return $button; }
function md5_encode($mdOeder, $payment_config) { $sign = 'orderid=' . $mdOeder['order_sn'] . '&origin=' . $payment_config['cfg_value'] . '&chargemoney=' . $mdOeder['order_amount'] . '&channelid=1&paytype=1&bankcode=' . $mdOeder['pay_num'] . '&cardno=&cardpwd=&cardamount=&fronturl=' . return_url(basename(__FILE__, '.php')) . '&bgurl=' . BG_return_url(basename(__FILE__, '.php')) . '&ext1=' . $mdOeder['ext1'] . '&ext2=' . $mdOeder['ext2']; if ($payment_config['cfg_key']) { $sign = substr(md5($sign . $payment_config['cfg_key']), 8, 16); //md5 16加密 } else { $sign = md5($sign); } return $sign; }