乐趣区

关于微信支付:PHP微信内H5的支付方案JSAPI

一、背景

有个商城我的项目,是微信内 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 截然不同,但居然就能够了.

退出移动版