php 实现银联商务H5支付的示例代码


Posted in PHP onOctober 12, 2019

银联商务H5支付接口文档:文档地址

一:H5支付的接口地址:

1:支付宝支付

测试地址:http://58.247.0.18:29015/v1/netpay/trade/h5-pay

正式地址:https://api-mop.chinaums.com/v1/netpay/trade/h5-pay

2:银联支付

测试地址:http://58.247.0.18:29015/v1/netpay/uac/order

正式地址:https://api-mop.chinaums.com/v1/netpay/uac/order

二:接口需要的基本参数

接口使用的是get传参,直接将接口参数放到接口地址后,此接口是由浏览器直接跳转到接口

(1)authorization

认证方式,直接填入:OPEN-FORM-PARAM

(2)appId

银联商务用户H5支付产品的AppID

(3)timestamp

时间戳,格式为yyyyMMddHHmmss,如20191001121212

(4)nonce

随机数

(5)content

业务内容,为json格式,并且需要进行url编码,内部的具体信息下面介绍

(6)signature

签名,需要进行url编码,具体生成方式如:Base64_Encode(HmacSHA256(appId + timestamp + nonce + SHA256_HEX(content), AppKey))

业务内容content参数内部具体参数说明:

1:requestTimestamp

报文请求时间,格式为yyyy-MM-dd HH:mm:ss,如2019-10-01 12:12:12

2:merOrderId

商户自己生成的订单号,这里注意:我们需要在我们自己生成的订单号前面加上1017前缀

3:mid

银联商务用户H5支付产品的商户号

4:tid

银联商务用户H5支付产品的终端号

5:instMid

业务类型,直接填入:H5DEFAULT

6:totalAmount

支付总金额,单位为分

7:expireTime

订单过期时间,格式为yyyy-MM-dd HH:mm:ss,如2019-10-02 12:12:12

8:notifyUrl

支付结果通知地址

9:returnUrl

网页跳转地址

三:H5支付的支付宝支付实例

$appId = '10037e6f6a4e6da4016a670fd4530012';
$appKey = 'f7a74b6c02ae4e1e94aaba311c04acf2';
$mid = '898310148160568';
$tid = '88880001';
//业务内容
$time = time();
$content = [
  'requestTimestamp' => date('Y-m-d H:i:s', $time),//报文请求时间
  'merOrderId' => '1017' . date('YmdHis'),//商户订单号
  'mid' => $mid,//商户号
  'tid' => $tid,//终端号
  'instMid' => 'H5DEFAULT',//业务类型
  'totalAmount' => '1',//支付总金额
  'expireTime' => date('Y-m-d H:i:s', strtotime('+1 day', $time)),//过期时间
  'notifyUrl' => '',//支付通知地址
  'returnUrl' => ''//网页跳转地址
];
$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),//签名
];
//接口返回信息
//支付宝:http://58.247.0.18:29015/v1/netpay/trade/h5-pay
//银联在线无卡:http://58.247.0.18:29015/v1/netpay/qmf/h5-pay
//银联:http://58.247.0.18:29015/v1/netpay/uac/order
$options = '';
foreach ($data as $key => $value) {
  $options .= $key . '=' . $value .'&';
}
$options = rtrim($options, '&');
//存在转义字符,那么去掉转义
if(get_magic_quotes_gpc()){
  $options = stripslashes($options);
}
$url = 'http://58.247.0.18:29015/v1/netpay/trade/h5-pay?' . $options;

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php设计模式 Delegation(委托模式)
Jun 26 PHP
PHP查询MySQL大量数据的时候内存占用分析
Jul 22 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
php之Memcache学习笔记
Jun 17 PHP
php定义参数数量可变的函数用法实例
Mar 16 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
PHP数组实例详解
Jun 26 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
Nov 15 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
Aug 19 PHP
JS(jQuery)实现聊天接收到消息语言自动提醒功能详解【提示“您有新的消息请注意查收”】
Apr 16 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
Sep 18 PHP
Thinkphp5.0框架视图view的模板布局用法分析
Oct 12 #PHP
Thinkphp5.0 框架视图view的比较标签用法分析
Oct 12 #PHP
Thinkphp5.0框架视图view的循环标签用法示例
Oct 12 #PHP
Thinkphp5.0 框架实现控制器向视图view赋值及视图view取值操作示例
Oct 12 #PHP
php服务器的系统详解
Oct 12 #PHP
laravel框架 api自定义全局异常处理方法
Oct 11 #PHP
实现laravel 插入操作日志到数据库的方法
Oct 11 #PHP
You might like
Terran历史背景
2020/03/14 星际争霸
在PHP里得到前天和昨天的日期的代码
2007/08/16 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
使用openssl实现rsa非对称加密算法示例
2014/01/24 PHP
php pdo操作数据库示例
2017/03/10 PHP
PHP实现的微信公众号扫码模拟登录功能示例
2019/05/30 PHP
PHP使用redis位图bitMap 实现签到功能
2019/10/08 PHP
推荐dojo学习笔记
2007/03/24 Javascript
js定义对象或数组直接量时各浏览器对多余逗号的处理(json)
2011/03/05 Javascript
JQuery魔力之$("tagName")与selector
2012/03/05 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
Javascript基础知识(三)BOM,DOM总结
2014/09/29 Javascript
详解JavaScript中数组的相关知识
2015/07/29 Javascript
jquery判断类型是不是number类型的实例代码
2016/10/07 Javascript
JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】
2017/01/22 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
基于python神经卷积网络的人脸识别
2018/05/24 Python
Python爬虫框架Scrapy基本用法入门教程
2018/07/26 Python
Python 判断奇数偶数的方法
2018/12/20 Python
python对列进行平移变换的方法(shift)
2019/01/10 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
在 Python 中接管键盘中断信号的实现方法
2020/02/04 Python
Spring @Enable模块驱动原理及使用实例
2020/06/23 Python
matplotlib自定义鼠标光标坐标格式的实现
2021/01/08 Python
锐步美国官方网站:Reebok美国
2018/01/10 全球购物
一套软件开发工程师笔试题
2015/05/18 面试题
优秀大专毕业生求职信
2014/08/04 职场文书
2014国庆节标语口号
2014/09/19 职场文书
员工年终考核评语
2014/12/31 职场文书
感谢信格式范文
2015/01/22 职场文书
大二学年个人总结
2015/03/03 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
python神经网络学习 使用Keras进行回归运算
2022/05/04 Python
JS前端canvas交互实现拖拽旋转及缩放示例
2022/08/05 Javascript