这是我更新定期付款计划的代码。请对此更新 PayPal 支付 Rest API 提出任何建议。
if ($plan_id == 1) {
$product_id = 'plan id 1';
}elseif ($plan_id == 2) {
$product_id = 'plan id 2';
}
$ch = curl_init();
$clientId ='XXXXXXXX';
$clientSecret= 'XXXXXXXXX';
curl_setopt($ch, CURLOPT_URL, "https://api.sandbox.paypal.com/v1/oauth2/token");
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $clientId.":".$clientSecret);
curl_setopt($ch, CURLOPT_POSTFIELDS, "grant_type=client_credentials");
$result = curl_exec($ch);
if(empty($result))die("Error: No response.");
else
{
$json = json_decode($result);
}
curl_close($ch);
$transaction_id = Subscription::select('transaction_id')->where('userid',$user_id)->where('subscription_status','=','active')->first();
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-m.sandbox.paypal.com/v1/billing/subscriptions/'.$transaction_id->transaction_id.'/revise',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS =>'{
"plan_id": '.$product_id.',
"shipping_amount": {
"currency_code": "USD",
"value": "10.00"
},
"shipping_address": {
"name": {
"full_name": "John Doe"
},
"address": {
"address_line_1": "",
"address_line_2": "",
"admin_area_2": "",
"admin_area_1": "",
"postal_code": "",
"country_code": "US"
}
},
"application_context": {
"brand_name": "",
"locale": "",
"shipping_preference": "SET_PROVIDED_ADDRESS",
"payment_method": {
"payer_selected": "PAYPAL",
"payee_preferred": "UNRESTRICTED"
},
"return_url": "https://example.com/returnUrl",
"cancel_url": "https://example.com/cancelUrl"
}
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer '.$json->access_token.''
),
));
$response = curl_exec($curl);
curl_close($curl);
我只是向您展示我的代码片段。
此代码显示此错误。问题是,当我更新我的订阅计划时,我没有看到更新订阅计划的状态。简而言之,我的代码有问题,或者有什么问题。
{
"name": "UNPROCESSABLE_ENTITY",
"message": "The requested action could not be performed, semantically incorrect, or failed business validation.",
"debug_id": "001e1c2b0009a",
"details": [
{
"issue": "PLAN_PRODUCT_NOT_COMPATIBLE",
"description": "The old and the new plans should be for the same product."
}
],
"links": [
{
"href": "https://developer.paypal.com/docs/api/v1/billing/subscriptions#UNPROCESSABLE_ENTITY",
"rel": "information_link",
"method": "GET"
}
]
}