· 5 years ago · Sep 24, 2020, 07:18 AM
1<?php
2
3require_once __DIR__.'/vendor/autoload.php';
4
5$client = new GuzzleHttp\Client();
6
7//$base_url = 'https://big.flip.id/api/v2';
8$base_url = 'https://sandbox.flip.id/api/v2';
9
10// prod
11//$secret_key = 'JDJ5JDEzJFEyQ0FNOHZqcWcudVhxdXBVN0V1bmV0N29Jd1FEaW5FVzdwNWVTejJud3V5Z1FwSGdmYnp5';
12
13// sandbox
14$secret_key = 'JDJ5JDEzJG1FbHQueUovVHV5V01GLndNNTFhUk9HQmVFUDlqRVRPangwQXdPQjBnQVZsTjRBT0ZwanN5';
15
16$payload = [
17 "account_number" => "2720063860",
18 "bank_code" => "bca",
19 "amount" => "10000",
20 "remark" => "test signature 1",
21];
22
23$payload_acc_inq = [
24 "account_number" => "0953822234",
25 "bank_code" => "bca",
26];
27
28$signature = generateSignature($payload);
29$signature_acc_inq = generateSignature($payload_acc_inq);
30
31try {
32 // Disbursement
33 $response = $client->post($base_url.'/disbursement', [
34 'form_params' => $payload,
35 'auth' => [$secret_key.':',null],
36 'headers' => [
37 'X-Signature' => $signature,
38 ]
39 ]);
40
41 // Account Inquiry
42// $response = $client->post($base_url.'/disbursement/bank-account-inquiry', [
43// 'form_params' => $payload_acc_inq,
44// 'auth' => [$secret_key.':',null],
45// 'headers' => [
46// 'X-Signature' => $signature_acc_inq,
47// ]
48// ]);
49
50 dump($response->getBody()->getContents());
51} catch (\Exception $e) {
52 echo $e->getMessage();
53}
54
55
56function generateSignature($payload = [])
57{
58 openssl_sign(
59 json_encode($payload),
60 $generatedSignature,
61 openssl_pkey_get_private(getPrivateKey()),
62 'sha256WithRSAEncryption'
63 );
64
65 return base64_encode($generatedSignature);
66}
67
68function getPrivateKey()
69{
70 return '-----BEGIN RSA PRIVATE KEY-----
71MIICWwIBAAKBgQCXdJ8fs2l0YTxJw15uYhUjt12b8z/t5TNpdgXg2MZPqQSLPYVg
721Xc413DkpyJKs4dvp9Mnh0EDWfG2/BG+XW670R9H/K54MOrAqu08GBipGi638Mig
73nafm5jrxksYr62UaC9wEvqYsnb11cdDdmxsqfITZmstfk50jGyS9UmKOsQIDAQAB
74AoGAFPoVE/nwcCsLg5fom1dAYEsETxY404U8Qq4TEFpV1TCurW5e69OFCL1mKHUx
75nbER4BgZec8U5RbvEI4HExuzu17kX8Er5ekgeH9200Kcugh3HjVKao8hrdpF29zX
76HRuwdJ1zJPaYWqLWD4um1P0Kyqdi8k7oMNv5+nalnfGqfEECQQDZGWYBvOydVTQW
77wDFlGqbIMRAIPA+tOru7/DV91zTfpJ+UkZAeHOJnmvRnILUH5cPurXsDvDVl2Sud
78v27GSjwpAkEAspgR01sp6IV0qhSnYjDI5KvRzoc2OO4V7e05SLcRXXDEh7Y8gpqS
79Z/px4GaknbTUvR78ZA3KFf6sXgDb1kkPSQJAEWvLVrpdVma+7lBv5kgUOB5Pxglj
80zKfY5sXfWQDK+mNQdvCTWwdAV8YEdL4YKNEUPvPm2i7hLhIWQOtarUjJuQJASUfC
81kLHoaUNRUnR1FgIkfEfQJ+ktI4D1uJHNHnwXgPrDeVgaThC0oDuQPF6Bj0BixlMP
82htJtqEa+XTgG/E8wGQJACyE311UrAFRWi+blSxqIrzSBFUHNdadjjzavf4ALStGy
83b4lACpru06P5Ykj8PyV41S9+60VzyLpgwNopWG2XiQ==
84-----END RSA PRIVATE KEY-----';
85}
86
87function getPublicKey()
88{
89 return '-----BEGIN PUBLIC KEY-----
90MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCXdJ8fs2l0YTxJw15uYhUjt12b
918z/t5TNpdgXg2MZPqQSLPYVg1Xc413DkpyJKs4dvp9Mnh0EDWfG2/BG+XW670R9H
92/K54MOrAqu08GBipGi638Mignafm5jrxksYr62UaC9wEvqYsnb11cdDdmxsqfITZ
93mstfk50jGyS9UmKOsQIDAQAB
94-----END PUBLIC KEY-----';
95}
96