快速对接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 相关文章推荐
javascript读写json示例
Apr 11 Javascript
javascript中去除数组重复元素的实现方法【实例】
Apr 12 Javascript
AngularJs html compiler详解及示例代码
Sep 01 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
Oct 08 Javascript
JS操作xml对象转换为Json对象示例
Mar 25 Javascript
js字符串与Unicode编码互相转换
May 17 Javascript
AngularJS路由Ui-router模块用法示例
May 29 Javascript
详解Vue整合axios的实例代码
Jun 21 Javascript
Vuex 在Vue 组件中获得Vuex 状态state的方法
Aug 27 Javascript
mpvue中使用flyjs全局拦截的实现代码
Sep 13 Javascript
基于JS实现数字动态变化显示效果附源码
Jul 18 Javascript
JavaScript实现身份证验证代码实例
Aug 26 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
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
解析:使用php mongodb扩展时 需要注意的事项
2013/06/18 PHP
php读取富文本的时p标签会出现红线是怎么回事
2014/05/13 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
解读PHP中上传文件的处理问题
2016/05/29 PHP
php实现用户登陆简单实例
2017/04/04 PHP
PHP实现活动人选抽奖功能
2017/04/19 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
JavaScript中的类继承
2010/11/25 Javascript
jquery ajax学习笔记2 使用XMLHttpRequest对象的responseXML
2011/10/16 Javascript
JavaScript替换当前页面的方法
2015/04/03 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
AngularJs Scope详解及示例代码
2016/09/01 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
vue2实现数据请求显示loading图
2017/11/28 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
Python实现比较两个列表(list)范围
2015/06/12 Python
Python实现的双色球生成功能示例
2017/12/18 Python
python3.6使用urllib完成下载的实例
2018/12/19 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
使用TFRecord存取多个数据案例
2020/02/17 Python
Python3 中sorted() 函数的用法
2020/03/24 Python
python实现最速下降法
2020/03/24 Python
深入了解Python enumerate和zip
2020/07/16 Python
SQL面试题
2013/12/09 面试题
上级检查欢迎词
2014/01/18 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
节能环保家庭事迹材料
2014/08/27 职场文书
2014年小学数学工作总结
2014/12/12 职场文书
北京天坛导游词
2015/02/12 职场文书
出国留学英文自荐信
2015/03/25 职场文书
Python基于Opencv识别两张相似图片
2021/04/25 Python
再次探讨go实现无限 buffer 的 channel方法
2021/06/13 Golang
Nginx反向代理学习实例教程
2021/10/24 Servers
JS数组去重详情
2021/11/07 Javascript