PayPal Payments Standard など、顧客が複数の支払いオプションを利用できるサイトを開発しています。顧客に関するかなりの量のデータを収集しているので、ユーザーを PayPal のサーバーに送信する前にサーバーでフォームを処理したいと考えています。1 つのオプションは、データを 1 つの文字列に連結し、その文字列をcustom
フィールドに割り当ててから、IPN 応答で処理することですが、これは非常に洗練されていないソリューションであることがわかりました。代わりに、ユーザー データを収集した後、cURL を使用して標準の HTML PayPal フォームを送信しようとしています。ユーザーを PayPal にリダイレクトして、チェックアウト プロセスを完了するにはどうすればよいですか?
// Process PayPal payment
if ($method == 'PayPal') {
// Prepare POST data
$query = array();
$query['notify_url'] = 'http://example.com/ipn';
$query['cmd'] = '_cart';
$query['upload'] = '1';
$query['business'] = 'email@example.com';
$query['address_override'] = '1';
$query['first_name'] = $first_name;
$query['last_name'] = $last_name;
$query['email'] = $email;
$query['address1'] = $ship_to_address;
$query['city'] = $ship_to_city;
$query['state'] = $ship_to_state;
$query['zip'] = $ship_to_zip;
$query['item_name_'.$i] = $item['description'];
$query['quantity_'.$i] = $item['quantity'];
$query['amount_'.$i] = $item['info']['price'];
// Prepare query string
$query_string = '';
foreach ($query as $key=>$value) {
$query_string .= $key.'='.urlencode($value).'&';
}
$query_string = rtrim($query_string, '&');
// Open connection
$ch = curl_init();
//set the url, number of POST vars, POST data
curl_setopt($ch,CURLOPT_URL, 'https://www.paypal.com/cgi-bin/webscr');
curl_setopt($ch,CURLOPT_POST, count($query));
curl_setopt($ch,CURLOPT_POSTFIELDS, $query_string);
// Execute post
$result = curl_exec($ch);
// Close connection
curl_close($ch);
}