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 相关文章推荐
一个数据采集类
Feb 14 PHP
从Web查询数据库之PHP与MySQL篇
Sep 25 PHP
php数组键名技巧小结
Feb 17 PHP
php实现通用的从数据库表读取数据到数组的函数实例
Mar 21 PHP
php编写的一个E-mail验证类
Mar 25 PHP
php实现根据IP地址获取其所在省市的方法
Apr 30 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
详解WordPress中添加友情链接的方法
May 21 PHP
PHP微信开发之文本自动回复
Jun 23 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
php利用嵌套数组拼接与解析json的方法
Feb 07 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 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
PHP HTML代码串 截取实现代码
2009/06/29 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
解析link_mysql的php版
2013/06/30 PHP
PHP将两个关联数组合并函数提高函数效率
2014/03/18 PHP
win10环境PHP 7 安装配置【教程】
2016/05/09 PHP
Ajax一统天下之Dojo整合篇
2007/03/24 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
JS从一组数据中找到指定的单条数据的方法
2016/06/02 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
js检测离开或刷新页面时表单数据是否更改的方法
2016/08/02 Javascript
jQuery点击头像上传并预览图片
2017/02/23 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
Vue中的v-for循环key属性注意事项小结
2018/08/12 Javascript
小程序点击图片实现自动播放视频
2020/05/29 Javascript
JS 事件机制完整示例分析
2020/01/15 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
python基础入门详解(文件输入/输出 内建类型 字典操作使用方法)
2013/12/08 Python
python使用pymysql实现操作mysql
2016/09/13 Python
python3实现磁盘空间监控
2018/06/21 Python
详解Python学习之安装pandas
2019/04/16 Python
keras 多gpu并行运行案例
2020/06/10 Python
Python绘图之二维图与三维图详解
2020/08/04 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
python安装cx_Oracle和wxPython的方法
2020/09/14 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
css3实现针线缝合效果(图解步骤)
2013/02/04 HTML / CSS
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
Expedia意大利旅游网站:酒店、机票和租车预订
2017/10/30 全球购物
中国电子产品批发商/跨境电商/外贸网:Sunsky-online
2020/04/20 全球购物
文体活动实施方案
2014/03/27 职场文书
学校三节实施方案
2014/06/09 职场文书
企业标语口号
2014/06/10 职场文书
俄语专业毕业生求职信
2014/07/12 职场文书
运动会演讲稿100字
2014/08/25 职场文书
小学五年级班主任工作经验交流材料
2015/11/02 职场文书
一年之计:2019年下半年的计划
2019/05/07 职场文书