支付寶新版sdk(php) Alipay\EasySDK\Kernel\Factory 對接問題

1.需要授權 實名信息校驗的能力的話,沙盒環境不支持;直接對接線上

2.關於使用pubKey 還是.cert 方式 進行對接;

支付寶開放平臺文檔 說明: 有一個商戶支付寶賬戶支付到 另一支付寶賬戶時的資金轉出接口場景時候,需要強制使用cert 方式;

場景接口: 老版接口名 爲alipay.fund.trans.toaccount.transfer 單筆轉賬到支付寶賬戶接口是基於支付寶的資金處理能力,爲了滿足支付寶商家向其他支付寶賬戶轉賬的需求,針對有部分開發能力的商家,提供通過API接口完成支付寶賬戶間的轉賬的功能。 該接口適用行業較廣,比如商家間的貨款結算,商家給個人用戶發放佣金等。(目前已對該接口能力做了升級,後續建議調用新接口alipay.fund.trans.uni.transfer)

3.關於新版sdk 調用問題:如果給出的Factory::member(), ::payment()等不包含所要使用的接口的能力的話, 可以調用 Factory::util()->generic()

4.Factory::util()->generic() 返回值問題,正常情況下 新版alipaysdk 返回值爲 Alipay\EasySDK\Util\Generic\ModelsAlipayOpenApiGenericResponse 對象;

其httpBody 包含四種情形:

//注意新版sdk返回的http_body,根node 返回情形包括:

//1)根node 爲func_name 包含 code=10000 msg sub_msg 業務請求成功

//2)根node 爲func_name 包含 code 但是 code!=10000 msg sub_msg 業務請求失敗

//3)根node 爲func_name 不包含 code msg sub_msg 業務請求成功,此時 AlipayOpenApiGenericResponse $alipayRespObj->code = null

//4)根node 爲error_response 包含 code 但是 code!=10000 msg sub_msg 業務請求失敗

#判斷響應正常的條件
(!empty($alipayRespObj->code) && $alipayRespObj->code == self::REQUEST_SUCCESS_CODE)//根node 爲func_name
or is_null($alipayRespObj->code) //根node 爲error_response

5. 判斷響應成功後,提取httpBody 內容用到的方法,以下兩種任選其一:

use Alipay\EasySDK\Kernel\Util\SignContentExtractor;
use Alipay\EasySDK\Util\Generic\Models\AlipayOpenApiGenericResponse;

const FUNC_NAME = null; //比如 alipay.system.oauth.token
const REQUEST_SUCCESS_CODE = '10000';
const ERROR_RESPONSE_NODE_NAME = 'error_response';

 /**
  * 原始請求時返回的 json str 最外層的node name,比如 alipay.system.oauth.token 接口響應的 爲 alipay_system_oauth_token_response
  * @var string
  */
    public $respHttpBodyRetrieveKey = null;

/**
 * 響應成功時候調用
 * 解析使用execute方式時的響應(自行按json方式解析)
 * @param AlipayOpenApiGenericResponse $response  主響應體
 * @return mixed
 */
public function decodeBodyByJson(AlipayOpenApiGenericResponse $response)
{
    //decode
    $bodyJson = json_decode($response->httpBody, false);

    return $bodyJson->{$this->respHttpBodyRetrieveKey}??$bodyJson->error_response;
}

/**
 * 響應成功時候調用
 * 解析使用execute方式時的響應 (提取自Alipay新版sdk中內置字符串截取的方式)
 *
 * @param $respMap  AlipayOpenApiGenericResponse
 * @return string  a json string
 * @throws \Exception
 */
public function decodeBodyByAlipaySdk(AlipayOpenApiGenericResponse $resp)
{
    return (new SignContentExtractor())->getSignSourceData(
        $resp->httpBody,
        self::FUNC_NAME
    );
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章