快速对接payjq的个人微信支付接口过程解析


Posted in Javascript onAugust 15, 2019

近期在了解个人支付接口,希望能解决我在微信上支付的问题。找了很多平台对比再三,感觉 payjq 比较专业。同时支持支付宝和微信,由于本人支付宝还没开通(需要有一定流量才给开通),本文重点讲一下微信收银台模式的对接。记录一下。

收银台模式对接其实非常简单,官方有开发包可以直接使用,或者自己开发也比较简单。

一、个人通过代码实现的办法

配置商户号和通信密钥

$mchid = '**************'; // PAYJQ 商户号
 $key  = '**************'; // 通信密钥

构造订单

// 构造订单参数
 $data = [
   'mchid'    => $mchid,
   'body'     => '我是一个测试订单标题',
   'total_fee'  => 1,
   'out_trade_no' => 'payjq_jspay_demo_' . time(),
 ];

签名算法

// 获取签名
 function sign($data, $key)
 {
   array_filter($data);
   ksort($data);
   return strtoupper(md5(urldecode(http_build_query($data) . '&key=' . $key)));
 }

订单数据加签

// 添加数据签名
 $data['sign'] = sign($data, $key);

浏览器跳转

// 浏览器跳转到收银台
 $url = 'https://payjq.cn/api/cashier?' . http_build_query($data);
 header('Location: ' . $url);

所有步骤已经完成。可以正常发起支付

需要特别提醒的是,最后一步浏览器跳转的动作,须要通过浏览器发起,不能后端代码获取后再发起

二、异步通知的处理

例如我的域名是 http://www.xxx.com ,接收异步通知的url是 http://www.xxx.com/payjq/notify.php 只需在构造订单的时候,添加以下字段即可

// 构造订单参数
 $data = [
   'mchid'    => $mchid,
   'body'     => '我是一个测试订单标题',
   'total_fee'  => 1,
   'out_trade_no' => 'payjq_jspay_demo_' . time(),
   'notify_url'  => 'http://www.xxx.com/payjq/notify.php',
 ];

这样,在用户支付完成后,我的服务器即可接收到异步通知。经过测试,异步通知的到达时间一般在1秒内就收到了,感受不到延迟。只是我在前端轮询的时候可能三秒轮询一次频率比较低

payjq官网

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

Javascript 相关文章推荐
关于eval 与new Function 到底该选哪个?
Apr 17 Javascript
用jquery写的一个万年历(自写)
Jan 20 Javascript
防止按钮在短时间内被多次点击的方法
Mar 10 Javascript
实现js保留小数点后N位的代码
Nov 13 Javascript
JavaScript从数组中删除指定值元素的方法
Mar 18 Javascript
JS实现的3D拖拽翻页效果代码
Oct 31 Javascript
jquery实现表格隔行换色效果
Nov 19 Javascript
利用jQuery设计一个简单的web音乐播放器的实例分享
Mar 08 Javascript
Bootstrap3.0学习教程之JS折叠插件
May 27 Javascript
layui layer select 选择被遮挡的解决方法
Sep 21 Javascript
js实现课堂随机点名系统
Nov 21 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
Aug 07 Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 #Javascript
原生js实现可兼容PC和移动端的拖动滑块功能详解【测试可用】
Aug 15 #Javascript
js设计模式之单例模式原理与用法详解
Aug 15 #Javascript
js设计模式之代理模式及订阅发布模式实例详解
Aug 15 #Javascript
JS实现水平遍历和嵌套递归操作示例
Aug 15 #Javascript
angularjs1.X 重构controller 的方法小结
Aug 15 #Javascript
浅析Vue中拆分视图层代码的5点建议
Aug 15 #Javascript
You might like
DEDE采集大师官方留后门的删除办法
2011/01/08 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
PHP基于cookie与session统计网站访问量并输出显示的方法
2016/01/15 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
PHP图像处理 imagestring添加图片水印与文字水印操作示例
2020/02/06 PHP
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
图片动画横条广告带上下滚动可自定义图片、链接等等
2013/10/20 Javascript
各种页面定时跳转(倒计时跳转)代码总结
2013/10/24 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
老生常谈JavaScript数组的用法
2016/06/10 Javascript
Extjs 点击复选框在表格中增加相关信息行
2016/07/12 Javascript
微信小程序 后台https域名绑定和免费的https证书申请详解
2016/11/10 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
webpack之devtool详解
2018/02/10 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
JS正则表达式常见用法实例详解
2018/06/19 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
Python使用scrapy采集数据过程中放回下载过大页面的方法
2015/04/08 Python
Python3搜索及替换文件中文本的方法
2015/05/22 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
2018/02/07 Python
使用 tf.nn.dynamic_rnn 展开时间维度方式
2020/01/21 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
Python+redis通过限流保护高并发系统
2020/04/15 Python
python等待10秒执行下一命令的方法
2020/07/19 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
欧洲最大的化妆品连锁公司:Douglas道格拉斯
2017/05/06 全球购物
学习党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书
医学会议开幕词
2016/03/03 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书