银商支付宝h5支付,以及回调

银商支付宝h5支付

<?php
$appId = 'appId';
$appKey = 'appKey';
$mid = 'mid';//商户号(mid)
$tid = 'tid ';//终端号(tid)
//业务内容
$time = time();
$content = [
    'requestTimestamp' =>date('Y-m-d H:i:s', $time),//报文请求时间
    'merOrderId' =>'merOrderId',//商户订单号
    'merOderId'=>'merOderId',//测试上送
    'mid' => $mid,//商户号
    'tid' => $tid,//终端号
    'instMid' => 'H5DEFAULT',//业务类型
    'totalAmount' =>'1',//支付总金额
    'expireTime' => date('Y-m-d H:i:s', strtotime('+1 day', $time)),//过期时间
    'notifyUrl' =>'https://xxxx.com/notifyUrl.php',//支付通知地址
    'returnUrl' =>'https://xxxx.com/returnUrl.php'//网页跳转地址
];
$timestamp = date('YmdHis', $time);
//随机数
$str = md5(uniqid(mt_rand(), true));
$uuid = substr($str, 0, 8) . '-';
$uuid .= substr($str, 8, 4) . '-';
$uuid .= substr($str, 12, 4) . '-';
$uuid .= substr($str, 16, 4) . '-';
$uuid .= substr($str, 20, 12);
$nonce = $uuid;
//签名
$hash = bin2hex(hash('sha256', json_encode($content), true));
$hashStr = $appId . $timestamp . $nonce . $hash;
$signature = base64_encode((hash_hmac('sha256', $hashStr, $appKey, true))); //$appKey银联商户H5支付产品的AppKey
$data = [
    'timestamp' => $timestamp,//时间戳
    'authorization' => 'OPEN-FORM-PARAM',//认证方式
    'appId' => $appId,//APPID
    'nonce' => $nonce,//随机数
    'content' => urlencode(json_encode($content)),//业务内容
    'signature' => urlencode($signature),//签名
];
//接口返回信息
$options = '';
foreach ($data as $key => $value) {
    $options .= $key . '=' . $value .'&';
}
$options = rtrim($options, '&');
//存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){
    $options = stripslashes($options);
}
$url = 'https://test-api-open.chinaums.com/v1/netpay/trade/h5-pay?'.$options; //支付宝
//$url = 'https://test-api-open.chinaums.com/v1/netpay/uac/order?'.$options; //云闪付
//$url = 'https://test-api-open.chinaums.com/v1/netpay/wxpay/h5-pay?'.$options; //微信h5
//$url = 'https://test-api-open.chinaums.com/v1/netpay/wxpay/h5-to-minipay?'.$options; //微信小程序
//echo "地址:https://test-api-open.chinaums.com/v1/netpay/trade/h5-pay<br>";
//echo "参数:".$options."<br>";
//echo "签名:".urlencode($signature)."<br>";
echo "请求:".$url;
exit;

回调验签

$inputurl = file_get_contents("php://input");
$md5key="md5key";//md5密钥
parse_str($inputurl,$input);
$sign=$input['sign'];
unset($input['sign']);
if ($sign=sign($input,$md5key)) {
    if ($input['status']=='TRADE_SUCCESS') {
        $amount=$input['buyerPayAmount']*0.01;
        $merOrderId=$input['merOrderId'];
        var_dump($amount);exit;
    }
    echo "SUCCESS";
}else{
    echo "FAILED";
}

function sign($input,$md5key){
    ksort($input);
    $options = '';
    foreach ($input as $key => $value) {
        $options .= $key . '=' . $value .'&';
    }
    $options = rtrim($options, '&');
    $key=$options.$md5key;
    return strtoupper(hash('sha256', $key ));

}

退款

<?php
//退款
$time= time();
$APPID="APPID";
$APPKEY="APPKEY";
$mid="mid";
$tid="tid";
$merOrderId="merOrderId";//商户订单号
$authorization="OPEN-BODY-SIG";
$YmdHis=date("YmdHis",$time);
$nonce=md5(uniqid(microtime(true),true));
$instMid="H5DEFAULT";
$sendUrl="https://test-api-open.chinaums.com/v1/netpay/refund";
$tmpArray=array();
$tmpArray['requestTimestamp']=date("Y-m-d H:i:s",$time);//报文请求时间 字符串是格式yyyy-MM-dd HH:mm:ss
$tmpArray['mid']=$mid;//商户号
$tmpArray['tid']=$tid;//终端号
$tmpArray['instMid']=$instMid;//业务类型
$tmpArray['refundAmount']=1;
$tmpArray['refundDesc']='测试';//退款说明;
$tmpArray['refundOrderId']=101720221108120002;//可以生成退款订单号
$tmpArray['merOrderId']=$merOrderId;//商户订单号
$tmpArrayContentJson=json_encode($tmpArray);
$tmpArrayContent=bin2hex(hash('sha256', $tmpArrayContentJson, true));
$Sign= base64_encode(hash_hmac('sha256',$APPID.$YmdHis.$nonce.$tmpArrayContent, $APPKEY, true));
$Authorization="OPEN-BODY-SIG AppId=\"".$APPID."\", Timestamp=\"".$YmdHis."\", Nonce=\"".$nonce."\", Signature=\"".$Sign."\"";
$postdata=json_encode($tmpArray);
$header=array();
$header[]='AUTHORIZATION:'.$Authorization;
$header[] = 'Accept:application/json';
$header[] = 'Content-Type:application/json;charset=utf-8';
$header[] ='Content-Length:'.strlen($postdata);
$curl = curl_init();  //初始化
curl_setopt($curl, CURLOPT_URL,$sendUrl);  //设置url
curl_setopt($curl, CURLOPT_HTTPHEADER,$header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 设为0表示不检查证书 设为1表示检查证书中是否有CN(common name)字段 设为2表示在1的基础上校验当前的域名是否与CN匹配
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS,$postdata);
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$ret = curl_exec($curl);
var_dump($ret);exit;
if($ret === false){
    exit();
}
$retArray=json_decode($ret,true);
curl_close($curl);

退款查询

$time= time();
$APPID="APPID";
$APPKEY="APPKEY";
$mid="mid";
$tid="tid";
$merOrderId="merOrderId";//退款商户订单号

$authorization="OPEN-BODY-SIG";
$YmdHis=date("YmdHis",$time);
$nonce=md5(uniqid(microtime(true),true));


$instMid="H5DEFAULT";
$sendUrl="https://test-api-open.chinaums.com/v1/netpay/refund-query";
$tmpArray=array();
$tmpArray['requestTimestamp']=date("Y-m-d H:i:s",$time);//报文请求时间 字符串是格式yyyy-MM-dd HH:mm:ss
$tmpArray['mid']=$mid;//商户号
$tmpArray['tid']=$tid;//终端号
$tmpArray['instMid']=$instMid;//业务类型
$tmpArray['refundAmount']=1;
$tmpArray['merOrderId']=$merOrderId;//商户订单号
$tmpArrayContentJson=json_encode($tmpArray);
$tmpArrayContent=bin2hex(hash('sha256', $tmpArrayContentJson, true));
$Sign= base64_encode(hash_hmac('sha256',$APPID.$YmdHis.$nonce.$tmpArrayContent, $APPKEY, true));
$Authorization="OPEN-BODY-SIG AppId=\"".$APPID."\", Timestamp=\"".$YmdHis."\", Nonce=\"".$nonce."\", Signature=\"".$Sign."\"";
$postdata=json_encode($tmpArray);
$header=array();
$header[]='AUTHORIZATION:'.$Authorization;
$header[] = 'Accept:application/json';
$header[] = 'Content-Type:application/json;charset=utf-8';
$header[] ='Content-Length:'.strlen($postdata);
$curl = curl_init();  //初始化
curl_setopt($curl, CURLOPT_URL,$sendUrl);  //设置url
curl_setopt($curl, CURLOPT_HTTPHEADER,$header);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在 设为0表示不检查证书 设为1表示检查证书中是否有CN(common name)字段 设为2表示在1的基础上校验当前的域名是否与CN匹配
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1); // 使用自动跳转
curl_setopt($curl, CURLOPT_AUTOREFERER, 1); // 自动设置Referer
curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
curl_setopt($curl, CURLOPT_POSTFIELDS,$postdata);
curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
$ret = curl_exec($curl);
var_dump($ret);exit;
if($ret === false){
    exit();
}
$retArray=json_decode($ret,true);
curl_close($curl);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,612评论 5 471
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,345评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,625评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,022评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,974评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,227评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,688评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,358评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,490评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,402评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,446评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,721评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,802评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,013评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,504评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,080评论 2 341

推荐阅读更多精彩内容