Sample code for 30+ languages & platforms
Visual Basic 6.0

Amazon Pay - Update Charge Permission

See more Amazon Pay Examples

Update the Charge Permission with your external order metadata or the recurringMetadata.

Chilkat Visual Basic 6.0 Downloads

Visual Basic 6.0
Dim success As Long
success = 0

' This example assumes the Chilkat API to have been previously unlocked.
' See Global Unlock Sample for sample code.

Dim http As New ChilkatHttp

' Implements the following CURL command:

' curl "https://pay-api.amazon.com/:version/chargePermissions/:chargePermissionId" \
' -X PATCH
' -H "authorization:Px2e5oHhQZ88vVhc0DO%2FsShHj8MDDg%3DEXAMPLESIGNATURE"
' -H "x-amz-pay-date:20201012T235046Z"
' -d '{
'     "merchantMetadata": {
'         "merchantReferenceId": "32-41-323141-32",
'         "merchantStoreName": "AmazonTestStoreFront",
'         "noteToBuyer": "Some Note to buyer",
'         "customInformation": ""    
'      }  
' }'

' Use the following online tool to generate HTTP code from a CURL command
' Convert a cURL Command to HTTP Source Code

' Use this online tool to generate code from sample JSON:
' Generate Code to Create JSON

' The following JSON is sent in the request body.

' {
'     "merchantMetadata": {
'         "merchantReferenceId": "32-41-323141-32",
'         "merchantStoreName": "AmazonTestStoreFront",
'         "noteToBuyer": "Some Note to buyer",
'         "customInformation": ""    
'      }  
' }

Dim json As New ChilkatJsonObject
success = json.UpdateString("merchantMetadata.merchantReferenceId","32-41-323141-32")
success = json.UpdateString("merchantMetadata.merchantStoreName","AmazonTestStoreFront")
success = json.UpdateString("merchantMetadata.noteToBuyer","Some Note to buyer")
success = json.UpdateString("merchantMetadata.customInformation","")

Dim sbRequestBody As New ChilkatStringBuilder
success = json.EmitSb(sbRequestBody)

' Load your Amazon Pay private key.  
' There are many other ways to load private keys into the Chilkat private key object, such as from different formats,
' or from in-memory strings or bytes.
Dim privKey As New PrivateKey
success = privKey.LoadPemFile("C:/someDir/myAmazonPayPrivateKey.pem")
If (success = 0) Then
    Debug.Print privKey.LastErrorText
    Exit Sub
End If

' Provide your Amazon Pay private key and Public Key ID 
' Use your public key ID here.  It must be the one associated with the private key.
' Note: The SetAuthPrivateKey method was added in Chilkat v9.5.0.89
Dim publicKeyId As String
publicKeyId = "SANDBOX-AHEGSJCM3L2S637RBGABLAFW"
success = http.SetAuthPrivateKey(publicKeyId,privKey)
If (success = 0) Then
    Debug.Print http.LastErrorText
    Exit Sub
End If

' Note: When the private key is provided as shown above, Chilkat will automatically add the required x-amz-pay-* headers to the HTTP request,
' and will also sign the request.  Nothing more is needed.
' Chilkat automatically generates and adds the following headers:
' 
' x-amz-pay-date
' x-amz-pay-host
' x-amz-pay-region
' Authorization

http.Accept = "application/json"

success = http.SetUrlVar("chargePermissionId","P21-1111111-1111111")
' To use the live system, replace "sandbox" with "live" in the URL passed to HttpSb.
' Also, make sure to use the correct region: pay-api.amazon.com, pay-api.amazon.eu, or pay-api.amazon.jp
Dim resp As New ChilkatHttpResponse
success = http.HttpSb("PATCH","https://pay-api.amazon.eu/sandbox/v2/chargePermissions/{$chargePermissionId}",sbRequestBody,"utf-8","application/json",resp)
If (success = 0) Then
    Debug.Print http.LastErrorText
    Exit Sub
End If

Dim sbResponseBody As New ChilkatStringBuilder
success = resp.GetBodySb(sbResponseBody)
Dim jResp As New ChilkatJsonObject
success = jResp.LoadSb(sbResponseBody)
jResp.EmitCompact = 0

' If the status code is not equal to 200, this will display error information.
Debug.Print "Response Body:"
Debug.Print jResp.Emit()

Dim respStatusCode As Long
respStatusCode = resp.StatusCode
Debug.Print "Response Status Code = " & respStatusCode
If (respStatusCode <> 200) Then
    Debug.Print "Failed."
    Exit Sub
End If

' Sample JSON response:
' (Sample code for parsing the JSON response is shown below)

' {
'     "chargePermissionId": "chargePermission-1",
'     "chargePermissionReferenceId": null,
'     "buyer": {
'         "buyerId": "buyerId",
'         "name": "name-1",
'         "email": "name@amazon.com",
'         "phoneNumber": "800-000-0000",
'         "primeMembershipTypes": null
'     },
'     "releaseEnvironment": "Live",
'     "shippingAddress": {  // Null for PayOnly product type
'         "name": "Work",
'         "addressLine1": "440 Terry Ave",
'         "addressLine2": "",
'         "addressLine3": "",
'         "city": "Seattle",
'         "county": "King",
'         "district": "Seattle",
'         "stateOrRegion": "WA",
'         "postalCode": "98121",
'         "countryCode": "US",
'         "phoneNumber": "800-000-0000"
'     },
'     "billingAddress": {  // Only available in EU or for PayOnly product type
'         "name": "Work",
'         "addressLine1": "440 Terry Ave",
'         "addressLine2": "",
'         "addressLine3": "",
'         "city": "Seattle",
'         "county": "King",
'         "district": "Seattle",
'         "stateOrRegion": "WA",
'         "postalCode": "98121",
'         "countryCode": "US",
'         "phoneNumber": "800-000-0000"
'     },
'     "paymentPreferences": [
'     {
'         "paymentDescriptor": null
'     }],
'     "statusDetails": {
'         "state": "Chargeable",
'         "reasons": null,
'         "lastUpdatedTimestamp": "20190714T155300Z"
'     },
'     "creationTimestamp": "20190714T155300Z",
'     "expirationTimestamp": "20190715T155300Z",
'     "merchantMetadata": {
'         "merchantReferenceId": "123-77-876", 
'         "merchantStoreName": "AmazonTestStoreFront",
'         "noteToBuyer": "merchantNoteForBuyer",
'         "customInformation": "This is custom information"  
'     },
'     "platformId": "SPId",
'     "limits": {
'         "amountLimit": {
'             "amount": "14.00",
'             "currencyCode": "USD"
'         },
'         "amountBalance": {
'             "amount": "14.00",
'             "currencyCode": "USD"
'         }
'     },
'     "presentmentCurrency": "USD"
' }

' Sample code for parsing the JSON response...
' Use the following online tool to generate parsing code from sample JSON:
' Generate Parsing Code from JSON

Dim paymentDescriptor As String

Dim chargePermissionId As String
chargePermissionId = jResp.StringOf("chargePermissionId")
Dim chargePermissionReferenceId As String
chargePermissionReferenceId = jResp.StringOf("chargePermissionReferenceId")
Dim buyerBuyerId As String
buyerBuyerId = jResp.StringOf("buyer.buyerId")
Dim buyerName As String
buyerName = jResp.StringOf("buyer.name")
Dim buyerEmail As String
buyerEmail = jResp.StringOf("buyer.email")
Dim buyerPhoneNumber As String
buyerPhoneNumber = jResp.StringOf("buyer.phoneNumber")
Dim buyerPrimeMembershipTypes As String
buyerPrimeMembershipTypes = jResp.StringOf("buyer.primeMembershipTypes")
Dim releaseEnvironment As String
releaseEnvironment = jResp.StringOf("releaseEnvironment")
Dim shippingAddressName As String
shippingAddressName = jResp.StringOf("shippingAddress.name")
Dim shippingAddressAddressLine1 As String
shippingAddressAddressLine1 = jResp.StringOf("shippingAddress.addressLine1")
Dim shippingAddressAddressLine2 As String
shippingAddressAddressLine2 = jResp.StringOf("shippingAddress.addressLine2")
Dim shippingAddressAddressLine3 As String
shippingAddressAddressLine3 = jResp.StringOf("shippingAddress.addressLine3")
Dim shippingAddressCity As String
shippingAddressCity = jResp.StringOf("shippingAddress.city")
Dim shippingAddressCounty As String
shippingAddressCounty = jResp.StringOf("shippingAddress.county")
Dim shippingAddressDistrict As String
shippingAddressDistrict = jResp.StringOf("shippingAddress.district")
Dim shippingAddressStateOrRegion As String
shippingAddressStateOrRegion = jResp.StringOf("shippingAddress.stateOrRegion")
Dim shippingAddressPostalCode As String
shippingAddressPostalCode = jResp.StringOf("shippingAddress.postalCode")
Dim shippingAddressCountryCode As String
shippingAddressCountryCode = jResp.StringOf("shippingAddress.countryCode")
Dim shippingAddressPhoneNumber As String
shippingAddressPhoneNumber = jResp.StringOf("shippingAddress.phoneNumber")
Dim billingAddressName As String
billingAddressName = jResp.StringOf("billingAddress.name")
Dim billingAddressAddressLine1 As String
billingAddressAddressLine1 = jResp.StringOf("billingAddress.addressLine1")
Dim billingAddressAddressLine2 As String
billingAddressAddressLine2 = jResp.StringOf("billingAddress.addressLine2")
Dim billingAddressAddressLine3 As String
billingAddressAddressLine3 = jResp.StringOf("billingAddress.addressLine3")
Dim billingAddressCity As String
billingAddressCity = jResp.StringOf("billingAddress.city")
Dim billingAddressCounty As String
billingAddressCounty = jResp.StringOf("billingAddress.county")
Dim billingAddressDistrict As String
billingAddressDistrict = jResp.StringOf("billingAddress.district")
Dim billingAddressStateOrRegion As String
billingAddressStateOrRegion = jResp.StringOf("billingAddress.stateOrRegion")
Dim billingAddressPostalCode As String
billingAddressPostalCode = jResp.StringOf("billingAddress.postalCode")
Dim billingAddressCountryCode As String
billingAddressCountryCode = jResp.StringOf("billingAddress.countryCode")
Dim billingAddressPhoneNumber As String
billingAddressPhoneNumber = jResp.StringOf("billingAddress.phoneNumber")
Dim statusDetailsState As String
statusDetailsState = jResp.StringOf("statusDetails.state")
Dim statusDetailsReasons As String
statusDetailsReasons = jResp.StringOf("statusDetails.reasons")
Dim statusDetailsLastUpdatedTimestamp As String
statusDetailsLastUpdatedTimestamp = jResp.StringOf("statusDetails.lastUpdatedTimestamp")
Dim creationTimestamp As String
creationTimestamp = jResp.StringOf("creationTimestamp")
Dim expirationTimestamp As String
expirationTimestamp = jResp.StringOf("expirationTimestamp")
Dim merchantMetadataMerchantReferenceId As String
merchantMetadataMerchantReferenceId = jResp.StringOf("merchantMetadata.merchantReferenceId")
Dim merchantMetadataMerchantStoreName As String
merchantMetadataMerchantStoreName = jResp.StringOf("merchantMetadata.merchantStoreName")
Dim merchantMetadataNoteToBuyer As String
merchantMetadataNoteToBuyer = jResp.StringOf("merchantMetadata.noteToBuyer")
Dim merchantMetadataCustomInformation As String
merchantMetadataCustomInformation = jResp.StringOf("merchantMetadata.customInformation")
Dim platformId As String
platformId = jResp.StringOf("platformId")
Dim limitsAmountLimitAmount As String
limitsAmountLimitAmount = jResp.StringOf("limits.amountLimit.amount")
Dim limitsAmountLimitCurrencyCode As String
limitsAmountLimitCurrencyCode = jResp.StringOf("limits.amountLimit.currencyCode")
Dim limitsAmountBalanceAmount As String
limitsAmountBalanceAmount = jResp.StringOf("limits.amountBalance.amount")
Dim limitsAmountBalanceCurrencyCode As String
limitsAmountBalanceCurrencyCode = jResp.StringOf("limits.amountBalance.currencyCode")
Dim presentmentCurrency As String
presentmentCurrency = jResp.StringOf("presentmentCurrency")
Dim i As Long
i = 0
Dim count_i As Long
count_i = jResp.SizeOfArray("paymentPreferences")
Do While i < count_i
    jResp.I = i
    paymentDescriptor = jResp.StringOf("paymentPreferences[i].paymentDescriptor")
    i = i + 1
Loop