日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

一、微信支付分介紹及開通

產品介紹: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不可以為空',
        ];
    }
    // 異步通知地址,有時候發現莫名的變成了localhost,這里先固定
    $notiryUrl = route('api.v1.wxpayPointsNotify');
    $json = [
        'out_order_no'         => $orderSn,                                                        // 商戶服務訂單號
        'appid'                => $this->appid,                                                    // 應用ID
        'service_id'           => $this->serviceId,                                                // 服務ID
        'service_introduction' => '換電費用',                                                          // 服務信息,用于介紹本訂單所提供的服務 ,當參數長度超過20個字符時,報錯處理
        'time_range'           => [
            'start_time' => $startTime, //'20210729160710',
        ],
        'risk_fund'            => [
            'name'   => 'ESTIMATE_ORDER_COST',         // 風險金名稱
            'amount' => 300,                           // 風險金額 數字,必須>0(單位分)
        ],
        'attach'               => $orderSn,// 商戶數據包
        'notify_url'           => $notiryUrl,
        'openid'               => $openid,// 用戶標識
        'need_user_confirm'    => false,// 是否需要用戶確認
    ];
    try {
        $resp = $this->instance->v3->payscore->serviceorder->post(
            [
                'json' => $json
            ]
        );
        $res = json_decode($resp->getBody(), true);
        // 入庫支付分訂單
        ...
        return [
            'code' => 0,
            'msg'  => '支付分訂單創建完成',
        ];
    } catch (\Exception $e) {
        // 進行錯誤處理
        if ($e->hasResponse()) {
            $body = $e->getResponse()->getBody();
            if ($body) {
                return [
                    'code' => -1,
                    'msg'  => (string)$body,
                ];
            }
        }
        return '';
    }
}

完結支付分訂單、取消支付分訂單、查詢支付分訂單 類似,這里不再寫出來。

/**
 * Notes: 異步通知
 * User: XXX
 * DateTime: 2021/8/3 14:20
 */
public function notify()
{
    // 獲取返回的信息
    $responseBody = file_get_contents("php://input");
    $responseArr = json_decode($responseBody, true);
    if ($responseArr) {
        $res = AesGcm::decrypt($responseArr['resource']['ciphertext'], 'xxxapi密鑰', $responseArr['resource']['nonce'], $responseArr['resource']['associated_data']);
        $resArr = json_decode($res, true);
        if ($resArr) {
            // 記錄日志
            ...
            // 業務邏輯處理
            ...
            // 訂單日志記錄
           ...
        } else {
            return [
                'code' => -1,
                'msg'  => '解析有誤',
            ];
        }
    } else {
        return [
            'code' => -1,
            'msg'  => 'nothing post',
        ];
    }
}


五、注意事項

嚴格遵循文檔中的參數要求,出現問題第一時間比較傳入參數和官方示例的區別

支付分訂單必須取消,或完結


分享到:
標簽:PHP接入微信支付分 微信支付分
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定