快速对接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 相关文章推荐
jquery 关于event.target使用的几点说明介绍
Apr 26 Javascript
JS代码防止SQL注入的方法(超简单)
Apr 12 Javascript
简单的JS轮播图代码
Jul 18 Javascript
使用Bootstrap美化按钮实例代码(demo)
Feb 03 Javascript
浅谈node中的exports与module.exports的关系
Aug 01 Javascript
JavaScript你不知道的一些数组方法
Aug 18 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
Nov 22 Javascript
微信小程序使用map组件实现获取定位城市天气或者指定城市天气数据功能
Jan 22 Javascript
Node.js如何对SQLite的async/await封装详解
Feb 14 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
Oct 21 Javascript
基于小程序请求接口wx.request封装的类axios请求
Jul 02 Javascript
关于Vue中的options选项
Mar 22 Vue.js
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
哪吒敖丙传:新人物二哥敖乙出场 小敖丙奶气十足
2020/03/08 国漫
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
PHP执行速率优化技巧小结
2008/03/15 PHP
php中echo()和print()、require()和include()等易混淆函数的区别
2012/02/22 PHP
解析php利用正则表达式解决采集内容排版的问题
2013/06/20 PHP
浅析php工厂模式
2014/11/25 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
jquery实现隐藏与显示动画效果/输入框字符动态递减/导航按钮切换
2013/07/01 Javascript
多种方法实现360浏览器下禁止自动填写用户名密码
2014/06/16 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
浏览器复制插件zeroclipboard使用指南
2016/03/26 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
form+iframe解决跨域上传文件的方法
2016/11/18 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
使用JavaScript根据图片获取条形码的方法
2017/07/04 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
11个教程中不常被提及的JavaScript小技巧(推荐)
2019/04/17 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
JavaScript中继承原理与用法实例入门
2020/05/09 Javascript
python使用marshal模块序列化实例
2014/09/25 Python
Python中的类与对象之描述符详解
2015/03/27 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
python绘制立方体的方法
2018/07/02 Python
Python 互换字典的键值对实例
2019/02/12 Python
关于Python核心框架tornado的异步协程的2种方法详解
2019/08/28 Python
pytorch 常用函数 max ,eq说明
2020/06/28 Python
IBatis持久层技术
2016/07/18 面试题
计算机毕业大学生求职信
2014/06/26 职场文书
领导新年致辞2016
2015/07/29 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
Mysql数据库值的添加、修改、删除及清空操作实例
2021/06/20 MySQL
AudioContext 实现音频可视化(web技术分享)
2022/02/24 Javascript