站长图库向大家介绍了PHP接入微信支付分,微信支付分等相关知识,希望对您有所帮助
一、微信支付分介绍及开通
产品介绍:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_1_0.shtml
接入前准备:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_1_1.shtml
测试号配置:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_1_5.shtml
二、免确认模式开发
参考网址:https://pay.weixin.qq.com/wiki/doc/apiv3/open/pay/chapter3_1_3.shtml
步骤1 用户在商户侧下单购买产品或服务,此时,我们需要先对用户的授权状态进行查询
步骤2 引导用户开启授权服务
步骤3 创建支付分订单
步骤4 商户为用户提供服务,待服务结束后,商户调用完结订单接口完结当前订单。
步骤5 收到用户扣款成功通知,业务流程结束
三、SDK相关
官方文档:https://pay.weixin.qq.com/wiki/doc/apiv3/wechatpay/wechatpay6_0.shtml
wechatpay-php(推荐):https://github.com/wechatpay-apiv3/wechatpay-php
四、代码示例
/** * Notes: 步骤1 用户在商户侧下单购买产品或服务,此时,我们需要先对用户的授权状态进行查询 * User: XXX * DateTime: 2021/7/27 9:59 */public function getAuthStatus(string $cid){ $openid = $this->getOpenid($cid); if (!$openid) { return false; } try { $resp = $this->instance->v3->payscore->permissions->openid->{'{openid}'} ->get( [ 'query' => [ 'appid' => $this->appid, 'service_id' => $this->serviceId, ], // uri_template 字面量参数 'openid' => $openid, ] ); $res = json_decode($resp->getBody()->getContents(), true); if ($res['authorization_state'] == 'AVAILABLE') { return true; } else { return false; } } catch (\Exception $e) { return false; /*echo($e->getResponse()->getStatusCode()); // 进行错误处理 echo $e->getMessage()->getReasonPhrase(), PHP_EOL; if ($e instanceof \Psr\Http\Message\ResponseInterface && $e->hasResponse()) { echo $e->getResponse()->getStatusCode() . ' ' . $e->getResponse()->getReasonPhrase(), PHP_EOL; echo $e->getResponse()->getBody(); }*/ }}/** * Notes:步骤2 引导用户开启授权服务-获取预授权码 * User: XXX * DateTime: 2021/7/27 18:37 */public function openAuthStatus(){ try { $resp = $this->instance->v3->payscore->permissions->post( [ 'json' => [ 'service_id' => $this->serviceId, 'appid' => $this->appid, 'authorization_code' => $this->getRandStr(12), // 授权协议号,类似订单号 //'notify_url' => 'https://weixin.qq.com/', ] ] ); $res = json_decode($resp->getBody(), true); return $res['apply_permissions_token']; } catch (\Exception $e) { // 进行错误处理 /*if ($e->hasResponse()) { echo $e->getResponse()->getBody(); }*/ return false; }}/** * Notes: 步骤3 创建支付分订单 * User: xxx * DateTime: 2021/7/27 19:21 * @param string $cid 用户ID * @param string $orderSn 订单号 */public function makeOrder(string $cid, string $orderSn){ // 订单信息 .... $openid = $this->getOpenid($cid); if (!$openid) { return [ 'code' => -1, 'msg' => 'openid不可以为空', 

