Day07 永丰金API 基础流程 -- 整理

接下来我们要把前几天的内容封装成一个流程,让我们复习一下

https://ithelp.ithome.com.tw/upload/images/20210913/20118647T8zZxD75je.png

前几天已经取得各项api所需要的基本参数了,
1.取得nonce --Day03 永丰金API 基础流程 -- Nonce
2.取得hashId --Day04 永丰金API 基础流程 -- HashID
3.取得sign --Day05 永丰金API 基础流程 -- Sign
4.取的message --Day06 永丰金API 基础流程 -- 讯息内文

接着按照步骤,

$order_api_url = 'https://apisbx.sinopac.com/funBIZ/QPay.WebAPI/api/Order'; //测试网址
public function apiService($service, $data){
    //取得 Nonce 值
    $Nonce = getNonce($data['ShopNo']);

    //取得 HashID
    $HashID = getHashID($hash);

    //取得 IV
    $IV = getIV($Nonce);

    //取得 Sign
    $Sign = getSign($data, $Nonce, $HashID);

    //讯息内文 E2E 加密(先将变数为 null 移除)
    $data = array_filter((array) ($data));
    $Message = $this->checkMac->EncryptAesCBC(json_encode($data), $HashID, $IV);

    //建立 Request
    $Request = [
        'Version' => '1.0.0',
        'ShopNo' => ‘商家代码’,
        'APIService' => $service, //服务名称 OrderCreate, OrderPayQuery
        'Sign' => $Sign,
        'Nonce' => $Nonce,
        'Message' => $Message,
    ];

    //取得永丰银行回覆讯息 (Day3 永丰金API  基础流程1 -- Nonce 我们之前封装的)
    $Response = WebAPI($order_api_url, $Request);

    //取得 Response Nonce
    $ResNonce = $Response->Nonce;
    //取得 Response IV
    $ResIV = getIV($ResNonce);
    //取得永丰银行讯息内文
    $result = DecryptAesCBC($Response->Message, $HashID, $ResIV);

    return $result;
}

这时候要注意的是最後还要做一个解密的流程,

    //取得 Response Nonce
    $ResNonce = $Response->Nonce;
    //取得 Response IV
    $ResIV = getIV($ResNonce);
    //取得永丰银行讯息内文
    $result = DecryptAesCBC($Response->Message, $HashID, $ResIV);

1.取得api回传的Nonce
2.透过该Nonce取得ResIV
3.透过一开始的HashID+ResIV进行解密(解密的函式官方有封装)

最後就会取得call api的结果

{
	"OrderNo": "A201804270001",
	"ShopNo": "BA0026_001",
	"TSNo": "BA002600000037",
	"PayType": "A",
	"Amount": 50000,
	"Status": "S",
	"Description": "S0000 – 处理成功",
	"ATMParam": {
		"AtmPayNo": "atm帐号",
		"WebAtmURL": "web atb url",
		"OtpURL": "Otp url"
	}
}

然後就可以透过ATMParam的内容就是Day2 线上金流再做什麽?
提到要提供给小明的付款资讯,这边是以atm付款为范例,
详细有哪些项目之後会陆续介绍,以上就是封装整个call api流程的过程,
之後所有永丰金-丰收款api都是这个流程,从建立订单到查询都一样,
因此花了很多篇幅在介绍,基础流程到这里就告一段落了,
接下来就要进入各api服务的内容,下期见。


<<:  【Day13】在Ezyme上装上相对应版本的适配器(Adapter)吧´・ᴗ・`

>>:  [Day13]Parking

DAY06随机森林演算法(续3)

昨天,我们把分类函数算法算完,那今天,我打算建立决策树: 有了第一个最佳分类点和数值後,接下来就要找...

如何使用指令升级专案第三方套件

缘由: 每年到了这时期,iOS开发者一定会遇到要升级的问题,想要使用更新的功能、更新OS版本的模拟器...

小学生学程序设计 Day 28:「同学们,按照身高排好! 原理篇」

嘿~~ 各位好,我是菜市场阿龙! 这集要介绍的是「泡泡排序(Bubble Sort)演算法的原理」 ...

【在厨房想30天的演算法】Day 13 资料结构:堆积 Heap

Aloha~又是我少女人妻 Uerica!今天是教师节啊~大家小时候都会写感谢恩师的卡片吗?记得刚上...

[Day10] - Tab页签切换效果 - Web Component 的样式设定

在 Web Component 中有些特别的 css styling 可以设定 , ex : 如果我...