第一步:引入Common类
class Common {
private $merKey;
/**
* 签名初始化
* @param merKey 签名密钥
*/
public function __construct($merKey) {
$this->merKey = $merKey;
}
/**
* 创建表单
* @data 表单内容
* @gateway 支付网关地址
*/
function buildForm($data, $gateway) {
$sHtml = "<form id='payform' name='payform' action='".$gateway."' method='post'>";
while (list ($key, $val) = each ($data)) {
$sHtml.= "<input type='hidden' name='".$key."' value='".$val."'/>";
}
$sHtml.= "</form>";
$sHtml.= "<script>document.forms['payform'].submit();</script>";
return $sHtml;
}
/**
* @name 准备签名/验签字符串
*/
public function prepareSign($data) {
ksort($data);
$array = array();
foreach ($data as $key=>$value) {
if($value == null) {
continue;
}
array_push($array, $key.'='.$value);
}
return implode($array, '&');
}
/**
* @name 生成签名
* @param sourceData
* @return 签名数据
*/
public function sign($data) {
$signature = strtoupper(md5($data.'&key='.$this->merKey));
return $signature;
}
/*
* @name 验证签名
* @param signData 签名数据
* @param sourceData 原数据
* @return
*/
public function verify($data, $signature) {
$mySign = $this->sign($data);
if (strcasecmp($mySign, $signature) == 0) {
return true;
} else {
return false;
}
}
}
第二步:传入订单号和金额
$version = "1.8";
// 商户号(支付平台)
$merchant_id = "你的商户ID";
// 商户密钥(支付平台)
$mer_key = "你的KEY";
// 签名类型
$sign_type = "MD5";
// 支付网关地址
$pay_url = "http://pay.yijyipay.com/pay";
// 商户通知地址(请根据自己的部署情况设置下面的路径)
$notify_url = "http://".$_SERVER["HTTP_HOST"]."/yjypay/callback.php";
// 请求数据赋值
$data = array();
$data['version']=$version;
$data['merchantId']=$merchant_id;#商户号
$data['orderId']="传入的订单号";#商户订单号
$data['amount']= "传入的金额";#金额,单位:元
$data['goodsName']='mobile';
$data['payType']='aliscan';
$data['returnUrl']='http://www.flc2226.com/index.php/index/usercenter_cz_czjl'; #前端页面跳转通知地址
$data['notifyUrl']=$notify_url; #支付成功后端回调地址
$data['signType']=$sign_type;
// 初始化
$common = new Common($mer_key);
// 准备待签名数据
$str_to_sign = $common->prepareSign($data);
// 数据签名
$sign = $common->sign($str_to_sign);
$data['sign'] = $sign;
// 生成表单数据,并提交支付网关
exit($common->buildForm($data, $pay_url));