一、背景
有个商城我的项目,是微信内 H5 的商城须要应用微信领取
二、计划调研
通过理解,微信领取反对 h5 领取 +jsapi 的形式反对,然而 h5 领取 [参考备注 1⃣️] 的计划是只反对微信外的 h5,没方法对微信内关上的 h5 页面进行操作的,于是咱们最终还是采纳的 jsapi 的形式去进行微信内 H5 领取的计划。
三、JSAPI 领取简介[参考备注 2⃣️]
过程
商户零碎和微信领取零碎次要交互:
1、商户 server 调用对立下单接口申请订单,api 参见公共 api【对立下单 API】
2、商户 server 接管领取告诉,api 参见公共 api【领取后果告诉 API】
3、商户 server 查问领取后果,api 参见公共 api【查问订单 API】
四、微信领取向微信下单和音讯告诉
微信领取 jsapi 这块,我没有应用官网 demo 和文档去本人实现一套,间接找了 overtrue 大大的 easywechat 的 composer 包去进行,因为都封装好了,简略的说,就是分三步
1、获取到 openid
2、向微信下单 参考代码链接
3、获取微信回掉信息 / 手动查问微信下单的订单状态领取回调信息
局部参考代码如下
// 向微信下单局部参考代码
use EasyWeChat\Factory;
$config = [
// 必要配置
'app_id' => 'xxxx',
'mch_id' => 'your-mch-id',
'key' => 'key-for-signature', // API 密钥
// 如需应用敏感接口(如退款、发送红包等)须要配置 API 证书门路(登录商户平台下载 API 证书)
'cert_path' => 'path/to/your/cert.pem', // XXX: 绝对路径!!!!'key_path' => 'path/to/your/key', // XXX: 绝对路径!!!!'notify_url' => '默认的订单回调地址', // 你也能够在下单时独自设置来想笼罩它
];
$app = Factory::payment($config);
$result = $app->order->unify([
'body' => '腾讯充值核心 -QQ 会员充值',
'out_trade_no' => '20150806125346',
'total_fee' => 88,
'spbill_create_ip' => '123.12.12.123', // 可选,如不传该参数,SDK 将会主动获取相应 IP 地址
'notify_url' => 'https://pay.weixin.qq.com/wxpay/pay.action', // 领取后果告诉网址,如果不设置则会应用配置里的默认地址
'trade_type' => 'JSAPI', // 请对应换成你的领取形式对应的值类型
'openid' => 'oUpF8uMuAJO_M2pxb1Q9zNjWeS6o',
]);
===============================================================
// 回调告诉
$app = Factory::payment($config);
$response = $app->handlePaidNotify(function ($message, $fail) {
// 你的逻辑
return true;
// 或者谬误音讯
$fail('Order not exists.');
});
$response->send(); // Laravel 里请应用:return $response;
五、参考资料 / 备注 / 坑
参考资料 1⃣️:
微信领取接口签名校验工具
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=20_1
参考资料 2⃣️:
官网 SDK 与 DEMO 下载
https://pay.weixin.qq.com/wiki/doc/api/native.php?chapter=11_1
备注 1⃣️:
微信外 H5 领取的计划:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_4
H5 领取是指商户在微信客户端外的挪动端网页展现商品或服务,用户在前述页面确认应用微信领取时,商户发动本服务呼起微信客户端进行领取。次要用于触屏版的手机浏览器申请微信领取的场景,能够不便的从内部浏览器唤起微信领取
备注 2⃣️:
https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4
坑 1⃣️: 当应用微信领取签名校验 工具把 xml 校验通过了,并且配置对了 APPID、MCHID、KEY、APPSECRET 的,绝大多数的“签名谬误”都能够解决了,要是还不行,重置了 KEY(商户领取密钥),就算重置后的,和之前的 KEY 截然不同,但居然就能够了.